コード例 #1
0
ファイル: FileTree.cs プロジェクト: ScanMountGoat/ArcExplorer
        /// <summary>
        /// Searches the entire ARC file using a fuzzy search.
        /// </summary>
        /// <param name="arcFile">The ARC to search</param>
        /// <param name="extractStartCallBack"></param>
        /// <param name="extractReportProgressCallBack"></param>
        /// <param name="extractEndCallBack"></param>
        /// <param name="searchText">The string to search for</param>
        /// <param name="mergeTrailingSlash"></param>
        /// <returns>The results sorted by matching score</returns>
        public static List <FileNodeBase> SearchAllNodes(ArcFile arcFile, Action <string, bool> extractStartCallBack,
                                                         Action <string, double> extractReportProgressCallBack, Action <string> extractEndCallBack, string searchText, bool mergeTrailingSlash)
        {
            // TODO: The max result count has a big impact on performance and is worth tuning.
            var paths = arcFile.SearchFiles(searchText, 2000, ApplicationSettings.Instance.ArcRegion);

            var result = new List <FileNodeBase>((int)arcFile.FileCount);

            foreach (var path in paths)
            {
                var treeNode = CreateNodeFromPath(arcFile, path, extractStartCallBack, extractReportProgressCallBack, extractEndCallBack, mergeTrailingSlash);
                if (treeNode != null)
                {
                    result.Add(treeNode);
                }
            }

            // Avoiding sorting by path to preserve the order based on matching score.
            return(result);
        }