상속: SyncElement
예제 #1
0
        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();
        }
예제 #2
0
        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
        }
예제 #3
0
        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("额,删除笔记失败,请稍后重试!");
                }
            }
        }
예제 #4
0
        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;
                }
            });
        }
예제 #5
0
        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("额,同步笔记失败,请稍后重试!");
                }
            }
        }
예제 #6
0
        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("额,发生不可预知的错误,请稍后重试!");
                }
            }
        }
예제 #7
0
        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;
                                }
                            });
                        });
                    }
                }
            }
        }
예제 #8
0
        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("额,发生不可预知的错误,请稍后重试!");
            }
        }
예제 #9
0
 // 激活应用程序(置于前台)时执行的代码
 // 此代码在首次启动应用程序时不执行
 private void Application_Activated(object sender, ActivatedEventArgs e)
 {
     SyncCore.GetInst().InitializeSyncCore(ConstantPool.AccessToken, ConstantPool.ScreenWidth);
 }
예제 #10
0
 // 应用程序启动(例如,从“开始”菜单启动)时执行的代码
 // 此代码在重新激活应用程序时不执行
 private void Application_Launching(object sender, LaunchingEventArgs e)
 {
     SyncCore.GetInst().InitializeSyncCore(ConstantPool.AccessToken, ConstantPool.ScreenWidth);
     IsoStoreUtil.SaveFilesToIsoStore("style");
     //Task.Factory.StartNew(ImageDao.DeleteNoRootImages);
 }