private ActivationService CreateActivationService() { UpdatePromptHelper.LoadState(); if (UpdatePromptHelper.Updated) { return(new ActivationService(this, typeof(ViewModels.UpdateViewModel))); } else { return(new ActivationService(this, typeof(ViewModels.MainViewModel))); } }
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(); } } }
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; }); }); }