WatermarkContentViewModel.cs 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. using ComPDFKitViewer.PdfViewer;
  2. using PDF_Office.CustomControl;
  3. using PDF_Office.EventAggregators;
  4. using PDF_Office.Model;
  5. using Prism.Commands;
  6. using Prism.Events;
  7. using Prism.Mvvm;
  8. using Prism.Regions;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Linq;
  12. using System.Windows;
  13. namespace PDF_Office.ViewModels.EditTools.Watermark
  14. {
  15. public class WatermarkContentViewModel : BindableBase, INavigationAware
  16. {
  17. public IEventAggregator eventAggregator;
  18. public IRegionManager watermarkRegion;
  19. private CPDFViewer PDFViewer;
  20. private ViewContentViewModel viewContentViewModel;
  21. public string TemplateListName = "WatermarkTemplateListBaseContent";
  22. public string CreateName = "WatermarkCreateBaseContent";
  23. public string CreateModTextName = "WatermarkCreateTextContent";
  24. public string CreateModFileName = "WatermarkCreateFileContent";
  25. public string TemplateListModTextName = "WatermarkTemplateListTextContent";
  26. public string TemplateListModFileName = "WatermarkTemplateListFileContent";
  27. public string WatermarkDocumentName = "WatermarkDocumentContent";
  28. private string _watermarkSettingsRegionName;
  29. public string WatermarkSettingsRegionName
  30. {
  31. get { return _watermarkSettingsRegionName; }
  32. set { _watermarkSettingsRegionName = value; }
  33. }
  34. private Visibility _watermarkSettingsVisible = Visibility.Collapsed;
  35. public Visibility WatermarkSettingsVisible
  36. {
  37. get { return _watermarkSettingsVisible; }
  38. set { _watermarkSettingsVisible = value; }
  39. }
  40. private string _watermarkDocumentRegionName;
  41. /// <summary>
  42. /// 持有Document的Region,负责渲染和保存
  43. /// </summary>
  44. public string WatermarkDocumentRegionName
  45. {
  46. get { return _watermarkDocumentRegionName; }
  47. set { _watermarkDocumentRegionName = value; }
  48. }
  49. private Visibility _watermarkDocumentVisible = Visibility.Visible;
  50. /// <summary>
  51. /// 持有Document的Region可见
  52. /// </summary>
  53. public Visibility WatermarkDocumentVisible
  54. {
  55. get { return _watermarkDocumentVisible; }
  56. set { _watermarkDocumentVisible = value; }
  57. }
  58. private EnumTextOrFile _currentCreateMod;
  59. public EnumTextOrFile CurrentCreateMod
  60. {
  61. get { return _currentCreateMod; }
  62. set { _currentCreateMod = value; }
  63. }
  64. private EnumTextOrFile _currentTemplateListMod;
  65. public EnumTextOrFile CurrentTemplateListMod
  66. {
  67. get { return _currentTemplateListMod; }
  68. set { _currentTemplateListMod = value; }
  69. }
  70. public DelegateCommand CloseEditToolCommand { get; set; }
  71. public DelegateCommand DeleteWatermarkCommand { get; set; }
  72. public DelegateCommand ConfirmEditToolCommand { get; set; }
  73. public DelegateCommand<string> EnterSelectedContentCommand { get; set; }
  74. public WatermarkContentViewModel(IRegionManager regionManager, IEventAggregator eventAggregator)
  75. {
  76. this.eventAggregator = eventAggregator;
  77. this.watermarkRegion = regionManager;
  78. WatermarkSettingsVisible = Visibility.Visible;
  79. WatermarkSettingsRegionName = Guid.NewGuid().ToString();
  80. WatermarkDocumentRegionName = Guid.NewGuid().ToString();
  81. CloseEditToolCommand = new DelegateCommand(CloseEditTool);
  82. ConfirmEditToolCommand = new DelegateCommand(ConfirmEditTool);
  83. EnterSelectedContentCommand = new DelegateCommand<string>(EnterSelectedContent);
  84. DeleteWatermarkCommand = new DelegateCommand(DeleteWatermark);
  85. eventAggregator.GetEvent<EnterTemplateListOrCreateEvent>().Subscribe(EnterTemplateListOrCreate);
  86. eventAggregator.GetEvent<SetCurrentCreateModEvent>().Subscribe(SetCurrentCreateMod);
  87. eventAggregator.GetEvent<SetCurrentTemplateListModEvent>().Subscribe(SetCurrentTemplateListMod);
  88. }
  89. public void CloseEditTool()
  90. {
  91. this.eventAggregator.GetEvent<CloseEditToolEvent>().Publish();
  92. }
  93. public void ConfirmEditTool()
  94. {
  95. this.eventAggregator.GetEvent<ConfirmEditToolsWatermarkEvent>().Publish();
  96. }
  97. public void EnterTemplateListOrCreate(EnumTemplateListOrCreate enumTemplateListOrCreate)
  98. {
  99. if (enumTemplateListOrCreate == EnumTemplateListOrCreate.StatusTemplate)
  100. {
  101. EnterSelectedContent(TemplateListName);
  102. }
  103. else
  104. {
  105. EnterSelectedContent(CreateName);
  106. }
  107. }
  108. public void SetCurrentCreateMod(string currentCreateModName)
  109. {
  110. if (currentCreateModName == CreateModTextName)
  111. {
  112. CurrentCreateMod = EnumTextOrFile.StatusText;
  113. }
  114. else if (currentCreateModName == CreateModFileName)
  115. {
  116. CurrentCreateMod = EnumTextOrFile.StatusFile;
  117. }
  118. }
  119. public void SetCurrentTemplateListMod(string currentTemplateListModName)
  120. {
  121. if (currentTemplateListModName == TemplateListModTextName)
  122. {
  123. CurrentTemplateListMod = EnumTextOrFile.StatusText;
  124. }
  125. else if (currentTemplateListModName == TemplateListModFileName)
  126. {
  127. CurrentTemplateListMod = EnumTextOrFile.StatusFile;
  128. }
  129. }
  130. public void EnterSelectedContent(string SelectedContentName)
  131. {
  132. NavigationParameters param = new NavigationParameters();
  133. param.Add(ParameterNames.PDFViewer, PDFViewer);
  134. if (SelectedContentName == TemplateListName)
  135. {
  136. param.Add("CurrentCreateModName", CurrentCreateMod);
  137. }
  138. else if (SelectedContentName == CreateName)
  139. {
  140. param.Add("CurrentTemplateListModName", CurrentTemplateListMod);
  141. }
  142. watermarkRegion.RequestNavigate(WatermarkSettingsRegionName, SelectedContentName, param);
  143. WatermarkSettingsVisible = Visibility.Visible;
  144. }
  145. public void EnterDocumentContent()
  146. {
  147. NavigationParameters param = new NavigationParameters();
  148. param.Add(ParameterNames.PDFViewer, PDFViewer);
  149. param.Add(ParameterNames.ViewContentViewModel, viewContentViewModel);
  150. watermarkRegion.RequestNavigate(WatermarkDocumentRegionName, WatermarkDocumentName, param);
  151. WatermarkDocumentVisible = Visibility.Visible;
  152. }
  153. private void DeleteWatermark() {
  154. AlertsMessage alertsMessage = new AlertsMessage();
  155. alertsMessage.ShowDialog("", "请输入有效范围", "OK");
  156. PDFViewer.Document.DeleteWatermarks();
  157. PDFViewer.UndoManager.CanSave = true;
  158. this.eventAggregator.GetEvent<CloseEditToolEvent>().Publish();
  159. }
  160. public void OnNavigatedTo(NavigationContext navigationContext)
  161. {
  162. navigationContext.Parameters.TryGetValue<ViewContentViewModel>(ParameterNames.ViewContentViewModel, out viewContentViewModel);
  163. navigationContext.Parameters.TryGetValue<CPDFViewer>(ParameterNames.PDFViewer, out PDFViewer);
  164. EnterSelectedContent(TemplateListName);
  165. EnterDocumentContent();
  166. }
  167. public bool IsNavigationTarget(NavigationContext navigationContext)
  168. {
  169. return true;
  170. }
  171. public void OnNavigatedFrom(NavigationContext navigationContext)
  172. {
  173. }
  174. }
  175. }