/// <summary>
        /// Search method that matches the title of windows with the user search text
        /// </summary>
        /// <param name="openWindows"></param>
        /// <returns></returns>
        private List <WindowSearchResult> FuzzySearchOpenWindows(List <Window> openWindows)
        {
            List <WindowSearchResult> result        = new List <WindowSearchResult>();
            List <SearchString>       searchStrings = new List <SearchString>();

            List <string> shortcuts = SettingsManager.Instance.GetShortcut(this.SearchText);

            foreach (var shortcut in shortcuts)
            {
                searchStrings.Add(new SearchString(shortcut, WindowSearchResult.SearchType.Shortcut));
            }

            searchStrings.Add(new SearchString(this.searchText, WindowSearchResult.SearchType.Fuzzy));

            foreach (var searchString in searchStrings)
            {
                foreach (var window in openWindows)
                {
                    var titleMatch   = FuzzyMatching.FindBestFuzzyMatch(window.Title, searchString.SearchText);
                    var processMatch = FuzzyMatching.FindBestFuzzyMatch(window.ProcessName, searchString.SearchText);

                    if ((titleMatch.Count != 0 || processMatch.Count != 0) &&
                        window.Title.Length != 0)
                    {
                        var temp = new WindowSearchResult(window, titleMatch, processMatch, searchString.SearchType);
                        result.Add(temp);
                    }
                }
            }

            System.Diagnostics.Debug.Print("Found " + result.Count + " windows that match the search text");

            return(result);
        }
示例#2
0
 /// <summary>
 /// Constructor 
 /// </summary>
 /// <param name="searchText"></param>
 /// <param name="searchType"></param>
 public SearchString(string searchText, WindowSearchResult.SearchType searchType)
 {
     this.SearchText = searchText;
     this.SearchType = searchType;
 }
示例#3
0
        /// <summary>
        /// Search method that matches the title of windows with the user search text
        /// </summary>
        /// <param name="openWindows"></param>
        /// <returns></returns>
        private List<WindowSearchResult> FuzzySearchOpenWindows(List<Window> openWindows)
        {
            List<WindowSearchResult> result = new List<WindowSearchResult>();
            List<SearchString> searchStrings = new List<SearchString>();

            List<string> shortcuts = SettingsManager.Instance.GetShortcut(this.SearchText);

            foreach(var shortcut in shortcuts)
            {
                searchStrings.Add(new SearchString(shortcut, WindowSearchResult.SearchType.Shortcut));
            }

            searchStrings.Add(new SearchString(this.searchText, WindowSearchResult.SearchType.Fuzzy));

            foreach (var searchString in searchStrings)
            {
                foreach (var window in openWindows)
                {
                    var titleMatch = FuzzyMatching.FindBestFuzzyMatch(window.Title, searchString.SearchText);
                    var processMatch = FuzzyMatching.FindBestFuzzyMatch(window.ProcessName, searchString.SearchText);

                    if ((titleMatch.Count != 0 || processMatch.Count != 0) &&
                                window.Title.Length != 0)
                    {
                        var temp = new WindowSearchResult(window, titleMatch, processMatch, searchString.SearchType);
                        result.Add(temp);
                    }
                }
            }

            System.Diagnostics.Debug.Print("Found " + result.Count + " windows that match the search text");

            return result;
        }