private async void btnClearCache_Click(object sender, RoutedEventArgs e) { if (MessageBox.Show("确定要清理缓存?", "警告", MessageBoxButton.OKCancel) == MessageBoxResult.Cancel) { return; } using (new WaitPopup("正在清理缓存", this)) { await Task.Run(() => { Util.ClearImageCache(); var cachedNotePathList = ImageDao.GetCachedNotePathList(); if (null == cachedNotePathList) { return; } foreach (var notePath in cachedNotePathList) { var noteEntity = NoteDao.Inst.GetNoteByNotePath(notePath); if (null == noteEntity) { continue; } noteEntity.Content = SyncCore.GetInst().ConvertImageLocalPathToRemoteUrl(noteEntity.Content); NoteDao.Inst.ModifyIfExist(noteEntity); ImageDao.DeleteImageByBelongedNotePath(noteEntity.NotePath); } }); } showCacheSize(); }
private void webBrowser_LoadCompleted(object sender, NavigationEventArgs e) { // 此处填写 access token callback 地址 if (e.Uri.ToString().Contains("")) { var splits = e.Uri.Query.Split('='); if (splits.Length <= 1) { return; } ConstantPool.AccessToken = splits[1]; MyDataContext.CreatetDatabaseIfNeeded(); SyncCore.GetInst().InitializeSyncCore(ConstantPool.AccessToken, ConstantPool.ScreenWidth); btnGoHome.Visibility = Visibility.Visible; logout(); } #if DEBUG else if (e.Uri.ToString().Contains("https://note.youdao.com/oauth/login_mobile.html")) { const string username = ""; // 填写测试用户名 const string password = ""; // 填写测试用户密码 webBrowser.InvokeScript("eval", "document.getElementById('user').value = '" + username + "';document.getElementById('pass').value = '" + password + "';"); } #endif }
private async Task deleteNote() { using (new WaitPopup("正在删除笔记", this)) { try { var noteEntity = NoteDao.Inst.GetNoteById(NoteEntity.Id); if (noteEntity.NoteStatus == NoteStatus.Added) { NoteDao.Inst.DeleteIfExist(NoteEntity.Id); Toast.Prompt("笔记已被删除!"); } else { NoteDao.Inst.MarkAsDeletedIfExist(NoteEntity.Id); // 若网络可用,直接将远程服务器上的笔记删除 if (Util.IsNetworkAvailable()) { await SyncCore.GetInst().DeleteNoteAsync(noteEntity, (type, msg) => { Dispatcher.BeginInvoke(() => { switch (type) { case SyncCompletedType.Note: Toast.Prompt("笔记已被删除"); break; case SyncCompletedType.Failed: LoggerFactory.GetLogger().Error("删除笔记失败", (Exception)msg); Toast.Prompt("额,删除笔记失败,请稍后重试!"); break; } }); }); } } if (NavigationService.CanGoBack) { NavigationService.GoBack(); } } catch (Exception ex) { LoggerFactory.GetLogger().Error("删除笔记失败", ex); Toast.Prompt("额,删除笔记失败,请稍后重试!"); } } }
public async Task SycnNotebooksAsync() { await SyncCore.GetInst().SyncNotebooksAsync((type, obj) => { switch (type) { case SyncCompletedType.Notebook: Toast.Prompt("笔记本同步成功"); break; case SyncCompletedType.Failed: LoggerFactory.GetLogger().Error("笔记本同步失败", (Exception)obj); Toast.Prompt("额,笔记本同步失败,请稍后再试"); break; } }); }
private async void btnSync_Click(object sender, RoutedEventArgs e) { if (!Util.IsNetworkAvailable()) { Toast.Prompt("额,网络不可用,请检查网络配置!"); return; } using (new WaitPopup("正在同步笔记", this)) { try { await SyncCore.GetInst().SyncNoteAsync(NoteEntity, (type, msg) => { Dispatcher.BeginInvoke(() => { switch (type) { case SyncCompletedType.Note: NoteEntity = NoteDao.Inst.GetNoteById(NoteEntity.Id); ContentWebBrowser.NavigateToString(NoteEntity.Content); tbTitle.Text = NoteEntity.Title; Toast.Prompt("笔记修改成功!"); break; case SyncCompletedType.Failed: LoggerFactory.GetLogger().Error("同步笔记失败", (Exception)msg); Toast.Prompt("额,同步笔记失败,请稍后重试!"); break; } }); }); } catch (Exception ex) { LoggerFactory.GetLogger().Error("同步笔记失败", ex); Toast.Prompt("额,同步笔记失败,请稍后重试!"); } } }
private async Task loadNote() { using (var waitPopup = new WaitPopup("正在加载笔记", this)) { try { tbTitle.Text = NoteEntity.Title; tbNotebook.Text = NoteEntity.NotebookName; if (NoteUtil.NeedCache(NoteEntity.Content)) { if (Util.IsNetworkAvailable()) { waitPopup.SetTip("正在下载图片"); NoteEntity.Content = await SyncCore.GetInst().DownloadImageToLocalAsync(NoteEntity.NotePath, NoteEntity.Content, (count, totalCount) => { waitPopup.SetTip("正在下载图片:" + count + "/" + totalCount); }); NoteDao.Inst.ModifyIfExist(NoteEntity); ContentWebBrowser.NavigateToString(NoteEntity.Content); } else { Toast.Prompt("额,网络不可用,图片未能下载!"); } } else { ContentWebBrowser.NavigateToString(NoteEntity.Content); } } catch (Exception ex) { LoggerFactory.GetLogger().Error("", ex); Toast.Prompt("额,发生不可预知的错误,请稍后重试!"); } } }
private async void deleteNoteMenuItem_Click(object sender, RoutedEventArgs e) { if (MessageBox.Show("确定要删除该条笔记?", "提示", MessageBoxButton.OKCancel) == MessageBoxResult.Cancel) { return; } var menuItem = sender as MenuItem; if (menuItem == null) { LoggerFactory.GetLogger().Error("NoteList.xaml.cs::deleteNoteMenuItem_Click menuItem 为空"); Toast.Prompt("额,删除笔记失败,请稍后重试!"); return; } var noteId = menuItem.CommandParameter as string; if (string.IsNullOrEmpty(noteId)) { LoggerFactory.GetLogger().Error("NoteList.xaml.cs::deleteNoteMenuItem_Click noteId 为空"); Toast.Prompt("额,删除笔记失败,请稍后重试!"); return; } Debug.WriteLine(("即将删除笔记:" + noteId)); var noteEntity = NoteDao.Inst.GetNoteById(noteId); if (null == noteEntity) { LoggerFactory.GetLogger().Error("NoteList.xaml.cs::deleteNoteMenuItem_Click noteEntity 为空"); Toast.Prompt("额,删除笔记失败,请稍后重试!"); return; } using (new WaitPopup("正在删除笔记")) { if (noteEntity.NoteStatus == NoteStatus.Added) { NoteDao.Inst.DeleteIfExist(noteId); Toast.Prompt("笔记已被删除!"); Debug.WriteLine("已删除笔记:" + noteId); } else { NoteDao.Inst.MarkAsDeletedIfExist(noteId); // 若网络可用,直接将远程服务器上的笔记删除 if (Util.IsNetworkAvailable()) { await SyncCore.GetInst().DeleteNoteAsync(noteEntity, (type, msg) => { Dispatcher.BeginInvoke(() => { switch (type) { case SyncCompletedType.Note: Toast.Prompt("笔记已被删除!"); Debug.WriteLine("已删除笔记:" + noteId); break; case SyncCompletedType.Failed: LoggerFactory.GetLogger().Error("删除笔记失败", (Exception)msg); Toast.Prompt("额,笔记删除失败,请稍后重试!"); break; } }); }); } } } }
private async void OnSyncAppbarButtonClicked(object sender, EventArgs e) { try { var pivotItem = MainPivot.SelectedItem as PivotItem; if (null == pivotItem) { return; } if (pivotItem.Name == null) { return; } switch ((pivotItem.Name)) { case "NoteListPivotItem": using (var waitPopup = new WaitPopup("正在同步笔记中", this)) { if (NotebookList.SelectedNotebook != null) { SyncCore.GetInst().SyncNoteChanged += (noteSyncEventArgs) => { OnSyncNoteChanged(waitPopup, noteSyncEventArgs); }; await SyncCore.GetInst().SyncNotebookNotesAsync(NotebookList.SelectedNotebook.Name, NotebookList.SelectedNotebook.Path, (type, msg) => { switch (type) { case SyncCompletedType.All: Toast.Prompt("笔记同步完成"); break; case SyncCompletedType.AddedNote: waitPopup.SafeInvoke(() => waitPopup.SetTip(msg.ToString())); break; case SyncCompletedType.Failed: Toast.Prompt("额,同步笔记失败,请稍后重试!"); LoggerFactory.GetLogger().Error("同步笔记失败", (Exception)msg); break; } }); // 取消事件订阅 SyncCore.GetInst().SyncNoteChanged -= (noteSyncEventArgs) => { OnSyncNoteChanged(waitPopup, noteSyncEventArgs); }; } else { Toast.Prompt("额,没有选择任何笔记本欸!"); } } break; case "NotebookPivotItem": using (new WaitPopup("正在同步笔记本列表", this)) { await NotebookList.SycnNotebooksAsync(); NotebookList.SetSelectedNotebook(NotebookList.GetDefaultSelectedNotebook()); } break; } } catch (Exception ex) { LoggerFactory.GetLogger().Error("同步发生错误", ex); Toast.Prompt("额,发生不可预知的错误,请稍后重试!"); } }
// 激活应用程序(置于前台)时执行的代码 // 此代码在首次启动应用程序时不执行 private void Application_Activated(object sender, ActivatedEventArgs e) { SyncCore.GetInst().InitializeSyncCore(ConstantPool.AccessToken, ConstantPool.ScreenWidth); }
// 应用程序启动(例如,从“开始”菜单启动)时执行的代码 // 此代码在重新激活应用程序时不执行 private void Application_Launching(object sender, LaunchingEventArgs e) { SyncCore.GetInst().InitializeSyncCore(ConstantPool.AccessToken, ConstantPool.ScreenWidth); IsoStoreUtil.SaveFilesToIsoStore("style"); //Task.Factory.StartNew(ImageDao.DeleteNoRootImages); }