private bool HasCategory() { if (CategoryOptionsCBL != null) { return(CategoryOptionsCBL.GetSelectedItems().OfType <FileCategory>().Any()); } return(false); }
private void PerformSearch() { Results.ClearEx(); var categories = CategoryOptionsCBL.GetSelectedItems().OfType <FileCategory>().ToList(); var searchGames = new List <string>(); if (SearchME1) { searchGames.Add(@"masseffect"); } if (SearchME2) { searchGames.Add(@"masseffect2"); } if (SearchME3) { searchGames.Add(@"masseffect3"); } QueryInProgress = true; Task.Run(() => { try { foreach (var domain in searchGames) { var db = LoadedDatabases[domain]; // Check if the name exists in filenames. If it doesn't, it will never find it #if DEBUG /* * var ignoredItems = new List<string>() * { * @"DLC_MOD_FMRM_Patches", * @"DLC_MOD_FJRM_Patches", * @"DLC_ASH_MiniSkirt_Mods", * @"DLC_Explorer", * @"DLC_LIA_RA4_MeshOnly", * @"DLC_ASH_Shorts_Mod", * @"DLC_ASH_Alt_Mods", * @"DLC_ASH_Socks_Mod", * @"DLC_ASH_Topless_Mod", * @"DLC_GAR_FRM_Altered_Face_Legs_Mod", * @"DLC_GAR_GFC_Altered_Face_Legs_Mod", * @"DLC_LIA_NKDSlippers_Mod", * @"DLC_LIA_NKDSnickers_Mod", * @"DLC_GAR_GFC_New_Version", * @"DLC_GAR_GFC_Old_Version", * @"DLC_GAR_FRM_Textures", * @"DLC_MIR_Shorts_Mod", * @"DLC_MOD_IT_RUS", * * }; * var dlcNames = db.NameTable.Values.Where(x => !ignoredItems.Contains(x) && x.StartsWith(@"DLC_") && Path.GetExtension(x) == string.Empty && !x.Contains(" ") && ThirdPartyServices.GetThirdPartyModInfo(x, MEGame.ME3) == null).Select(x => x.Trim()).Distinct().ToList(); * var xx = new List<string>(); * foreach (var i in db.FileInstances.Values) * { * foreach (var f in i) * { * if (f.ParentPathID > 0) * { * var path = db.Paths[f.ParentPathID].GetFullPath(db); * if (path.ContainsAny(dlcNames, StringComparison.Ordinal)) * { * var finfo = $@"https://nexusmods.com/masseffect/mods/{f.ModID}"; * xx.Add(db.NameTable[db.ModFileInfos[f.FileID].NameID] + " " + finfo); * } * * } * } * } * File.WriteAllLines(@"D:\dlcNames.txt", dlcNames); * File.WriteAllLines(@"D:\mods.txt", xx);*/ #endif var match = db.NameTable.FirstOrDefault(x => x.Value.Equals(SearchTerm, StringComparison.InvariantCultureIgnoreCase)); if (match.Key != 0) { // Found var instances = db.FileInstances[match.Key].Where(x => categories.Contains(db.ModFileInfos[x.FileID].Category)); //Application.Current.Dispatcher.Invoke(() => //{ Results.AddRange(instances.Select(x => new SearchedItemResult() { Instance = x, Domain = domain, Filename = db.NameTable[x.FilenameId], AssociatedDB = db })); //}); } } StatusText = M3L.GetString(M3L.string_interp_resultsCount, Results.Count); QueryInProgress = false; } catch (Exception e) { Log.Error($@"Could not perform search: {e.Message}"); QueryInProgress = false; } }); }