private bool ModFilter(object item) { TroveModViewModel mod = item as TroveModViewModel; var ic = StringComparison.OrdinalIgnoreCase; bool search = true, types = true, subtypes = true, format = true; try { search = string.IsNullOrEmpty(SearchFilter) || mod.DataObject.Name?.IndexOf(SearchFilter, ic) >= 0 || mod.DataObject.Author?.IndexOf(SearchFilter, ic) >= 0 || mod.DataObject.Type?.IndexOf(SearchFilter, ic) >= 0 || mod.DataObject.SubType?.IndexOf(SearchFilter, ic) >= 0; types = string.IsNullOrEmpty(TypeFilter) || TypeFilter.Equals(Strings.GetMoreModsViewModel_AllTypes, ic) || mod.DataObject.Type == null || mod.DataObject.Type.Equals(TypeFilter, ic); subtypes = string.IsNullOrEmpty(SubTypeFilter) || SubTypeFilter.Equals(Strings.GetMoreModsViewModel_AllSubTypes, ic) || mod.DataObject.SubType == null || mod.DataObject.SubType.Equals(SubTypeFilter, ic); format = string.IsNullOrEmpty(FormatFilter) || FormatFilter.Equals(Strings.GetMoreModsViewModel_AllFormats, ic) || mod.DataObject.Downloads.Any(d => d.Format.Equals(FormatFilter, ic)); } catch (Exception ex) { log.Error("Mod filter error", ex); if (log.IsDebugEnabled) { log.DebugFormat("Mod Name: [{0}], Author: [{1}], Type: [{2}], SubType: [{3}], SearchFilter: [{4}], TypeFilter: [{5}], SubTypeFilter: [{6}], FormatFilter: [{7}]", mod?.DataObject?.Name, mod?.DataObject?.Author, mod?.DataObject?.Type, mod?.DataObject?.SubType, SearchFilter, TypeFilter, SubTypeFilter, FormatFilter); } } return(search && types && subtypes && format); }
private void AddMod(string filePath) { try { // Use a dynamic ViewModel object to trigger status property notifications dynamic modVM = new TroveModViewModel(filePath); MyMods.Add(modVM); modVM.AddMod(); modVM.InstallMod(); } catch (Exception ex) { log.Error("Error adding mod: " + filePath, ex); } }
private void LoadModPack(TroveModPackViewModel currentItem) { log.InfoFormat("Loading mod pack: {0}", currentItem.DataObject.Name); foreach (var mod in currentItem.DataObject.Mods) { var modVm = MyMods.FirstOrDefault(m => m.DataObject.Id == mod.Id); if (modVm == null) { modVm = MainWindowViewModel.Instance.GetMoreMods.TrovesaurusMods.FirstOrDefault(m => m.DataObject.Id == mod.Id); if (modVm == null) { modVm = new TroveModViewModel(mod); } modVm.InstallCommand.Execute(null); } modVm.ModPack = currentItem; modVm.DataObject.PackName = currentItem.DisplayName; } }
public void LoadData() { // Load data and setup saving MyMods list to settings canSaveData = false; try { log.Info("Loading my mods"); // Load mods from model and create view model objects foreach (TroveMod mod in TroveMod.MyMods) { dynamic modVM = new TroveModViewModel(mod); MyMods.Add(modVM); modVM.CheckForUpdates(); } // Load local mod packs foreach (TroveModPack pack in SettingsDataProvider.MyModPacks) { ModPacks.Add(new TroveModPackViewModel(pack)); } // Load mod packs from Trovesaurus API foreach (TroveModPack pack in TrovesaurusApi.ModPackList) { ModPacks.Add(new TroveModPackViewModel(pack)); } // If auto update setting is enabled, update all mods on startup if (MainWindowViewModel.Instance.Settings.AutoUpdateMods) { UpdateAllMods(); StartUpdateTimer(SettingsDataProvider.AutoUpdateInterval); } // Setup auto-saving of my mods when the collection or items in the collection change MyMods.CollectionChanged += (s, e) => { if (e.OldItems != null) { foreach (INotifyPropertyChanged item in e.OldItems) { item.PropertyChanged -= SaveMyMods; } } if (e.NewItems != null) { foreach (INotifyPropertyChanged item in e.NewItems) { item.PropertyChanged += SaveMyMods; } } SaveMyMods(); }; // Setup auto-saving of mod packs when the collection or items in the collection change ModPacks.CollectionChanged += (s, e) => { SaveModPacks(); }; canSaveData = true; SaveMyMods(); SaveModPacks(); log.Info("Loaded my mods"); } catch (Exception ex) { log.Error("Error loading my mods", ex); } finally { canSaveData = true; } }