コード例 #1
0
        private async void BtnDeleteRemoteDeck_OnClick(object sender, RoutedEventArgs e)
        {
            var btn = sender as Button;

            if (btn == null)
            {
                return;
            }
            var deck = btn.DataContext as Deck;

            if (deck == null)
            {
                return;
            }

            //show warning
            var result =
                await
                Helper.MainWindow.ShowMessageAsync("Delete " + deck.Name,
                                                   "This will permanentely delete the deck and all associated stats. Are you sure?",
                                                   MessageDialogStyle.AffirmativeAndNegative,
                                                   new MetroDialogSettings { AffirmativeButtonText = "delete", NegativeButtonText = "cancel" });

            if (result == MessageDialogResult.Affirmative)
            {
                var deleted = await HearthStatsManager.DeleteDeckAsync(deck, false, true);

                if (deleted)
                {
                    ListViewHearthStats.Items.Remove(deck);
                }
            }
        }
コード例 #2
0
        private async void DeleteDeck(Deck deck, bool saveAndUpdate = true)
        {
            if (deck == null)
            {
                return;
            }

            var deckStats = DeckStatsList.Instance.DeckStats.FirstOrDefault(ds => ds.BelongsToDeck(deck));

            if (deckStats != null)
            {
                if (deckStats.Games.Any())
                {
                    if (Config.Instance.KeepStatsWhenDeletingDeck)
                    {
                        var defaultDeck = DefaultDeckStats.Instance.GetDeckStats(deck.Class);
                        defaultDeck?.Games.AddRange(deckStats.Games);
                        DefaultDeckStats.Save();
                        Logger.WriteLine($"Moved deckstats for deck {deck.Name} to default stats", "Edit");
                    }
                    else
                    {
                        try
                        {
                            foreach (var game in deckStats.Games)
                            {
                                game.DeleteGameFile();
                            }
                            Logger.WriteLine("Deleted games from deck: " + deck.Name, "Edit");
                        }
                        catch (Exception)
                        {
                            Logger.WriteLine("Error deleting games", "Edit");
                        }
                    }
                }
                DeckStatsList.Instance.DeckStats.Remove(deckStats);
                if (saveAndUpdate)
                {
                    DeckStatsList.Save();
                }
                Logger.WriteLine("Removed deckstats from deck: " + deck.Name, "Edit");
            }

            if (HearthStatsAPI.IsLoggedIn && deck.HasHearthStatsId && await CheckHearthStatsDeckDeletion())
            {
                HearthStatsManager.DeleteDeckAsync(deck, false, true).Forget();
            }

            DeckList.Instance.Decks.Remove(deck);
            if (saveAndUpdate)
            {
                DeckList.Save();
                DeckPickerList.UpdateDecks();
                DeckPickerList.UpdateArchivedClassVisibility();
            }
            ListViewDeck.ItemsSource = null;
            Logger.WriteLine("Deleted deck: " + deck.Name, "Edit");
        }
コード例 #3
0
        private void DeleteDeck(Deck deck)
        {
            if (deck == null)
            {
                return;
            }

            var deckStats = DeckStatsList.Instance.DeckStats.FirstOrDefault(ds => ds.BelongsToDeck(deck));

            if (deckStats != null)
            {
                if (deckStats.Games.Any())
                {
                    if (Config.Instance.KeepStatsWhenDeletingDeck)
                    {
                        DefaultDeckStats.Instance.GetDeckStats(deck.Class).Games.AddRange(deckStats.Games);
                        DefaultDeckStats.Save();
                        Logger.WriteLine(string.Format("Moved deckstats for deck {0} to default stats", deck.Name), "Edit");
                    }
                    else
                    {
                        try
                        {
                            foreach (var game in deckStats.Games)
                            {
                                game.DeleteGameFile();
                            }
                            Logger.WriteLine("Deleted games from deck: " + deck.Name, "Edit");
                        }
                        catch (Exception)
                        {
                            Logger.WriteLine("Error deleting games", "Edit");
                        }
                    }
                }
                DeckStatsList.Instance.DeckStats.Remove(deckStats);
                DeckStatsList.Save();
                Logger.WriteLine("Removed deckstats from deck: " + deck.Name, "Edit");
            }

            HearthStatsManager.DeleteDeckAsync(deck, false, true);

            DeckList.Instance.Decks.Remove(deck);
            DeckList.Save();
            ;
            //DeckPickerList.RemoveDeck(deck);
            DeckPickerList.UpdateDecks();
            ListViewDeck.ItemsSource = null;
            Logger.WriteLine("Deleted deck: " + deck.Name, "Edit");
        }
コード例 #4
0
        private async void MenuItemDeleteHearthStatsDeck_OnClick(object sender, RoutedEventArgs e)
        {
            var decks = DeckPickerList.SelectedDecks;

            if (!decks.Any(d => d.HasHearthStatsId))
            {
                await this.ShowMessageAsync("None synced", "None of the selected decks have HearthStats ids.");

                return;
            }
            var dialogResult =
                await
                this.ShowMessageAsync("Delete " + decks.Count + " deck(s) on HearthStats?",
                                      "This will delete the deck(s) and all associated games ON HEARTHSTATS, as well as reset all stored IDs. The decks or games in the tracker (this) will NOT be deleted.\n\n Are you sure?",
                                      MessageDialogStyle.AffirmativeAndNegative,
                                      new MessageDialogs.Settings {
                AffirmativeButtonText = "delete", NegativeButtonText = "cancel"
            });

            if (dialogResult != MessageDialogResult.Affirmative)
            {
                return;
            }
            var controller = await this.ShowProgressAsync("Deleting decks...", "");

            var deleteSuccessful = await HearthStatsManager.DeleteDeckAsync(decks);

            await controller.CloseAsync();

            if (!deleteSuccessful)
            {
                await
                this.ShowMessageAsync("Problem deleting decks",
                                      "There was a problem deleting the deck. All local IDs will be reset anyway, you can manually delete the deck online.");
            }
            foreach (var deck in decks)
            {
                deck.ResetHearthstatsIds();
                deck.DeckStats.HearthStatsDeckId = null;
                deck.DeckStats.Games.ForEach(g => g.ResetHearthstatsIds());
                deck.Versions.ForEach(v =>
                {
                    v.DeckStats.HearthStatsDeckId = null;
                    v.DeckStats.Games.ForEach(g => g.ResetHearthstatsIds());
                    v.ResetHearthstatsIds();
                });
            }
            DeckList.Save();
        }