BackgroundTemplateListFileContentViewModel.cs 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. using PDF_Office.EventAggregators;
  2. using PDF_Office.Model.EditTools.Background;
  3. using PDF_Office.Model.EditTools.Watermark;
  4. using PDF_Office.Properties;
  5. using PDFSettings;
  6. using Prism.Commands;
  7. using Prism.Events;
  8. using Prism.Mvvm;
  9. using Prism.Regions;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.Collections.ObjectModel;
  13. using System.IO;
  14. using System.Linq;
  15. using System.Text;
  16. using System.Threading.Tasks;
  17. using System.Windows;
  18. using System.Windows.Controls;
  19. namespace PDF_Office.ViewModels.EditTools.Background
  20. {
  21. public class BackgroundTemplateListFileContentViewModel : BindableBase, INavigationAware
  22. {
  23. private readonly IEventAggregator eventAggregator;
  24. public BackgroundInfo BackgroundInfo = new BackgroundInfo();
  25. public BackgroundItem BackgroundItem = new BackgroundItem();
  26. public int TemplateIndex = 0;
  27. public ObservableCollection<BackgroundItem> backgroundModFileCollection = new ObservableCollection<BackgroundItem>();
  28. public ObservableCollection<BackgroundItem> BackgroundModFileCollection
  29. {
  30. get { return backgroundModFileCollection; }
  31. set
  32. {
  33. backgroundModFileCollection = value;
  34. RaisePropertyChanged();
  35. }
  36. }
  37. private Visibility _createTemplateVisible;
  38. public Visibility CreateTemplateVisible
  39. {
  40. get { return _createTemplateVisible; }
  41. set { SetProperty(ref _createTemplateVisible, value); }
  42. }
  43. public DelegateCommand AddTemplateCommand { get; set; }
  44. public DelegateCommand<object> DeleteTemplateItemCommand { get; set; }
  45. public DelegateCommand<object> EditTemplateItemCommand { get; set; }
  46. public DelegateCommand DeleteAllTemplateItemCommand { get; set; }
  47. public DelegateCommand<object> SelectTemplateItemCommand { get; set; }
  48. BackgroundTemplateListFileContentViewModel(IEventAggregator eventAggregator)
  49. {
  50. this.eventAggregator = eventAggregator;
  51. AddTemplateCommand = new DelegateCommand(AddTemplate);
  52. EditTemplateItemCommand = new DelegateCommand<object>(RequestEditTemplateItem);
  53. DeleteTemplateItemCommand = new DelegateCommand<object>(DeleteTemplateItem);
  54. DeleteAllTemplateItemCommand = new DelegateCommand(DeleteAllTemplateItem);
  55. SelectTemplateItemCommand = new DelegateCommand<object>(SelectTemplateItem);
  56. eventAggregator.GetEvent<SaveEditedBackgroundTemplateItemEvent>().Subscribe(SaveEditedBackgroundTemplateItem);
  57. }
  58. private void CheckTemplateListIsEmpty(List<BackgroundItem> backgroundTemplateList)
  59. {
  60. if (backgroundTemplateList.Count() == 0)
  61. {
  62. CreateTemplateVisible = Visibility.Visible;
  63. }
  64. else
  65. {
  66. CreateTemplateVisible = Visibility.Collapsed;
  67. }
  68. }
  69. private void GetBackgroundSource()
  70. {
  71. List<BackgroundItem> backgroundModFileTemplateList = new List<BackgroundItem>();
  72. for (int temp = 0; temp < Settings.Default.BackgroundTemplateList.Count; temp++)
  73. {
  74. if (Settings.Default.BackgroundTemplateList[temp].type == ComPDFKit.PDFDocument.C_Background_Type.BG_TYPE_IMAGE)
  75. {
  76. backgroundModFileTemplateList.Add(Settings.Default.BackgroundTemplateList[temp]);
  77. }
  78. }
  79. BackgroundModFileCollection = new ObservableCollection<BackgroundItem>(backgroundModFileTemplateList);
  80. CheckTemplateListIsEmpty(backgroundModFileTemplateList);
  81. }
  82. private void InitBackgroundTemplateList()
  83. {
  84. if (Settings.Default.BackgroundTemplateList == null)
  85. {
  86. Settings.Default.BackgroundTemplateList = new BackgroundTemplateList();
  87. }
  88. GetBackgroundSource();
  89. }
  90. public void AddTemplate()
  91. {
  92. this.eventAggregator.GetEvent<EnterTemplateListOrCreateEvent>().Publish(EnumTemplateListOrCreate.StatusCreate);
  93. }
  94. public void SaveEditedBackgroundTemplateItem(BackgroundItem backgroundItem)
  95. {
  96. if (backgroundItem.type == ComPDFKit.PDFDocument.C_Background_Type.BG_TYPE_IMAGE)
  97. {
  98. Settings.Default.BackgroundTemplateList[TemplateIndex] = backgroundItem;
  99. Settings.Default.Save();
  100. }
  101. GetBackgroundSource();
  102. }
  103. public void RequestEditTemplateItem(object e)
  104. {
  105. var control = e as Control;
  106. if (control == null)
  107. {
  108. return;
  109. }
  110. var template = control.DataContext as BackgroundItem;
  111. if (template == null)
  112. {
  113. return;
  114. }
  115. TemplateIndex = Settings.Default.BackgroundTemplateList.IndexOf(template);
  116. template.listIndex = TemplateIndex;
  117. ConvertItemToInfo(template, ref BackgroundInfo);
  118. this.eventAggregator.GetEvent<EditBackgroundTemplateItemEvent>().Publish(BackgroundItem);
  119. }
  120. public void DeleteTemplateItem(object e)
  121. {
  122. var control = e as Control;
  123. if (control == null)
  124. {
  125. return;
  126. }
  127. var template = control.DataContext as BackgroundItem;
  128. if (template == null)
  129. {
  130. return;
  131. }
  132. if (!string.IsNullOrEmpty(BackgroundItem.previewImagePath) && File.Exists(BackgroundItem.previewImagePath))
  133. {
  134. Settings.Default.AppProperties.NeedToDeletePath.Add(BackgroundItem.previewImagePath);
  135. }
  136. Settings.Default.BackgroundTemplateList.Remove(template);
  137. Settings.Default.Save();
  138. BackgroundModFileCollection.Remove(template);
  139. GetBackgroundSource();
  140. }
  141. public void DeleteAllTemplateItem()
  142. {
  143. while (Settings.Default.BackgroundTemplateList.Count != 0)
  144. {
  145. int temp = 0;
  146. var template = Settings.Default.BackgroundTemplateList[temp];
  147. if (!string.IsNullOrEmpty(BackgroundItem.previewImagePath))
  148. {
  149. Settings.Default.AppProperties.NeedToDeletePath.Add(BackgroundItem.previewImagePath);
  150. }
  151. Settings.Default.BackgroundTemplateList.Remove(template);
  152. Settings.Default.Save();
  153. BackgroundModFileCollection.Remove(template);
  154. }
  155. GetBackgroundSource();
  156. }
  157. public void ConvertItemToInfo(BackgroundItem backgroundItem, ref BackgroundInfo backgroundInfo)
  158. {
  159. if (backgroundItem != null)
  160. {
  161. backgroundInfo.BackgroundType = backgroundItem.type;
  162. backgroundInfo.ImageArray = backgroundItem.imageArray;
  163. backgroundInfo.ImageWidth = backgroundItem.imageWidth;
  164. backgroundInfo.ImageHeight = backgroundItem.imageHeight;
  165. backgroundInfo.Horizalign = backgroundItem.horizalign;
  166. backgroundInfo.Vertalign = backgroundItem.vertalign;
  167. backgroundInfo.VertOffset = backgroundItem.vertOffset;
  168. backgroundInfo.Horizalign = backgroundItem.horizalign;
  169. backgroundInfo.Opacity = backgroundItem.opacity;
  170. backgroundInfo.Rotation = backgroundItem.rotation;
  171. backgroundInfo.Scale = backgroundItem.scale;
  172. // backgroundItem.pagRangeMode = backgroundInfo.PageRange;
  173. }
  174. }
  175. public void SendTemplateItemToDocument(BackgroundItem BackgroundItem)
  176. {
  177. ConvertItemToInfo(BackgroundItem, ref BackgroundInfo);
  178. eventAggregator.GetEvent<SetBackgroundEvent>().Publish(BackgroundInfo);
  179. }
  180. public void SelectTemplateItem(object e)
  181. {
  182. var listBox = e as ListBox;
  183. BackgroundItem BackgroundItem = listBox.SelectedItem as BackgroundItem;
  184. SendTemplateItemToDocument(BackgroundItem);
  185. }
  186. public bool IsNavigationTarget(NavigationContext navigationContext)
  187. {
  188. return true;
  189. }
  190. public void OnNavigatedFrom(NavigationContext navigationContext)
  191. {
  192. }
  193. public void OnNavigatedTo(NavigationContext navigationContext)
  194. {
  195. InitBackgroundTemplateList();
  196. }
  197. }
  198. }