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);
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
 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;
     }
 }
Exemplo n.º 4
0
        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;
            }
        }