public SearchFilter(DatabaseAccess.MatchFilters type, Bitmap icon) { Type = type; Label = type.ToString(); MemoryStream stream = new MemoryStream(); icon.Save(stream, System.Drawing.Imaging.ImageFormat.Png); Icon = BitmapFrame.Create(stream); }
private void _SearchFiles(SearchResult resultContainer) { Debug.Assert(resultContainer != null); DatabaseAccess.MatchFilters activeFilter = m_activeSearchFilter != null ? m_activeSearchFilter.Type : DatabaseAccess.MatchFilters.Any; if (resultContainer.SearchTerm == null || resultContainer.SearchTerm.Length <= 1) { return; } List <RawFileData> rawResults = new List <RawFileData>(); List <DBPredicate> searchPredicates = new List <DBPredicate>(); List <Common.FileInfo> convertedData = new List <Common.FileInfo>(); try { switch (activeFilter) { case DatabaseAccess.MatchFilters.Any: { if (resultContainer.WildcardSearch == true) { searchPredicates.Add(new DBPredicate("name", DBOperator.LIKE, "%" + resultContainer.SearchTerm + "%")); searchPredicates.Add(new DBPredicate("tags", DBOperator.LIKE, "%" + resultContainer.SearchTerm + "%")); } else { searchPredicates.Add(new DBPredicate("name", DBOperator.LIKE, resultContainer.SearchTerm + "%")); searchPredicates.Add(new DBPredicate("tags", DBOperator.LIKE, resultContainer.SearchTerm + "%")); } rawResults = m_database.Select <RawFileData>("FileCache", searchPredicates, new RawFileDataCreator(), DBConjunction.OR); break; } case DatabaseAccess.MatchFilters.Files: { if (resultContainer.WildcardSearch == true) { searchPredicates.Add(new DBPredicate("name", DBOperator.LIKE, "%" + resultContainer.SearchTerm + "%")); } else { searchPredicates.Add(new DBPredicate("name", DBOperator.LIKE, resultContainer.SearchTerm + "%")); } searchPredicates.Add(new DBPredicate("type", DBOperator.EQUALS, "1")); rawResults = m_database.Select <RawFileData>("FileCache", searchPredicates, new RawFileDataCreator(), DBConjunction.AND); break; } case DatabaseAccess.MatchFilters.Folders: { if (resultContainer.WildcardSearch == true) { searchPredicates.Add(new DBPredicate("name", DBOperator.LIKE, "%" + resultContainer.SearchTerm + "%")); } else { searchPredicates.Add(new DBPredicate("name", DBOperator.LIKE, resultContainer.SearchTerm + "%")); } searchPredicates.Add(new DBPredicate("type", DBOperator.EQUALS, "0")); rawResults = m_database.Select <RawFileData>("FileCache", searchPredicates, new RawFileDataCreator(), DBConjunction.AND); break; } case DatabaseAccess.MatchFilters.Tags: { break; } default: break; } } catch (Exception crap) { m_settings.SessionLog += crap.Message + "\n"; return; } if (rawResults.Count == 0) { return; } //take the retrieved raw data and convert it into the proper form for (int i = rawResults.Count - 1; i >= 0; i--) { Common.FileInfo info = new Common.FileInfo(rawResults[i], Properties.Resources.file, Properties.Resources.folder); info.CalculateWeight(resultContainer.SearchTerm); convertedData.Add(info); rawResults.RemoveAt(i); } /*sort the results in descending order based on relevancy weight*/ convertedData.Sort((a, b) => - 1 * a.Weight.CompareTo(b.Weight)); //remove all invalid files from the results list and store the results in the container resultContainer.InvalidResults = _ValidateFiles(convertedData); resultContainer.ValidResults = convertedData; }