コード例 #1
0
        internal List <Result> Search(Query query)
        {
            var results = new List <Result>();

            var querySearch = query.Search;

            var quickFolderLinks = quickFolderAccess.FolderList(query, settings.QuickFolderAccessLinks, context);

            if (quickFolderLinks.Count > 0)
            {
                return(quickFolderLinks);
            }

            if (string.IsNullOrEmpty(querySearch))
            {
                return(results);
            }

            var isEnvironmentVariable = EnvironmentVariables.IsEnvironmentVariableSearch(querySearch);

            if (isEnvironmentVariable)
            {
                return(EnvironmentVariables.GetEnvironmentStringPathSuggestions(querySearch, query, context));
            }

            // Query is a location path with a full environment variable, eg. %appdata%\somefolder\
            var isEnvironmentVariablePath = querySearch.Substring(1).Contains("%\\");

            if (!FilesFolders.IsLocationPathString(querySearch) && !isEnvironmentVariablePath)
            {
                return(WindowsIndexFilesAndFoldersSearch(query, querySearch));
            }

            var locationPath = querySearch;

            if (isEnvironmentVariablePath)
            {
                locationPath = EnvironmentVariables.TranslateEnvironmentVariablePath(locationPath);
            }

            if (!FilesFolders.LocationExists(FilesFolders.ReturnPreviousDirectoryIfIncompleteString(locationPath)))
            {
                return(results);
            }

            var useIndexSearch = UseWindowsIndexForDirectorySearch(locationPath);

            results.Add(resultManager.CreateOpenCurrentFolderResult(locationPath, useIndexSearch));

            results.AddRange(TopLevelDirectorySearchBehaviour(WindowsIndexTopLevelFolderSearch,
                                                              DirectoryInfoClassSearch,
                                                              useIndexSearch,
                                                              query,
                                                              locationPath));

            return(results);
        }