QuickToolsContentViewModel.cs 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. using ComPDFKitViewer.PdfViewer;
  2. using PDF_Office.Helper;
  3. using PDF_Office.Model;
  4. using PDF_Office.Model.Dialog.HomePageToolsDialogs.HomePageBatchProcessing;
  5. using PDFSettings;
  6. using Prism.Commands;
  7. using Prism.Mvvm;
  8. using Prism.Regions;
  9. using Prism.Services.Dialogs;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Linq;
  13. using System.Text;
  14. using System.Threading.Tasks;
  15. using System.Windows.Controls;
  16. namespace PDF_Office.ViewModels.HomePanel.PDFTools
  17. {
  18. public class QuickToolsContentViewModel : BindableBase
  19. {
  20. #region 属性
  21. /// <summary>
  22. /// 扩展/收缩
  23. /// </summary>
  24. private bool _isExpendTools = false;
  25. public bool IsExpendTools
  26. {
  27. get { return _isExpendTools; }
  28. set { SetProperty(ref _isExpendTools, value); }
  29. }
  30. private string regionName;
  31. public string ToolRegionName
  32. {
  33. get { return regionName; }
  34. set { SetProperty(ref regionName, value); }
  35. }
  36. #endregion
  37. #region Command and Event
  38. public IDialogService dialogs;
  39. public DelegateCommand<ToolItem> QuickToolsCommand { get; set; }
  40. public DelegateCommand<object> OpenMenuCommand { get; set; }
  41. public DelegateCommand ExpendCommand { get; set; }
  42. public DelegateCommand ShowToolCommand { get; set; }
  43. public IRegionManager toolregion;
  44. public event EventHandler<bool> ExpendToolsHanlder;
  45. #endregion
  46. public QuickToolsContentViewModel(IDialogService dialogService, IRegionManager regionManager)
  47. {
  48. toolregion = regionManager;
  49. ToolRegionName = RegionNames.ToolRegionName;
  50. System.Windows.Application.Current.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Send, new Action(() =>
  51. {
  52. toolregion.RequestNavigate(ToolRegionName, "Guid");
  53. }));
  54. dialogs = dialogService;
  55. InitVariable();
  56. InitCommand();
  57. }
  58. #region 初始化和绑定
  59. private void InitVariable()
  60. {
  61. }
  62. private void InitCommand()
  63. {
  64. QuickToolsCommand = new DelegateCommand<ToolItem>(QuickTools_Click);
  65. OpenMenuCommand = new DelegateCommand<object>(OpenMenu);
  66. ExpendCommand = new DelegateCommand(Expend);
  67. ShowToolCommand = new DelegateCommand(ShowTool);
  68. }
  69. #endregion
  70. private void ShowTool()
  71. {
  72. toolregion.RequestNavigate(ToolRegionName, "Tools");
  73. }
  74. public void QuickTools_Click(ToolItem toolItem)
  75. {
  76. /*
  77. *设置这个对话框的起始保存路径
  78. */
  79. System.Windows.Forms.OpenFileDialog dlg = new System.Windows.Forms.OpenFileDialog();
  80. dlg.Multiselect = false;
  81. dlg.Filter = "PDF|*.pdf;*.PDF;";
  82. if (toolItem.FnType == (int)PDFFnType.Compress || toolItem.FnType == (int)PDFFnType.Security)
  83. {
  84. dlg.Multiselect = true;
  85. }
  86. if (toolItem.FnType == (int)PDFFnType.Merge)
  87. {
  88. dlg.Multiselect = true;
  89. dlg.Filter = "Picture|*.png;*.PNG;*.jpg;*.JPG;*bmp;*jpeg;*gif;*tiff;";
  90. }
  91. if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
  92. {
  93. CPDFViewer viewer = new CPDFViewer();
  94. switch ((PDFFnType)toolItem.FnType)
  95. {
  96. case PDFFnType.Split:
  97. viewer.InitDocument(dlg.FileName);
  98. DialogParameters splitvalue = new DialogParameters();
  99. splitvalue.Add(ParameterNames.PDFViewer, viewer);
  100. splitvalue.Add(ParameterNames.FilePath, dlg.FileName);
  101. dialogs.ShowDialog(DialogNames.HomePageSplitDialog, splitvalue, e => { });
  102. break;
  103. case PDFFnType.Extract:
  104. viewer.InitDocument(dlg.FileName);
  105. DialogParameters extractvalue = new DialogParameters();
  106. extractvalue.Add(ParameterNames.PDFViewer, viewer);
  107. extractvalue.Add(ParameterNames.FilePath, dlg.FileName);
  108. dialogs.ShowDialog(DialogNames.HomePageExtractDialog, extractvalue, e => { });
  109. break;
  110. case PDFFnType.Insert:
  111. viewer.InitDocument(dlg.FileName);
  112. DialogParameters insertvalue = new DialogParameters();
  113. insertvalue.Add(ParameterNames.PDFViewer, viewer);
  114. insertvalue.Add(ParameterNames.FilePath, dlg.FileName);
  115. dialogs.ShowDialog(DialogNames.HomePageInsertDialog, insertvalue, e => { });
  116. break;
  117. case PDFFnType.Compress:
  118. DialogParameters compresspdf = new DialogParameters();
  119. compresspdf.Add(ParameterNames.BatchProcessing_Name, "1");
  120. HomePageBatchProcessingDialogModel.FilePaths = dlg.FileNames.ToList();
  121. HomePageBatchProcessingDialogModel.BatchProcessingIndex = 1;
  122. compresspdf.Add(ParameterNames.FilePath, dlg.FileNames);
  123. dialogs.ShowDialog(DialogNames.HomePageBatchProcessingDialog, compresspdf, e => { });
  124. break;
  125. case PDFFnType.Merge:
  126. DialogParameters picturetopdf = new DialogParameters();
  127. picturetopdf.Add(ParameterNames.FilePath, dlg.FileNames);
  128. dialogs.ShowDialog(DialogNames.HomePagePictureToPDFDialog, picturetopdf, e => { });
  129. break;
  130. case PDFFnType.Print:
  131. viewer.InitDocument(dlg.FileName);
  132. DialogParameters printvalue = new DialogParameters();
  133. printvalue.Add(ParameterNames.PDFViewer, viewer);
  134. printvalue.Add(ParameterNames.FilePath, dlg.FileName);
  135. dialogs.ShowDialog(DialogNames.HomePagePrinterDialog, printvalue, e => { });
  136. break;
  137. case PDFFnType.Security:
  138. DialogParameters securitypdf = new DialogParameters();
  139. securitypdf.Add(ParameterNames.BatchProcessing_Name, "2");
  140. HomePageBatchProcessingDialogModel.FilePaths = dlg.FileNames.ToList();
  141. HomePageBatchProcessingDialogModel.BatchProcessingIndex = 2;
  142. securitypdf.Add(ParameterNames.FilePath, dlg.FileNames);
  143. dialogs.ShowDialog(DialogNames.HomePageBatchProcessingDialog, securitypdf, e => { });
  144. break;
  145. case PDFFnType.ConvertPDF:
  146. DialogParameters convertpdf = new DialogParameters();
  147. convertpdf.Add(ParameterNames.BatchProcessing_Name, "0");
  148. HomePageBatchProcessingDialogModel.FilePaths = dlg.FileNames.ToList();
  149. HomePageBatchProcessingDialogModel.BatchProcessingIndex = 0;
  150. convertpdf.Add(ParameterNames.FilePath, dlg.FileNames);
  151. dialogs.ShowDialog(DialogNames.HomePageBatchProcessingDialog, convertpdf, e => { });
  152. break;
  153. }
  154. }
  155. }
  156. private void Expend()
  157. {
  158. IsExpendTools = !IsExpendTools;
  159. ExpendToolsHanlder?.Invoke(null, IsExpendTools);
  160. }
  161. private void OpenMenu(object obj)
  162. {
  163. var menu = App.Current.FindResource("ExpendToolsContextMenu") as ContextMenu;
  164. var btn = obj as Button;
  165. if (menu != null && btn != null)
  166. {
  167. if(menu.Items.Count == 1)
  168. {
  169. var item = menu.Items[0] as MenuItem;
  170. if(_isExpendTools)
  171. {
  172. item.Header = "收缩";
  173. }
  174. else
  175. {
  176. item.Header = "展开";
  177. }
  178. item.Command = ExpendCommand;
  179. //btn.ContextMenu = menu;
  180. menu.PlacementTarget = btn;
  181. menu.IsOpen = true;
  182. }
  183. }
  184. }
  185. }
  186. }