internal void LoadConfigSettings() { if (Config.Instance.TrackerWindowTop.HasValue) { Top = Config.Instance.TrackerWindowTop.Value; } if (Config.Instance.TrackerWindowLeft.HasValue) { Left = Config.Instance.TrackerWindowLeft.Value; } if (Config.Instance.WindowHeight < 0) { Config.Instance.Reset("WindowHeight"); } Height = Config.Instance.WindowHeight; if (Config.Instance.WindowWidth < 0) { Config.Instance.Reset("WindowWidth"); } Width = Config.Instance.WindowWidth; var titleBarCorners = new[] { new Point((int)Left + 5, (int)Top + 5), new Point((int)(Left + Width) - 5, (int)Top + 5), new Point((int)Left + 5, (int)(Top + TitlebarHeight) - 5), new Point((int)(Left + Width) - 5, (int)(Top + TitlebarHeight) - 5) }; if (!Screen.AllScreens.Any(s => titleBarCorners.Any(c => s.WorkingArea.Contains(c)))) { Top = 100; Left = 100; } if (Config.Instance.StartMinimized) { WindowState = WindowState.Minimized; if (Config.Instance.MinimizeToTray) { MinimizeToTray(); } } Options.Load(Core.Game); Help.TxtblockVersion.Text = "v" + Helper.GetCurrentVersion().ToVersionString(); Core.TrayIcon.SetContextMenuProperty("autoSelectDeck", "Checked", Config.Instance.AutoDeckDetection); // Don't select the 'archived' class on load var selectedClasses = Config.Instance.SelectedDeckPickerClasses.Where(c => c.ToString() != "Archived").ToList(); if (selectedClasses.Count == 0) { selectedClasses.Add(HeroClassAll.All); } DeckPickerList.SelectClasses(selectedClasses); DeckPickerList.SelectDeckType(Config.Instance.SelectedDeckPickerDeckType, true); SortFilterDecksFlyout.LoadTags(DeckList.Instance.AllTags); SortFilterDecksFlyout.SetSelectedTags(Config.Instance.SelectedTags); TagControlEdit.LoadTags(DeckList.Instance.AllTags.Where(tag => tag != "All" && tag != "None").ToList()); SortFilterDecksFlyout.OperationSwitch.IsChecked = Config.Instance.TagOperation == TagFilerOperation.And; SortFilterDecksFlyout.ComboboxDeckSorting.SelectedItem = Config.Instance.SelectedDeckSorting; SortFilterDecksFlyout.CheckBoxSortByClass.IsChecked = Config.Instance.SortDecksByClass; SortFilterDecksFlyout.ComboboxDeckSortingArena.SelectedItem = Config.Instance.SelectedDeckSortingArena; SortFilterDecksFlyout.CheckBoxSortByClassArena.IsChecked = Config.Instance.SortDecksByClassArena; ManaCurveMyDecks.Visibility = Config.Instance.ManaCurveMyDecks ? Visibility.Visible : Visibility.Collapsed; Core.TrayIcon.SetContextMenuProperty("classCardsFirst", "Checked", Config.Instance.CardSortingClassFirst); Core.TrayIcon.SetContextMenuProperty("useNoDeck", "Checked", DeckList.Instance.ActiveDeck == null); UpdateMyGamesPanelVisibility(); }
private void LoadConfig() { if (Config.Instance.TrackerWindowTop.HasValue) { Top = Config.Instance.TrackerWindowTop.Value; } if (Config.Instance.TrackerWindowLeft.HasValue) { Left = Config.Instance.TrackerWindowLeft.Value; } if (Config.Instance.WindowHeight < 0) { Config.Instance.Reset("WindowHeight"); } Height = Config.Instance.WindowHeight; if (Config.Instance.WindowWidth < 0) { Config.Instance.Reset("WindowWidth"); } Width = Config.Instance.WindowWidth; var titleBarCorners = new[] { new Point((int)Left + 5, (int)Top + 5), new Point((int)(Left + Width) - 5, (int)Top + 5), new Point((int)Left + 5, (int)(Top + TitlebarHeight) - 5), new Point((int)(Left + Width) - 5, (int)(Top + TitlebarHeight) - 5) }; if (!Screen.AllScreens.Any(s => titleBarCorners.Any(c => s.WorkingArea.Contains(c)))) { Top = 100; Left = 100; } if (Config.Instance.StartMinimized) { WindowState = WindowState.Minimized; if (Config.Instance.MinimizeToTray) { MinimizeToTray(); } } var theme = string.IsNullOrEmpty(Config.Instance.ThemeName) ? ThemeManager.DetectAppStyle().Item1 : ThemeManager.AppThemes.First(t => t.Name == Config.Instance.ThemeName); var accent = string.IsNullOrEmpty(Config.Instance.AccentName) ? ThemeManager.DetectAppStyle().Item2 : ThemeManager.Accents.First(a => a.Name == Config.Instance.AccentName); ThemeManager.ChangeAppStyle(Application.Current, accent, theme); Application.Current.Resources["GrayTextColorBrush"] = theme.Name == "BaseLight" ? new SolidColorBrush((Color)Application.Current.Resources["GrayTextColor1"]) : new SolidColorBrush((Color)Application.Current.Resources["GrayTextColor2"]); Options.Load(); Game.HighlightCardsInHand = Config.Instance.HighlightCardsInHand; Game.HighlightDiscarded = Config.Instance.HighlightDiscarded; CheckboxDeckDetection.IsChecked = Config.Instance.AutoDeckDetection; SetContextMenuProperty("autoSelectDeck", "Checked", (bool)CheckboxDeckDetection.IsChecked); // Don't select the 'archived' class on load var selectedClasses = Config.Instance.SelectedDeckPickerClasses.Where(c => c.ToString() != "Archived").ToList(); if (selectedClasses.Count == 0) { selectedClasses.Add(HeroClassAll.All); } DeckPickerList.SelectClasses(selectedClasses); DeckPickerList.SelectDeckType(Config.Instance.SelectedDeckType, true); SortFilterDecksFlyout.LoadTags(DeckList.Instance.AllTags); UpdateQuickFilterItemSource(); SortFilterDecksFlyout.SetSelectedTags(Config.Instance.SelectedTags); TagControlEdit.LoadTags(DeckList.Instance.AllTags.Where(tag => tag != "All" && tag != "None").ToList()); SortFilterDecksFlyout.OperationSwitch.IsChecked = Config.Instance.TagOperation == TagFilerOperation.And; SortFilterDecksFlyout.ComboboxDeckSorting.SelectedItem = Config.Instance.SelectedDeckSorting; SortFilterDecksFlyout.CheckBoxSortByClass.IsChecked = Config.Instance.SortDecksByClass; SortFilterDecksFlyout.ComboboxDeckSortingArena.SelectedItem = Config.Instance.SelectedDeckSortingArena; SortFilterDecksFlyout.CheckBoxSortByClassArena.IsChecked = Config.Instance.SortDecksByClassArena; if (!EventKeys.Contains(Config.Instance.KeyPressOnGameStart)) { Config.Instance.KeyPressOnGameStart = "None"; } if (!EventKeys.Contains(Config.Instance.KeyPressOnGameEnd)) { Config.Instance.KeyPressOnGameEnd = "None"; } ManaCurveMyDecks.Visibility = Config.Instance.ManaCurveMyDecks ? Visibility.Visible : Visibility.Collapsed; //ManaCurveMyDecks.ListViewStatType.SelectedIndex = (int)Config.Instance.ManaCurveFilter; CheckboxClassCardsFirst.IsChecked = Config.Instance.CardSortingClassFirst; SetContextMenuProperty("classCardsFirst", "Checked", (bool)CheckboxClassCardsFirst.IsChecked); SetContextMenuProperty("useNoDeck", "Checked", DeckList.Instance.ActiveDeck == null); DeckStatsFlyout.LoadConfig(); GameDetailsFlyout.LoadConfig(); StatsWindow.StatsControl.LoadConfig(); StatsWindow.GameDetailsFlyout.LoadConfig(); MenuItemCheckBoxSyncOnStart.IsChecked = Config.Instance.HearthStatsSyncOnStart; MenuItemCheckBoxAutoUploadDecks.IsChecked = Config.Instance.HearthStatsAutoUploadNewDecks; MenuItemCheckBoxAutoUploadGames.IsChecked = Config.Instance.HearthStatsAutoUploadNewGames; MenuItemCheckBoxAutoSyncBackground.IsChecked = Config.Instance.HearthStatsAutoSyncInBackground; MenuItemCheckBoxAutoDeleteDecks.IsChecked = Config.Instance.HearthStatsAutoDeleteDecks; MenuItemCheckBoxAutoDeleteGames.IsChecked = Config.Instance.HearthStatsAutoDeleteMatches; }
internal void LoadConfigSettings() { if (Config.Instance.TrackerWindowTop.HasValue) { Top = Config.Instance.TrackerWindowTop.Value; } if (Config.Instance.TrackerWindowLeft.HasValue) { Left = Config.Instance.TrackerWindowLeft.Value; } if (Config.Instance.WindowHeight < 0) { Config.Instance.Reset("WindowHeight"); } Height = Config.Instance.WindowHeight; if (Config.Instance.WindowWidth < 0) { Config.Instance.Reset("WindowWidth"); } Width = Config.Instance.WindowWidth; var titleBarCorners = new[] { new Point((int)Left + 5, (int)Top + 5), new Point((int)(Left + Width) - 5, (int)Top + 5), new Point((int)Left + 5, (int)(Top + TitlebarHeight) - 5), new Point((int)(Left + Width) - 5, (int)(Top + TitlebarHeight) - 5) }; if (!Screen.AllScreens.Any(s => titleBarCorners.Any(c => s.WorkingArea.Contains(c)))) { Top = 100; Left = 100; } if (Config.Instance.StartMinimized) { WindowState = WindowState.Minimized; if (Config.Instance.MinimizeToTray) { MinimizeToTray(); } } Options.Load(Core.Game); Help.TxtblockVersion.Text = "v" + Helper.GetCurrentVersion().ToVersionString(); CheckboxDeckDetection.IsChecked = Config.Instance.AutoDeckDetection; Core.TrayIcon.SetContextMenuProperty("autoSelectDeck", "Checked", (bool)CheckboxDeckDetection.IsChecked); // Don't select the 'archived' class on load var selectedClasses = Config.Instance.SelectedDeckPickerClasses.Where(c => c.ToString() != "Archived").ToList(); if (selectedClasses.Count == 0) { selectedClasses.Add(HeroClassAll.All); } DeckPickerList.SelectClasses(selectedClasses); DeckPickerList.SelectDeckType(Config.Instance.SelectedDeckType, true); SortFilterDecksFlyout.LoadTags(DeckList.Instance.AllTags); UpdateQuickFilterItemSource(); SortFilterDecksFlyout.SetSelectedTags(Config.Instance.SelectedTags); TagControlEdit.LoadTags(DeckList.Instance.AllTags.Where(tag => tag != "All" && tag != "None").ToList()); SortFilterDecksFlyout.OperationSwitch.IsChecked = Config.Instance.TagOperation == TagFilerOperation.And; SortFilterDecksFlyout.ComboboxDeckSorting.SelectedItem = Config.Instance.SelectedDeckSorting; SortFilterDecksFlyout.CheckBoxSortByClass.IsChecked = Config.Instance.SortDecksByClass; SortFilterDecksFlyout.ComboboxDeckSortingArena.SelectedItem = Config.Instance.SelectedDeckSortingArena; SortFilterDecksFlyout.CheckBoxSortByClassArena.IsChecked = Config.Instance.SortDecksByClassArena; if (!Helper.EventKeys.Contains(Config.Instance.KeyPressOnGameStart)) { Config.Instance.KeyPressOnGameStart = "None"; } if (!Helper.EventKeys.Contains(Config.Instance.KeyPressOnGameEnd)) { Config.Instance.KeyPressOnGameEnd = "None"; } ManaCurveMyDecks.Visibility = Config.Instance.ManaCurveMyDecks ? Visibility.Visible : Visibility.Collapsed; //ManaCurveMyDecks.ListViewStatType.SelectedIndex = (int)Config.Instance.ManaCurveFilter; CheckboxClassCardsFirst.IsChecked = Config.Instance.CardSortingClassFirst; Core.TrayIcon.SetContextMenuProperty("classCardsFirst", "Checked", (bool)CheckboxClassCardsFirst.IsChecked); Core.TrayIcon.SetContextMenuProperty("useNoDeck", "Checked", DeckList.Instance.ActiveDeck == null); DeckStatsFlyout.LoadConfig(); GameDetailsFlyout.LoadConfig(); Core.Windows.StatsWindow.StatsControl.LoadConfig(); Core.Windows.StatsWindow.GameDetailsFlyout.LoadConfig(); MenuItemCheckBoxSyncOnStart.IsChecked = Config.Instance.HearthStatsSyncOnStart; MenuItemCheckBoxAutoUploadDecks.IsChecked = Config.Instance.HearthStatsAutoUploadNewDecks; MenuItemCheckBoxAutoUploadGames.IsChecked = Config.Instance.HearthStatsAutoUploadNewGames; MenuItemCheckBoxAutoSyncBackground.IsChecked = Config.Instance.HearthStatsAutoSyncInBackground; MenuItemCheckBoxAutoDeleteDecks.IsChecked = Config.Instance.HearthStatsAutoDeleteDecks; MenuItemCheckBoxAutoDeleteGames.IsChecked = Config.Instance.HearthStatsAutoDeleteMatches; }
private void LoadConfig() { if (Config.Instance.TrackerWindowTop.HasValue) { Top = Config.Instance.TrackerWindowTop.Value; } if (Config.Instance.TrackerWindowLeft.HasValue) { Left = Config.Instance.TrackerWindowLeft.Value; } if (Config.Instance.WindowHeight < 0) { Config.Instance.Reset("WindowHeight"); } Height = Config.Instance.WindowHeight; if (Config.Instance.WindowWidth < 0) { Config.Instance.Reset("WindowWidth"); } Width = Config.Instance.WindowWidth; var titleBarCorners = new[] { new Point((int)Left + 5, (int)Top + 5), new Point((int)(Left + Width) - 5, (int)Top + 5), new Point((int)Left + 5, (int)(Top + TitlebarHeight) - 5), new Point((int)(Left + Width) - 5, (int)(Top + TitlebarHeight) - 5) }; if (!Screen.AllScreens.Any(s => titleBarCorners.Any(c => s.WorkingArea.Contains(c)))) { Top = 100; Left = 100; } if (Config.Instance.StartMinimized) { WindowState = WindowState.Minimized; if (Config.Instance.MinimizeToTray) { MinimizeToTray(); } } var theme = string.IsNullOrEmpty(Config.Instance.ThemeName) ? ThemeManager.DetectAppStyle().Item1 : ThemeManager.AppThemes.First(t => t.Name == Config.Instance.ThemeName); var accent = string.IsNullOrEmpty(Config.Instance.AccentName) ? ThemeManager.DetectAppStyle().Item2 : ThemeManager.Accents.First(a => a.Name == Config.Instance.AccentName); ThemeManager.ChangeAppStyle(Application.Current, accent, theme); Options.ComboboxTheme.SelectedItem = theme; Options.ComboboxAccent.SelectedItem = accent; Game.HighlightCardsInHand = Config.Instance.HighlightCardsInHand; Game.HighlightDiscarded = Config.Instance.HighlightDiscarded; Options.CheckboxHideOverlayInBackground.IsChecked = Config.Instance.HideInBackground; Options.CheckboxHideOpponentCardAge.IsChecked = Config.Instance.HideOpponentCardAge; Options.CheckboxHideOpponentCardMarks.IsChecked = Config.Instance.HideOpponentCardMarks; Options.CheckboxHideOverlayInMenu.IsChecked = Config.Instance.HideInMenu; Options.CheckboxHighlightCardsInHand.IsChecked = Config.Instance.HighlightCardsInHand; Options.CheckboxHideOverlay.IsChecked = Config.Instance.HideOverlay; Options.CheckboxHideDecksInOverlay.IsChecked = Config.Instance.HideDecksInOverlay; Options.CheckboxKeepDecksVisible.IsChecked = Config.Instance.KeepDecksVisible; Options.CheckboxMinimizeTray.IsChecked = Config.Instance.MinimizeToTray; Options.CheckboxWindowsTopmost.IsChecked = Config.Instance.WindowsTopmost; Options.CheckboxPlayerWindowOpenAutomatically.IsChecked = Config.Instance.PlayerWindowOnStart; Options.CheckboxOpponentWindowOpenAutomatically.IsChecked = Config.Instance.OpponentWindowOnStart; Options.CheckboxTimerTopmost.IsChecked = Config.Instance.TimerWindowTopmost; Options.CheckboxTimerWindow.IsChecked = Config.Instance.TimerWindowOnStartup; Options.CheckboxTimerTopmostHsForeground.IsChecked = Config.Instance.TimerWindowTopmostIfHsForeground; Options.CheckboxTimerTopmostHsForeground.IsEnabled = Config.Instance.TimerWindowTopmost; Options.CheckboxSameScaling.IsChecked = Config.Instance.UseSameScaling; CheckboxDeckDetection.IsChecked = Config.Instance.AutoDeckDetection; Options.CheckboxWinTopmostHsForeground.IsChecked = Config.Instance.WindowsTopmostIfHsForeground; Options.CheckboxWinTopmostHsForeground.IsEnabled = Config.Instance.WindowsTopmost; Options.CheckboxAutoSelectDeck.IsEnabled = Config.Instance.AutoDeckDetection; Options.CheckboxAutoSelectDeck.IsChecked = Config.Instance.AutoSelectDetectedDeck; Options.CheckboxExportName.IsChecked = Config.Instance.ExportSetDeckName; Options.CheckboxPrioGolden.IsChecked = Config.Instance.PrioritizeGolden; Options.CheckboxBringHsToForegorund.IsChecked = Config.Instance.BringHsToForeground; Options.CheckboxFlashHs.IsChecked = Config.Instance.FlashHsOnTurnStart; Options.CheckboxHideSecrets.IsChecked = Config.Instance.HideSecrets; Options.CheckboxHighlightDiscarded.IsChecked = Config.Instance.HighlightDiscarded; Options.CheckboxRemoveCards.IsChecked = Config.Instance.RemoveCardsFromDeck; Options.CheckboxHighlightLastDrawn.IsChecked = Config.Instance.HighlightLastDrawn; Options.CheckboxStartMinimized.IsChecked = Config.Instance.StartMinimized; Options.CheckboxShowPlayerGet.IsChecked = Config.Instance.ShowPlayerGet; Options.ToggleSwitchExtraFeatures.IsChecked = Config.Instance.ExtraFeatures; Options.CheckboxCheckForUpdates.IsChecked = Config.Instance.CheckForUpdates; Options.CheckboxRecordArena.IsChecked = Config.Instance.RecordArena; Options.CheckboxRecordCasual.IsChecked = Config.Instance.RecordCasual; Options.CheckboxRecordFriendly.IsChecked = Config.Instance.RecordFriendly; Options.CheckboxRecordOther.IsChecked = Config.Instance.RecordOther; Options.CheckboxRecordPractice.IsChecked = Config.Instance.RecordPractice; Options.CheckboxRecordRanked.IsChecked = Config.Instance.RecordRanked; Options.CheckboxFullTextSearch.IsChecked = Config.Instance.UseFullTextSearch; Options.CheckboxDiscardGame.IsChecked = Config.Instance.DiscardGameIfIncorrectDeck; Options.CheckboxExportPasteClipboard.IsChecked = Config.Instance.ExportPasteClipboard; Options.CheckboxGoldenFeugen.IsChecked = Config.Instance.OwnsGoldenFeugen; Options.CheckboxGoldenStalagg.IsChecked = Config.Instance.OwnsGoldenStalagg; Options.CheckboxCloseWithHearthstone.IsChecked = Config.Instance.CloseWithHearthstone; Options.CheckboxStatsInWindow.IsChecked = Config.Instance.StatsInWindow; Options.CheckboxOverlaySecretToolTipsOnly.IsChecked = Config.Instance.OverlaySecretToolTipsOnly; Options.CheckboxTagOnImport.IsChecked = Config.Instance.TagDecksOnImport; Options.CheckboxConfigSaveAppData.IsChecked = Config.Instance.SaveConfigInAppData; Options.CheckboxDataSaveAppData.IsChecked = Config.Instance.SaveDataInAppData; Options.CheckboxAdvancedWindowSearch.IsChecked = Config.Instance.AdvancedWindowSearch; Options.CheckboxDeleteDeckKeepStats.IsChecked = Config.Instance.KeepStatsWhenDeletingDeck; Options.CheckboxNoteDialog.IsChecked = Config.Instance.ShowNoteDialogAfterGame; Options.CheckboxAutoClear.IsChecked = Config.Instance.AutoClearDeck; Options.CheckboxLogTab.IsChecked = Config.Instance.ShowLogTab; Options.CheckboxTimerAlert.IsChecked = Config.Instance.TimerAlert; Options.CheckboxRecordSpectator.IsChecked = Config.Instance.RecordSpectator; Options.CheckboxHideOverlayInSpectator.IsChecked = Config.Instance.HideOverlayInSpectator; Options.TextboxExportDelay.Text = Config.Instance.ExportStartDelay.ToString(); Options.CheckboxDiscardZeroTurnGame.IsChecked = Config.Instance.DiscardZeroTurnGame; Options.CheckboxSaveHSLogIntoReplayFile.IsChecked = Config.Instance.SaveHSLogIntoReplay; Options.CheckboxNoteDialogDelayed.IsChecked = Config.Instance.NoteDialogDelayed; Options.CheckboxNoteDialogDelayed.IsEnabled = Config.Instance.ShowNoteDialogAfterGame; Options.CheckboxStartWithWindows.IsChecked = Config.Instance.StartWithWindows; Options.CheckboxOverlayCardMarkToolTips.IsChecked = Config.Instance.OverlayCardMarkToolTips; Options.ComboBoxLogLevel.SelectedValue = Config.Instance.LogLevel.ToString(); Options.CheckBoxForceExtraFeatures.IsChecked = Config.Instance.ForceMouseHook; Options.CheckBoxForceExtraFeatures.IsEnabled = Config.Instance.ExtraFeatures; Options.CheckboxAutoGrayoutSecrets.IsChecked = Config.Instance.AutoGrayoutSecrets; Options.CheckboxImportNetDeck.IsChecked = Config.Instance.NetDeckClipboardCheck ?? false; Options.CheckboxAutoSaveOnImport.IsChecked = Config.Instance.AutoSaveOnImport; Options.SliderOverlayOpacity.Value = Config.Instance.OverlayOpacity; Options.SliderOpponentOpacity.Value = Config.Instance.OpponentOpacity; Options.SliderPlayerOpacity.Value = Config.Instance.PlayerOpacity; Options.SliderOverlayPlayerScaling.Value = Config.Instance.OverlayPlayerScaling; Options.SliderOverlayOpponentScaling.Value = Config.Instance.OverlayOpponentScaling; //DeckPickerList.ShowAll = Config.Instance.ShowAllDecks; //DeckPickerList.SetSelectedTags(Config.Instance.SelectedTags); DeckPickerList.SelectClasses(Config.Instance.SelectedDeckPickerClasses.ToList()); DeckPickerList.SelectDeckType(Config.Instance.SelectedDeckType, true); Options.CheckboxHideTimers.IsChecked = Config.Instance.HideTimers; var delay = Config.Instance.DeckExportDelay; Options.ComboboxExportSpeed.SelectedIndex = delay < 40 ? 0 : delay < 60 ? 1 : delay < 100 ? 2 : delay < 150 ? 3 : 4; SortFilterDecksFlyout.LoadTags(DeckList.Instance.AllTags); UpdateQuickFilterItemSource(); SortFilterDecksFlyout.SetSelectedTags(Config.Instance.SelectedTags); //DeckPickerList.SetSelectedTags(Config.Instance.SelectedTags); TagControlEdit.LoadTags(DeckList.Instance.AllTags.Where(tag => tag != "All" && tag != "None").ToList()); //DeckPickerList.SetTagOperation(Config.Instance.TagOperation); SortFilterDecksFlyout.OperationSwitch.IsChecked = Config.Instance.TagOperation == TagFilerOperation.And; SortFilterDecksFlyout.ComboboxDeckSorting.SelectedItem = Config.Instance.SelectedDeckSorting; Options.ComboboxWindowBackground.SelectedItem = Config.Instance.SelectedWindowBackground; Options.TextboxCustomBackground.IsEnabled = Config.Instance.SelectedWindowBackground == "Custom"; Options.TextboxCustomBackground.Text = string.IsNullOrEmpty(Config.Instance.WindowsBackgroundHex) ? "#696969" : Config.Instance.WindowsBackgroundHex; Options.UpdateAdditionalWindowsBackground(); if (Helper.LanguageDict.Values.Contains(Config.Instance.SelectedLanguage)) { Options.ComboboxLanguages.SelectedItem = Helper.LanguageDict.First(x => x.Value == Config.Instance.SelectedLanguage).Key; } if (!EventKeys.Contains(Config.Instance.KeyPressOnGameStart)) { Config.Instance.KeyPressOnGameStart = "None"; } Options.ComboboxKeyPressGameStart.SelectedValue = Config.Instance.KeyPressOnGameStart; if (!EventKeys.Contains(Config.Instance.KeyPressOnGameEnd)) { Config.Instance.KeyPressOnGameEnd = "None"; } Options.ComboboxKeyPressGameEnd.SelectedValue = Config.Instance.KeyPressOnGameEnd; Options.CheckboxHideManaCurveMyDecks.IsChecked = Config.Instance.ManaCurveMyDecks; ManaCurveMyDecks.Visibility = Config.Instance.ManaCurveMyDecks ? Visibility.Visible : Visibility.Collapsed; Options.CheckboxTrackerCardToolTips.IsChecked = Config.Instance.TrackerCardToolTips; Options.CheckboxWindowCardToolTips.IsChecked = Config.Instance.WindowCardToolTips; Options.CheckboxOverlayCardToolTips.IsChecked = Config.Instance.OverlayCardToolTips; Options.CheckboxOverlayAdditionalCardToolTips.IsEnabled = Config.Instance.OverlayCardToolTips; Options.CheckboxOverlayAdditionalCardToolTips.IsChecked = Config.Instance.AdditionalOverlayTooltips; CheckboxClassCardsFirst.IsChecked = Config.Instance.CardSortingClassFirst; DeckStatsFlyout.LoadConfig(); GameDetailsFlyout.LoadConfig(); StatsWindow.StatsControl.LoadConfig(); StatsWindow.GameDetailsFlyout.LoadConfig(); MenuItemImportArena.IsEnabled = Config.Instance.ShowArenaImportMessage; MenuItemCheckBoxSyncOnStart.IsChecked = Config.Instance.HearthStatsSyncOnStart; MenuItemCheckBoxAutoUploadDecks.IsChecked = Config.Instance.HearthStatsAutoUploadNewDecks; MenuItemCheckBoxAutoUploadGames.IsChecked = Config.Instance.HearthStatsAutoUploadNewGames; MenuItemCheckBoxAutoSyncBackground.IsChecked = Config.Instance.HearthStatsAutoSyncInBackground; MenuItemCheckBoxAutoDeleteDecks.IsChecked = Config.Instance.HearthStatsAutoDeleteDecks; MenuItemCheckBoxAutoDeleteGames.IsChecked = Config.Instance.HearthStatsAutoDeleteMatches; UpdatePanelVersionComboBox(DeckList.Instance.ActiveDeck); if (DeckList.Instance.ActiveDeck != null && Overlay.ListViewPlayer.ItemsSource != Game.PlayerDeck) { Overlay.ListViewPlayer.ItemsSource = Game.PlayerDeck; Overlay.ListViewPlayer.Items.Refresh(); PlayerWindow.ListViewPlayer.ItemsSource = Game.PlayerDeck; PlayerWindow.ListViewPlayer.Items.Refresh(); Logger.WriteLine("Set player itemsource as playerdeck", "Tracker"); } ManaCurveMyDecks.SetDeck(DeckList.Instance.ActiveDeck); EnableMenuItems(DeckList.Instance.ActiveDeck != null); }
private async void SaveDeck(bool overwrite, SerializableVersion newVersion) { var deckName = TextBoxDeckName.Text; if (string.IsNullOrEmpty(deckName)) { var settings = new MetroDialogSettings { AffirmativeButtonText = "Set", DefaultText = deckName }; var name = await this.ShowInputAsync("No name set", "Please set a name for the deck", settings); if (String.IsNullOrEmpty(name)) { return; } deckName = name; TextBoxDeckName.Text = name; } /*while(DeckList.DecksList.Any(d => d.Name == deckName) && (!EditingDeck || !overwrite)) * { * var settings = new MetroDialogSettings {AffirmativeButtonText = "Set", DefaultText = deckName}; * var name = * await * this.ShowInputAsync("Name already exists", "You already have a deck with that name, please select a different one.", settings); * * if(String.IsNullOrEmpty(name)) * return; * * deckName = name; * TextBoxDeckName.Text = name; * }*/ if (_newDeck.Cards.Sum(c => c.Count) != 30) { var settings = new MetroDialogSettings { AffirmativeButtonText = "Yes", NegativeButtonText = "No" }; var result = await this.ShowMessageAsync("Not 30 cards", string.Format("Deck contains {0} cards. Is this what you want to save anyway?", _newDeck.Cards.Sum(c => c.Count)), MessageDialogStyle.AffirmativeAndNegative, settings); if (result != MessageDialogResult.Affirmative) { return; } } var previousVersion = _newDeck.Version; if (overwrite && (_newDeck.Version != newVersion)) { AddDeckHistory(); _newDeck.Version = newVersion; _newDeck.SelectedVersion = newVersion; _newDeck.HearthStatsDeckVersionId = ""; //UpdateDeckHistoryPanel(_newDeck, false); } if (EditingDeck && overwrite) { DeckList.Instance.Decks.Remove(_newDeck); //DeckPickerList.RemoveDeck(_newDeck); } var oldDeckName = _newDeck.Name; _newDeck.Name = deckName; var newDeckClone = (Deck)_newDeck.Clone(); DeckList.Instance.Decks.Add(newDeckClone); newDeckClone.LastEdited = DateTime.Now; DeckList.Save(); Logger.WriteLine("Saved Decks", "SaveDeck"); if (EditingDeck) { TagControlEdit.SetSelectedTags(new List <string>()); if (deckName != oldDeckName) { var statsEntry = DeckStatsList.Instance.DeckStats.FirstOrDefault(ds => ds.BelongsToDeck(_newDeck)); if (statsEntry != null) { if (overwrite) { statsEntry.Name = deckName; Logger.WriteLine("Deck has new name, updated deckstats", "SaveDeck"); } else { var newStatsEntry = DeckStatsList.Instance.DeckStats.FirstOrDefault(ds => ds.BelongsToDeck(_newDeck)); if (newStatsEntry == null) { newStatsEntry = new DeckStats(_newDeck); DeckStatsList.Instance.DeckStats.Add(newStatsEntry); } foreach (var game in statsEntry.Games) { newStatsEntry.AddGameResult(game.CloneWithNewId()); } Logger.WriteLine("cloned gamestats for \"Set as new\"", "SaveDeck"); } DeckStatsList.Save(); } } } if (Config.Instance.HearthStatsAutoUploadNewDecks) { Logger.WriteLine("auto uploading new/edited deck", "SaveDeck"); if (EditingDeck) { if (previousVersion != newVersion) { HearthStatsManager.UploadVersionAsync(newDeckClone, _originalDeck.HearthStatsIdForUploading, background: true); } else { HearthStatsManager.UpdateDeckAsync(newDeckClone, background: true); } } else { HearthStatsManager.UploadDeckAsync(newDeckClone, background: true); } } //after cloning the stats, otherwise new stats will be generated //DeckPickerList.AddAndSelectDeck(newDeckClone); EditingDeck = false; foreach (var tag in _newDeck.Tags) { SortFilterDecksFlyout.AddSelectedTag(tag); } if (Config.Instance.SelectedDeckType != DeckType.All) { if (newDeckClone.IsArenaDeck && Config.Instance.SelectedDeckType != DeckType.Arena) { DeckPickerList.SelectDeckType(DeckType.Arena); } else if (!newDeckClone.IsArenaDeck && Config.Instance.SelectedDeckType != DeckType.Constructed) { DeckPickerList.SelectDeckType(DeckType.Constructed); } } if (!DeckPickerList.SelectedClasses.Contains(HeroClassAll.All)) { HeroClassAll deckClass; if (Enum.TryParse(newDeckClone.Class, out deckClass)) { if (!DeckPickerList.SelectedClasses.Contains(deckClass)) { DeckPickerList.SelectClasses(new List <HeroClassAll> { deckClass }); } } } DeckPickerList.UpdateDecks(); DeckPickerList.SelectDeck(newDeckClone); CloseNewDeck(); ClearNewDeckSection(); }