//TODO: Test add/remove splitted card and statistics public MainViewModel(IDispatcherInvoker dispatcherInvoker) { AddLinkedProperty(nameof(Hierarchical), nameof(Title)); HideResultCommand = new RelayCommand(o => UpgradeStatus = UpgradeStatus.NotChecked); _dispatcherInvoker = dispatcherInvoker; _allhierarchical = new HierarchicalViewModel(MagicCards, AllCardAsViewModel); _magicDatabase = MagicDatabaseManager.ReadOnly; _magicDatabaseForOption = MagicDatabaseManager.ReadAndWriteOption; _magicDatabaseForCollection = MagicDatabaseManager.ReadAndWriteCollection; _magicDatabaseForCardInCollection = MagicDatabaseManager.ReadAndWriteCardInCollection; Options = new OptionsViewModel(_magicDatabaseForOption); _programUpdater = new ProgramUpgrader(); UpgradeStatus = _programUpdater.Status; if (Options.AutoCheckUpgrade) { ThreadPool.QueueUserWorkItem(DoCheckNewVersion); } Analysers = new HierarchicalInfoAnalysersViewModel(); _menuRoot = new MenuViewModel(); _contextMenuRoot = new MenuViewModel(); CreateMenu(); //Reload last chosen option IOption option = _magicDatabase.GetOption(TypeOfOption.SelectedCollection, "Name"); if (option != null) { LoadCollection(option.Value); } else { LoadCollection(); } }