private async void OkButtonClick(object sender, RoutedEventArgs e)
        {
            string deckName = Utils.GetValidName(deckNameTextBox.Text);
            string noteName = Utils.GetValidName(noteTypeNameTextBox.Text);

            bool isValid = await CheckDeckAndNoteName(deckName, noteName);

            if (!isValid)
            {
                return;
            }

            isOkPress = true;
            isError   = false;
            addDeckFlyout.Hide();
            long?deckId = collection.Deck.AddOrResuedDeck(deckName, true);

            if (deckId == null)
            {
                await UIHelper.ShowMessageDialog("Unexpected error!");

                return;
            }

            long           modelCopyFromID = modelView.GetSelectedModelId();
            ProgressDialog dialog          = new ProgressDialog();

            dialog.ProgressBarLabel = "";
            dialog.ShowInDeterminateStateNoStopAsync("Add new deck");

            var task = Task.Run(async() =>
            {
                var deckJson = collection.Deck.Get(deckId);
                JsonObject model;
                if (!String.IsNullOrWhiteSpace(noteName))
                {
                    var modelCloneFrom = collection.Models.Get(modelCopyFromID);
                    model         = collection.Models.Copy(modelCloneFrom);
                    model["name"] = JsonValue.CreateStringValue(noteName);
                }
                else
                {
                    model = collection.Models.Get(modelCopyFromID);
                }
                deckJson["mid"] = model["id"];
                model["did"]    = JsonValue.CreateNumberValue((long)deckId);
                collection.Models.Save(model);
                collection.Deck.Save(deckJson);
                collection.SaveAndCommit();

                await dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    dialog.Hide();
                    NewDeckCreatedEvent?.Invoke((long)deckId);
                });
            });
        }
예제 #2
0
 private async void NewDeckCreatedEventHandler(long deckId)
 {
     await mainPage.CurrentDispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
     {
         deckListViewModel.AddNewDeck(deckId);
         var deckInfor = deckListViewModel.GetDeck(deckId);
         deckListViewModel.ResortNonSubdeck(deckInfor);
         NewDeckCreatedEvent?.Invoke(deckId);
     });
 }