|
@@ -294,6 +294,20 @@ namespace PDF_Office.ViewModels.PageEdit
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private bool canPaste = false;
|
|
|
+ /// <summary>
|
|
|
+ /// 是否可以粘贴
|
|
|
+ /// </summary>
|
|
|
+ public bool CanPaste
|
|
|
+ {
|
|
|
+ get { return canPaste; }
|
|
|
+ set
|
|
|
+ {
|
|
|
+ SetProperty(ref canPaste, value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
#endregion
|
|
|
|
|
|
#region 命令
|
|
@@ -309,6 +323,21 @@ namespace PDF_Office.ViewModels.PageEdit
|
|
|
/// </summary>
|
|
|
public DelegateCommand<object> KeyDown { get; set; }
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 粘贴
|
|
|
+ /// </summary>
|
|
|
+ public DelegateCommand PasteCommand { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 复制
|
|
|
+ /// </summary>
|
|
|
+ public DelegateCommand CopyCommand { get; set; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 剪切
|
|
|
+ /// </summary>
|
|
|
+ public DelegateCommand CutCommand { get; set; }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 替换文件
|
|
|
/// </summary>
|
|
@@ -390,16 +419,33 @@ namespace PDF_Office.ViewModels.PageEdit
|
|
|
ZoomInCommand = new DelegateCommand(ZoomInCommandEvent, CanZoomIn).ObservesProperty(() => ZoomIndex);
|
|
|
ZoomOutCommand = new DelegateCommand(ZoomOutCommandEvent, CanZoomOut).ObservesProperty(() => ZoomIndex);
|
|
|
ShowPageSizeCommand = new DelegateCommand(ShowPageSize);
|
|
|
+ CopyCommand = new DelegateCommand(copy);
|
|
|
+ PasteCommand = new DelegateCommand(paste,CanPasteExcute).ObservesProperty(() => CanPaste);
|
|
|
+ CutCommand = new DelegateCommand(cut);
|
|
|
|
|
|
//订阅页面刷新事件
|
|
|
eventAggregator.GetEvent<PageEditRefreshEvent>().Subscribe(OnPageEditRefreshEvent, e => e.Unicode == unicode);
|
|
|
|
|
|
+ CacheFilePath.Instance.PropertyChanged += Instance_PropertyChanged;
|
|
|
|
|
|
RefreshPageRangeItem();
|
|
|
}
|
|
|
|
|
|
|
|
|
+
|
|
|
#region 事件
|
|
|
+ private void Instance_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
|
|
+ {
|
|
|
+ if(e.PropertyName=="CopyDoc")
|
|
|
+ {
|
|
|
+ if(CacheFilePath.Instance.CopyDoc!=null)
|
|
|
+ {
|
|
|
+ CanPaste = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 替换功能的逻辑
|
|
|
/// </summary>
|
|
@@ -906,6 +952,120 @@ namespace PDF_Office.ViewModels.PageEdit
|
|
|
|
|
|
#region 方法
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 剪切
|
|
|
+ /// </summary>
|
|
|
+ private void cut()
|
|
|
+ {
|
|
|
+ CacheFilePath.Instance.CopyDoc = null;
|
|
|
+ CacheFilePath.Instance.CopyDoc = CPDFDocument.CreateDocument();
|
|
|
+ List<int> pages = new List<int>();
|
|
|
+ for (int i = 0; i < PageEditItems.Count; i++)
|
|
|
+ {
|
|
|
+ if (PageEditItems[i].Selected)
|
|
|
+ {
|
|
|
+ pages.Add(i + 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ bool result = CacheFilePath.Instance.CopyDoc.ImportPages(PDFViewer.Document, String.Join(",", pages));
|
|
|
+ if (!result)
|
|
|
+ {
|
|
|
+ ShowToast("复制失败");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ DoRemoveSelectedPages();
|
|
|
+ ReloadAfterOption(true, true, Tuple.Create(0, PDFViewer.Document.PageCount));
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 复制
|
|
|
+ /// </summary>
|
|
|
+ private void copy()
|
|
|
+ {
|
|
|
+ //付费锁
|
|
|
+ //if (!App.IsActive())
|
|
|
+ //{
|
|
|
+ // IAPFunctionDialog dialog = new IAPFunctionDialog("PageEdit");
|
|
|
+ // dialog.ShowDialog();
|
|
|
+ // return;
|
|
|
+ //}
|
|
|
+ CacheFilePath.Instance.CopyDoc = null;
|
|
|
+ CacheFilePath.Instance.CopyDoc = CPDFDocument.CreateDocument();
|
|
|
+ List<int> pages = new List<int>();
|
|
|
+ for(int i=0;i<PageEditItems.Count;i++)
|
|
|
+ {
|
|
|
+ if(PageEditItems[i].Selected)
|
|
|
+ {
|
|
|
+ pages.Add(i + 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ bool result = CacheFilePath.Instance.CopyDoc.ImportPages(PDFViewer.Document, String.Join(",",pages));
|
|
|
+ if (!result)
|
|
|
+ {
|
|
|
+ ShowToast("复制失败");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 是否可以粘贴
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ private bool CanPasteExcute()
|
|
|
+ {
|
|
|
+ return this.CanPaste;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 粘贴
|
|
|
+ /// </summary>
|
|
|
+ private async void paste()
|
|
|
+ {
|
|
|
+ //付费锁
|
|
|
+ //if (!App.IsActive())
|
|
|
+ //{
|
|
|
+ // IAPFunctionDialog dialog = new IAPFunctionDialog("PageEdit");
|
|
|
+ // dialog.ShowDialog();
|
|
|
+ // return;
|
|
|
+ //}
|
|
|
+ IsLoading = Visibility.Visible;
|
|
|
+ int insertindex = maxSelectedIndex;
|
|
|
+ insertindex++;
|
|
|
+ int pagecount = CacheFilePath.Instance.CopyDoc.PageCount;
|
|
|
+ bool result = PDFViewer.Document.ImportPagesAtIndex(CacheFilePath.Instance.CopyDoc, "1-" + pagecount, insertindex);
|
|
|
+ if (!result)
|
|
|
+ {
|
|
|
+ IsLoading = Visibility.Collapsed;
|
|
|
+ ShowToast("粘贴失败");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ //UI层插入
|
|
|
+ for (int i = 0; i < pagecount; i++)
|
|
|
+ {
|
|
|
+ var item = GetNewPageEditItem(i);
|
|
|
+ PageEditItems.Insert(insertindex + i, item);
|
|
|
+ }
|
|
|
+
|
|
|
+ //加一点延时才能显示选中效果
|
|
|
+ await Task.Delay(200);
|
|
|
+ List<int> pageRange = new List<int>();
|
|
|
+ for (int i = 0; i < pagecount; i++)
|
|
|
+ {
|
|
|
+ pageRange.Add(insertindex + i + 1);
|
|
|
+ }
|
|
|
+ NotifyUIToRefresh(pageRange);
|
|
|
+
|
|
|
+ //刷新页码等
|
|
|
+ ReloadAfterOption(true, true, new Tuple<int, int>(0, PDFViewer.Document.PageCount));
|
|
|
+ IsLoading = Visibility.Collapsed;
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 页面编辑执行Undo操作的方法
|
|
|
/// </summary>
|
|
@@ -1101,6 +1261,23 @@ namespace PDF_Office.ViewModels.PageEdit
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 获取已选中的页面集合
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ private List<int> getSelectedPage()
|
|
|
+ {
|
|
|
+ List<int> pages = new List<int>();
|
|
|
+ for (int i = 0; i < PageEditItems.Count; i++)
|
|
|
+ {
|
|
|
+ if (PageEditItems[i].Selected)
|
|
|
+ {
|
|
|
+ pages.Add(i);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return pages;
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 删除选中项的方法 不带Reload操作
|
|
|
/// 方便其他逻辑中调用
|