|
@@ -1,4 +1,8 @@
|
|
-using Prism.Mvvm;
|
|
|
|
|
|
+using PDF_Office.CustomControl;
|
|
|
|
+using PDF_Office.Helper;
|
|
|
|
+using PDF_Office.Model;
|
|
|
|
+using Prism.Commands;
|
|
|
|
+using Prism.Mvvm;
|
|
using Prism.Services.Dialogs;
|
|
using Prism.Services.Dialogs;
|
|
using System;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.Generic;
|
|
@@ -10,10 +14,142 @@ namespace PDF_Office.ViewModels.Dialog.Redaction
|
|
{
|
|
{
|
|
public class PageMarkDialogViewModel : BindableBase, IDialogAware
|
|
public class PageMarkDialogViewModel : BindableBase, IDialogAware
|
|
{
|
|
{
|
|
- public string Title =>"";
|
|
|
|
|
|
+ public string Title => "";
|
|
|
|
|
|
public event Action<IDialogResult> RequestClose;
|
|
public event Action<IDialogResult> RequestClose;
|
|
|
|
|
|
|
|
+ public DelegateCommand OkCommand { get; set; }
|
|
|
|
+
|
|
|
|
+ public DelegateCommand CancelCommand { get; set; }
|
|
|
|
+
|
|
|
|
+ public DelegateCommand<string> CheckedCommand { get; set; }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 当前页
|
|
|
|
+ /// </summary>
|
|
|
|
+ public int CurrentPageIndex { get; set; }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ private string pagecount = "/1";
|
|
|
|
+
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 页面总数
|
|
|
|
+ /// </summary>
|
|
|
|
+ public string PageCount
|
|
|
|
+ {
|
|
|
|
+ get { return pagecount; }
|
|
|
|
+ set
|
|
|
|
+ {
|
|
|
|
+ SetProperty(ref pagecount, value);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 页码集合
|
|
|
|
+ /// </summary>
|
|
|
|
+ public List<int> PageList = new List<int>();
|
|
|
|
+
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 文档页面总数
|
|
|
|
+ /// </summary>
|
|
|
|
+ public int pageCount = 0;
|
|
|
|
+
|
|
|
|
+ private string custompage;
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// 自定义页面
|
|
|
|
+ /// </summary>
|
|
|
|
+ public string CustomPage
|
|
|
|
+ {
|
|
|
|
+ get { return custompage; }
|
|
|
|
+ set
|
|
|
|
+ {
|
|
|
|
+ SetProperty(ref custompage, value);
|
|
|
|
+ if(!string.IsNullOrEmpty(value))
|
|
|
|
+ {
|
|
|
|
+ CheckCustomPage();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ public PageMarkDialogViewModel()
|
|
|
|
+ {
|
|
|
|
+ OkCommand = new DelegateCommand(ok);
|
|
|
|
+ CancelCommand = new DelegateCommand(cancel);
|
|
|
|
+ CheckedCommand = new DelegateCommand<string>(check);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void cancel()
|
|
|
|
+ {
|
|
|
|
+ RequestClose.Invoke(new DialogResult(ButtonResult.Cancel));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void ok()
|
|
|
|
+ {
|
|
|
|
+ DialogParameters valuePairs = new DialogParameters();
|
|
|
|
+ valuePairs.Add(ParameterNames.PageList, PageList);
|
|
|
|
+ RequestClose.Invoke(new DialogResult(ButtonResult.OK, valuePairs));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void CheckCustomPage()
|
|
|
|
+ {
|
|
|
|
+ var result = CommonHelper.GetPagesInRange(ref PageList,CustomPage,pageCount,new char[]{ ','},new char[] { '-'});
|
|
|
|
+ if(!result)
|
|
|
|
+ {
|
|
|
|
+ AlertsMessage alertsMessage = new AlertsMessage();
|
|
|
|
+ alertsMessage.ShowDialog("","页码错误","ok");
|
|
|
|
+ CustomPage = "";
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void check(string args)
|
|
|
|
+ {
|
|
|
|
+ switch (args)
|
|
|
|
+ {
|
|
|
|
+ case "Old":
|
|
|
|
+ PageList = new List<int>();
|
|
|
|
+ for (int i = 1; i <=pageCount; i++)
|
|
|
|
+ {
|
|
|
|
+ if (i % 2 != 0)
|
|
|
|
+ {
|
|
|
|
+ PageList.Add(i-1);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case "Even":
|
|
|
|
+ PageList = new List<int>();
|
|
|
|
+ for (int i = 1; i <= pageCount; i++)
|
|
|
|
+ {
|
|
|
|
+ if (i % 2 == 0)
|
|
|
|
+ {
|
|
|
|
+ PageList.Add(i - 1);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case "All":
|
|
|
|
+ PageList = new List<int>();
|
|
|
|
+ for(int i=0;i<pageCount;i++)
|
|
|
|
+ {
|
|
|
|
+ PageList.Add(i);
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case "Custom":
|
|
|
|
+ if(!string.IsNullOrEmpty(CustomPage))
|
|
|
|
+ {
|
|
|
|
+ CheckCustomPage();
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ default:
|
|
|
|
+ case "Current":
|
|
|
|
+ PageList = new List<int>();
|
|
|
|
+ PageList.Add(CurrentPageIndex);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
public bool CanCloseDialog()
|
|
public bool CanCloseDialog()
|
|
{
|
|
{
|
|
return true;
|
|
return true;
|
|
@@ -26,7 +162,13 @@ namespace PDF_Office.ViewModels.Dialog.Redaction
|
|
|
|
|
|
public void OnDialogOpened(IDialogParameters parameters)
|
|
public void OnDialogOpened(IDialogParameters parameters)
|
|
{
|
|
{
|
|
-
|
|
|
|
|
|
+ int page = parameters.GetValue<int>(ParameterNames.PageCount);
|
|
|
|
+ if(page>0)
|
|
|
|
+ {
|
|
|
|
+ PageCount = "/ " + page;
|
|
|
|
+ pageCount = page;
|
|
|
|
+ }
|
|
|
|
+ CurrentPageIndex = parameters.GetValue<int>(ParameterNames.CurrentPageIndex);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|