private void RecountTypes() { resultCountByTypeCache.Clear(); resultTotalCountCache = 0; foreach (SearchResult result in search.Results) { var filterType = (result.Type == SearchResultType.File) ? FileSearchFilter.FileTypeToFilterType(result.FileListing.Type) : FilterType.Folder; if (!resultCountByTypeCache.ContainsKey(filterType)) { resultCountByTypeCache[filterType] = 0; } if (search.FiltersEnabled) { if (search.CheckAllFilters(result)) { resultCountByTypeCache[filterType] += 1; resultTotalCountCache += 1; } } else { resultCountByTypeCache[filterType] += 1; resultTotalCountCache += 1; } } typeTree.QueueDraw(); }
private void Refilter () { FilterType selectedFilterType = FilterType.All; TreeIter i; if (typeTree.Selection.GetSelected(out i)) { selectedFilterType = (FilterType)typeTree.Model.GetValue(i, 2); } foreach (SearchResult result in search.Results) { if (result.Type == SearchResultType.File) { if (selectedFilterType != FilterType.All) { var filterType = FileSearchFilter.FileTypeToFilterType(result.FileListing.Type); result.Visible = (filterType == selectedFilterType); } else { result.Visible = true; } } else if (result.Type == SearchResultType.Directory) { result.Visible = (selectedFilterType == FilterType.All || selectedFilterType == FilterType.Folder); } if (result.Visible) { if (search.FiltersEnabled) { result.Visible = search.CheckAllFilters(result); } else { result.Visible = true; } } } if (resultsFilter != null) { resultsFilter.Refilter(); } }