コード例 #1
0
        private async Task CreateCustomStudy()
        {
            var deck = collection.Deck.Current();

            if (HandleNotCreatingDynamicDeckCases(deck))
            {
                return;
            }

            //Not in java and python ver, we do nothing if no cards are available
            if (studyOption != CustomStudyOption.CramMode)
            {
                var max = int.Parse(chosenLabelValue.Text);
                if (max == 0)
                {
                    return;
                }
            }

            customStudyFlyout.IsOpen = false;
            JsonObject dynamicDeck;
            long       deckId;
            var        currentCustomDeck = collection.Deck.GetDeckByName(DEFAULT_DYN_DECKNAME);

            if (currentCustomDeck != null)
            {
                deckId = (long)currentCustomDeck.GetNamedNumber("id");
                bool isDyn = collection.Deck.IsDyn(deckId);
                if (!isDyn)
                {
                    await UIHelper.ShowMessageDialog("Please rename the deck named \"" + DEFAULT_DYN_DECKNAME + "\" to another name first.");

                    return;
                }
                else
                {
                    collection.Sched.EmptyDyn(deckId);
                    dynamicDeck = currentCustomDeck;
                    collection.Deck.Select(deckId);
                }
            }
            else
            {
                deckId      = collection.Deck.NewDynamicDeck(DEFAULT_DYN_DECKNAME);
                dynamicDeck = collection.Deck.Get(deckId);
            }
            ProgressDialog dialog = new ProgressDialog();

            dialog.ProgressBarLabel = "Buidling custom study deck...";
            dialog.ShowInDeterminateStateNoStopAsync("Custom Study");

            CreateDynamicDeckConfigs(dynamicDeck, deck);

            var task = Task.Run(async() =>
            {
                var cards = collection.Sched.RebuildDyn();
                collection.SaveAndCommitAsync();

                await dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() =>
                {
                    if (cards == null || cards.Count == 0)
                    {
                        await UIHelper.ShowMessageDialog(UIConst.WARN_CUSTOM_STUDY_NOCARDS_MATCH);
                    }

                    CustomStudyCreateEvent?.Invoke(studyOption, deckId);
                    dialog.Hide();
                });
            });
        }