Beispiel #1
0
 private ActivationService CreateActivationService()
 {
     UpdatePromptHelper.LoadState();
     if (UpdatePromptHelper.Updated)
     {
         return(new ActivationService(this, typeof(ViewModels.UpdateViewModel)));
     }
     else
     {
         return(new ActivationService(this, typeof(ViewModels.MainViewModel)));
     }
 }
Beispiel #2
0
        protected override async void OnActivated(IActivatedEventArgs args)
        {
            base.OnActivated(args);
            await ActivationService.ActivateAsync(args);

            Helpers.ThemeHelper.SetThemeForJPDict();
            if (args is ToastNotificationActivatedEventArgs)
            {
                var         toastActivationArgs = args as ToastNotificationActivatedEventArgs;
                QueryString parameters          = QueryString.Parse(toastActivationArgs.Argument);
                Frame       rootFrame           = Window.Current.Content as Frame;
                if (parameters.Contains("action"))
                {
                    switch (parameters["action"])
                    {
                    case "detailResult":
                        string keyword = parameters["keyword"];
                        if (rootFrame == null)
                        {
                            rootFrame = new Frame();
                            rootFrame.NavigationFailed += OnNavigationFailed;
                            // Place the frame in the current Window
                            Window.Current.Content = rootFrame;
                        }
                        if (rootFrame.Content == null)
                        {
                            rootFrame.Navigate(typeof(MainPage));
                            rootFrame.Navigate(typeof(ResultPage), keyword);
                        }
                        else
                        {
                            if (rootFrame.CanGoBack)
                            {
                                rootFrame.GoBack();
                            }
                            rootFrame.Navigate(typeof(ResultPage), keyword);
                            await ApplicationView.GetForCurrentView().TryEnterViewModeAsync(ApplicationViewMode.Default);
                        }
                        break;
                    }
                }

                CopyMainDb();
                InitOnlineServiceAsync();
                Helpers.ThemeHelper.SetThemeForJPDict();
                // Do not repeat app initialization when the Window already has content,
                // just ensure that the window is active
                if (rootFrame == null)
                {
                    // Create a Frame to act as the navigation context and navigate to the first page
                    rootFrame = new Frame();
                    rootFrame.NavigationFailed += OnNavigationFailed;
                    // Place the frame in the current Window
                    Window.Current.Content = rootFrame;
                }

                if (rootFrame.Content == null)
                {
                    // When the navigation stack isn't restored navigate to the first page,
                    // configuring the new page by passing required information as a navigation
                    // parameter
                    UpdatePromptHelper.LoadState();
                    if (UpdatePromptHelper.Updated)
                    {
                        rootFrame.Navigate(typeof(UpdatePage));
                    }
                    else
                    {
                        rootFrame.Navigate(typeof(MainPage));
                    }
                }

                // Ensure the current window is active
                Window.Current.Activate();
                StoreServicesEngagementManager engagementManager = StoreServicesEngagementManager.GetDefault();
                string originalArgs = engagementManager.ParseArgumentsAndTrackAppLaunch(toastActivationArgs.Argument);

                // Use the originalArgs variable to access the original arguments
                // that were passed to the app.
            }

            if (args.Kind == ActivationKind.Protocol)
            {
                var uriArgs = args as ProtocolActivatedEventArgs;
                if (uriArgs != null)
                {
                    Frame rootFrame = Window.Current.Content as Frame;
                    CopyMainDb();
                    InitOnlineServiceAsync();
                    // Do not repeat app initialization when the Window already has content,
                    // just ensure that the window is active
                    if (rootFrame == null)
                    {
                        // Create a Frame to act as the navigation context and navigate to the first page
                        rootFrame = new Frame();
                        rootFrame.NavigationFailed += OnNavigationFailed;
                        // Place the frame in the current Window
                        Window.Current.Content = rootFrame;
                    }
                    if (rootFrame.Content == null)
                    {
                        if (uriArgs.Uri.Host == "result")
                        {
                            //rootFrame.BackStack.Insert(0,new PageStackEntry(typeof(MainPage), null, new EntranceNavigationTransitionInfo()));
                            rootFrame.Navigate(typeof(MainPage));
                            rootFrame.Navigate(typeof(ResultPage), Uri.UnescapeDataString(uriArgs.Uri.Query.Replace("?keyword=", "")));
                        }
                    }

                    // Ensure the current window is active
                    Window.Current.Activate();
                }
            }
        }
Beispiel #3
0
        protected async override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);
            NavigationCacheMode = NavigationCacheMode.Disabled;
            if (await ApplicationData.Current.LocalFolder.TryGetItemAsync("dict.db") != null)
            {
                var dict = await ApplicationData.Current.LocalFolder.GetFileAsync("dict.db");

                await dict.DeleteAsync();
            }
            var updateFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///update.db"));

            var mainDictFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///dict.db"));

            var kanjiDictFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///kanji.db"));

            await updateFile.CopyAsync(ApplicationData.Current.LocalFolder, "update.db", NameCollisionOption.ReplaceExisting);

            await mainDictFile.CopyAsync(ApplicationData.Current.LocalFolder, "dict.db", NameCollisionOption.ReplaceExisting);

            await kanjiDictFile.CopyAsync(ApplicationData.Current.LocalFolder, "kanji.db", NameCollisionOption.ReplaceExisting);

            await Task.Run(async() =>
            {
#pragma warning disable CS0612 // Type or member is obsolete
                ///Merge Notebook
                _noteConn.CreateTable <UserDefDict>();
#pragma warning restore CS0612 // Type or member is obsolete
                _noteConn.CreateTable <Note>();
                _noteConn.Execute("INSERT INTO Note(ItemId,Keyword,Reading,Definition) SELECT OriginID,JpChar,Kana,Explanation FROM UserDefDict WHERE OriginId NOT IN (SELECT ItemId FROM Note);");
                await SetProgess(25);
                string notePath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "note.db");
                QueryEngine.QueryEngine.MainDictQueryEngine._conn.Execute($"ATTACH '{notePath}' AS `note` KEY ''");
                QueryEngine.QueryEngine.MainDictQueryEngine._conn.Execute($"UPDATE Dict SET IsInNotebook = 1 WHERE ItemId IN (SELECT OriginID FROM note.UserDefDict)");
                await SetProgess(35);
                QueryEngine.QueryEngine.MainDictQueryEngine._conn.Execute($"DETACH DATABASE 'note'");
                _noteConn.Execute($"DROP TABLE IF EXISTS UserDefDict");
                _noteConn.Commit();


                ///Merge MainDict

                string updatepath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "update.db");
                QueryEngine.QueryEngine.MainDictQueryEngine._conn.Execute($"ATTACH '{updatepath}' AS `merge` KEY ''");
                await SetProgess(45);
                QueryEngine.QueryEngine.MainDictQueryEngine._conn.Execute("INSERT INTO Dict(ItemId,Keyword,Kanji,Reading,Pos,LoanWord,Definition,SeeAlso) SELECT AutoId,Keyword,Kanji,Reading,Pos,LoanWord,Definition,SeeAlso FROM merge.UpdateDict WHERE AutoId NOT IN (SELECT ItemId FROM Dict);");
                await SetProgess(85);
                QueryEngine.QueryEngine.MainDictQueryEngine._conn.Execute($"DETACH DATABASE 'merge'");

                //QueryEngine.QueryEngine.MainDictQueryEngine._conn.Commit();
            }).ContinueWith(async t =>
            {
                //_conn.Close();
                UpdatePromptHelper.StoreState();
                _noteConn.Close();
                _noteConn.Dispose();
                await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {
                    (Window.Current.Content as Frame).Navigate(typeof(MainPage), "");
                    (Window.Current.Content as Frame).BackStack.Clear();
                    SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed;
                });
            });
        }