/// <summary> /// MainPage的初始化工作 /// </summary> private async void MainPageInit() { // 设置标题栏样式,为上传信息加载默认数据,显示等待提示 AppTools.SetTitleBarColorInit(App.Current.RequestedTheme == ApplicationTheme.Dark); UploadInfoCollection.Add(new KeyValue(AppTools.GetReswLanguage("DefaultUploadInfoTitle"), AppTools.GetReswLanguage("None"))); UploadInfoCollection.Add(new KeyValue(AppTools.GetReswLanguage("ImageSize"), AppTools.GetReswLanguage("None"))); UploadInfoCollection.Add(new KeyValue(AppTools.GetReswLanguage("ImageType"), AppTools.GetReswLanguage("None"))); UploadInfoCollection.Add(new KeyValue(AppTools.GetReswLanguage("CreateDate"), AppTools.GetReswLanguage("None"))); WaittingTip.Show(); try { // 检查OneDrive授权并获取应用文件夹 await App.OneDriveTools.OneDriveAuthorize(); // 检查云端数据库是否需要同步最新更改 bool isNoNeedSync = await App.OneDriveTools.CheckLastAsync(); if (!isNoNeedSync) { // 从别的客户端处修改了数据,那么本机进行数据同步 await App.OneDriveTools.SyncCloud(); } // 建立数据库连接 App.Db = await App.OneDriveTools.GetImgMetaList(); // 加载分组 GroupInit(); // 加载最近上传列表 LastestInit(); } catch (Exception ex) { // 这里可能会出现授权失败的情况 if (ex.GetType() == typeof(UnauthorizedAccessException)) { } } // 设立图片操作的快捷键 Window.Current.CoreWindow.Dispatcher.AcceleratorKeyActivated += Dispatcher_AcceleratorKeyActivated; // 每10秒检测一次数据库状态,一旦数据库需要同步,则执行同步操作 AutoUpdateTimer.Interval = new TimeSpan(0, 0, 10); AutoUpdateTimer.Tick += AutoUpdateDatabase; AutoUpdateTimer.Start(); }
private async void LinkButton_Click(object sender, RoutedEventArgs e) { var tip = new HoldMaskTip(AppTools.GetReswLanguage("WaittingTip")); tip.Show(); // 开始走OneDrive登录流程 bool isAuth = await App.OneDriveTools.OneDriveAuthorize(); // 如果用户成功登录并同意授权 if (isAuth) { AppTools.WriteLocalSetting(AppSettings.IsOneDriveAuthorized, "True"); // 检查用户云端内是否有图片存储 bool hasCloudMeta = await App.OneDriveTools.EnsureCloudMetaExist(); if (hasCloudMeta) { // 有的话进行同步 await App.OneDriveTools.ReplaceDatabase(); App.Db = await App.OneDriveTools.GetImgMetaList(); using (App.Db) { if (App.Db.Images.Count() > 0) { string url = App.Db.Images.First().URL; int authKeyIndex = url.IndexOf("key="); string authkey = url.Substring(authKeyIndex + 4); AppTools.WriteLocalSetting(AppSettings.AuthKey, authkey); } } } else { // 没有就在应用文件夹里建一个 await App.OneDriveTools.DatabaseInit(); } tip.Close(); // 要求用户输入授权码 string ak = AppTools.GetLocalSetting(AppSettings.AuthKey, ""); if (string.IsNullOrEmpty(ak)) { // 弹出授权码输入框 bool isCancel = false; var authDialog = new AuthKeyDialog(); authDialog.PrimaryButtonClick += (_s, _e) => { _e.Cancel = true; authDialog.IsPrimaryButtonEnabled = false; string key = authDialog.AuthKeyBox.Text.Trim(); if (string.IsNullOrEmpty(key)) { var msg = AppTools.GetReswLanguage("AuthKeyEmpty"); new PopupMaskTip(msg).Show(); } else { AppTools.WriteLocalSetting(AppSettings.AuthKey, key); authDialog.Hide(); } authDialog.IsPrimaryButtonEnabled = true; }; authDialog.CloseButtonClick += (_s, _e) => { isCancel = true; AppTools.WriteLocalSetting(AppSettings.AuthKey, ""); }; await authDialog.ShowAsync(); if (!isCancel) { var tipDialog = new TipDialog(AppTools.GetReswLanguage("DefaultTipTitle"), AppTools.GetReswLanguage("AuthorizeSuccess")); await tipDialog.ShowAsync(); } else { var tipDialog = new TipDialog(AppTools.GetReswLanguage("DefaultTipTitle"), AppTools.GetReswLanguage("AuthorizeCancel")); await tipDialog.ShowAsync(); } } // 跳转至首页 Frame rootFrame = Window.Current.Content as Frame; AppTools.WriteLocalSetting(AppSettings.IsFirstRun, "False"); rootFrame.Navigate(typeof(MainPage)); } else { tip.Close(); string title = AppTools.GetReswLanguage("AuthErrorTitle"); string content = AppTools.GetReswLanguage("AuthErrorContent"); var dialog = new TipDialog(title, content); await dialog.ShowAsync(); } }