HomePagePrinterPageSetDialogViewModel.cs 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. using PDF_Office.Model.Dialog.HomePageToolsDialogs.HomePagePrinter;
  2. using Prism.Commands;
  3. using Prism.Mvvm;
  4. using Prism.Services.Dialogs;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Runtime.InteropServices;
  9. using System.Windows;
  10. namespace PDF_Office.ViewModels.Dialog.HomePageToolsDialogs.HomePagePrinter
  11. {
  12. public class HomePagePrinterPageSetDialogViewModel : BindableBase, IDialogAware
  13. {
  14. private int _paperSizeIndex;
  15. public int PaperSizeIndex
  16. {
  17. get { return _paperSizeIndex; }
  18. set { _paperSizeIndex = value; }
  19. }
  20. private int _paperSizeWidth;
  21. public int PaperSizeWidth
  22. {
  23. get { return _paperSizeWidth; }
  24. set
  25. {
  26. SetProperty(ref _paperSizeWidth, value);
  27. }
  28. }
  29. private int _paperSizeHeight;
  30. public int PaperSizeHeight
  31. {
  32. get { return _paperSizeHeight; }
  33. set
  34. {
  35. SetProperty(ref _paperSizeHeight, value);
  36. }
  37. }
  38. private List<string> _paperSizeNameList;
  39. public List<string> PaperSizeNameList
  40. {
  41. get { return _paperSizeNameList; }
  42. set { _paperSizeNameList = value; }
  43. }
  44. public Dictionary<EnumPaperSize, string> GetPaperSizeNameFromEnumPaperSize;
  45. private int _leftMargin;
  46. public int LeftMargin
  47. {
  48. get { return _leftMargin; }
  49. set { _leftMargin = value; }
  50. }
  51. private int _rightMargin;
  52. public int RightMargin
  53. {
  54. get { return _rightMargin; }
  55. set { _rightMargin = value; }
  56. }
  57. private int _bottomMargin;
  58. public int BottomMargin
  59. {
  60. get { return _bottomMargin; }
  61. set { _bottomMargin = value; }
  62. }
  63. private int _topMargin;
  64. public int TopMargin
  65. {
  66. get { return _topMargin; }
  67. set { _topMargin = value; }
  68. }
  69. private int[] _paperMargin;
  70. public int[] PaperMargin
  71. {
  72. get { return _paperMargin; }
  73. set { _paperMargin = value; }
  74. }
  75. private Visibility _isPageSizeStackPanelsVisible = Visibility.Hidden;
  76. public Visibility IsPageSizeStackPanelsVisible
  77. {
  78. get { return _isPageSizeStackPanelsVisible; }
  79. set { SetProperty(ref _isPageSizeStackPanelsVisible, value); }
  80. }
  81. public DelegateCommand SetPaperSizeCommand { get; set; }
  82. public DelegateCommand ConfirmSetPageSizeCommand { get; set; }
  83. public DelegateCommand CancelSetPageSizeCommand { get; set; }
  84. public HomePagePrinterPageSetDialogViewModel()
  85. {
  86. HomePagePrinterDialogModel homePagePrinterDialogModel = new HomePagePrinterDialogModel();
  87. SetPaperSizeCommand = new DelegateCommand(SetPaperSize);
  88. ConfirmSetPageSizeCommand = new DelegateCommand(ConfirmSetPageSize);
  89. CancelSetPageSizeCommand = new DelegateCommand(CancelSetPageSize);
  90. GetPaperSizeNameFromEnumPaperSize = new Dictionary<EnumPaperSize, string> { };
  91. InitGetPaperSizeNameFromEnumPaperSize(ref GetPaperSizeNameFromEnumPaperSize);
  92. InitPaperSizeList();
  93. }
  94. public void InitGetPaperSizeNameFromEnumPaperSize(ref Dictionary<EnumPaperSize, string> Dictionary)
  95. {
  96. GetPaperSizeNameFromEnumPaperSize.Clear();
  97. GetPaperSizeNameFromEnumPaperSize.Add(EnumPaperSize.StatusA3, "A3");
  98. GetPaperSizeNameFromEnumPaperSize.Add(EnumPaperSize.StatusA4, "A4");
  99. GetPaperSizeNameFromEnumPaperSize.Add(EnumPaperSize.StatusA5, "A5");
  100. GetPaperSizeNameFromEnumPaperSize.Add(EnumPaperSize.StatusB5, "B5");
  101. GetPaperSizeNameFromEnumPaperSize.Add(EnumPaperSize.StatusNo10Envelope, "10号信封");
  102. GetPaperSizeNameFromEnumPaperSize.Add(EnumPaperSize.StatusChoukei3Envelope, "Choukei 3信封");
  103. GetPaperSizeNameFromEnumPaperSize.Add(EnumPaperSize.StatusDLEnvelope, "DL信封");
  104. GetPaperSizeNameFromEnumPaperSize.Add(EnumPaperSize.StatusJISB5, "JIS B5");
  105. GetPaperSizeNameFromEnumPaperSize.Add(EnumPaperSize.StatusROC16K, "ROC 16K");
  106. GetPaperSizeNameFromEnumPaperSize.Add(EnumPaperSize.StatusExtraLargeBA3, "超大型B/A3型");
  107. GetPaperSizeNameFromEnumPaperSize.Add(EnumPaperSize.StatusTabloid, "小报用纸");
  108. GetPaperSizeNameFromEnumPaperSize.Add(EnumPaperSize.StatusExraLargeTabloid, "小报用纸(特大)");
  109. GetPaperSizeNameFromEnumPaperSize.Add(EnumPaperSize.StatusAmericanLegal, "美国法定用纸");
  110. GetPaperSizeNameFromEnumPaperSize.Add(EnumPaperSize.StatusAmericanLetter, "美国信纸");
  111. GetPaperSizeNameFromEnumPaperSize.Add(EnumPaperSize.StatusCustomized, "自定义");
  112. }
  113. public void InitPaperSizeList()
  114. {
  115. PaperSizeNameList = new List<string>();
  116. for (int temp = 0; temp < GetPaperSizeNameFromEnumPaperSize.Count; temp++)
  117. {
  118. PaperSizeNameList.Add(GetPaperSizeNameFromEnumPaperSize[(EnumPaperSize)temp]);
  119. }
  120. }
  121. public void SetPaperSize()
  122. {
  123. IsPageSizeStackPanelsVisible = Visibility.Hidden;
  124. switch (PaperSizeIndex)
  125. {
  126. case (int)EnumPaperSize.StatusA3:
  127. PaperSizeWidth = 297;
  128. PaperSizeHeight = 420;
  129. break;
  130. case (int)EnumPaperSize.StatusA4:
  131. PaperSizeWidth = 210;
  132. PaperSizeHeight = 297;
  133. break;
  134. case (int)EnumPaperSize.StatusA5:
  135. PaperSizeWidth = 148;
  136. PaperSizeHeight = 210;
  137. break;
  138. case (int)EnumPaperSize.StatusB5:
  139. PaperSizeWidth = 176;
  140. PaperSizeHeight = 250;
  141. break;
  142. case (int)EnumPaperSize.StatusNo10Envelope:
  143. PaperSizeWidth = 458;
  144. PaperSizeHeight = 324;
  145. break;
  146. case (int)EnumPaperSize.StatusChoukei3Envelope:
  147. PaperSizeWidth = 120;
  148. PaperSizeHeight = 235;
  149. break;
  150. case (int)EnumPaperSize.StatusDLEnvelope:
  151. PaperSizeWidth = 220;
  152. PaperSizeHeight = 110;
  153. break;
  154. case (int)EnumPaperSize.StatusJISB5:
  155. PaperSizeWidth = 176;
  156. PaperSizeHeight = 276;
  157. break;
  158. case (int)EnumPaperSize.StatusROC16K:
  159. PaperSizeWidth = 197;
  160. PaperSizeHeight = 273;
  161. break;
  162. case (int)EnumPaperSize.StatusExtraLargeBA3:
  163. PaperSizeWidth = 330;
  164. PaperSizeHeight = 483;
  165. break;
  166. case (int)EnumPaperSize.StatusTabloid:
  167. PaperSizeWidth = 431;
  168. PaperSizeHeight = 279;
  169. break;
  170. case (int)EnumPaperSize.StatusExraLargeTabloid:
  171. PaperSizeWidth = 305;
  172. PaperSizeHeight = 457;
  173. break;
  174. case (int)EnumPaperSize.StatusAmericanLegal:
  175. PaperSizeWidth = 216;
  176. PaperSizeHeight = 356;
  177. break;
  178. case (int)EnumPaperSize.StatusAmericanLetter:
  179. PaperSizeWidth = 216;
  180. PaperSizeHeight = 279;
  181. break;
  182. case (int)EnumPaperSize.StatusCustomized:
  183. IsPageSizeStackPanelsVisible = Visibility.Visible;
  184. break;
  185. default:
  186. break;
  187. }
  188. }
  189. public void ConfirmSetPageSize()
  190. {
  191. var dialogResult = new DialogResult(ButtonResult.OK);
  192. dialogResult.Parameters.Add("LeftMargin", LeftMargin);
  193. dialogResult.Parameters.Add("TopMargin", TopMargin);
  194. dialogResult.Parameters.Add("RightMargin", RightMargin);
  195. dialogResult.Parameters.Add("BottomMargin", BottomMargin);
  196. dialogResult.Parameters.Add("PaperWidth", PaperSizeWidth);
  197. dialogResult.Parameters.Add("PaperHeight", PaperSizeHeight);
  198. dialogResult.Parameters.Add("PaperSizeIndex", PaperSizeIndex);
  199. RequestClose.Invoke(dialogResult);
  200. }
  201. public void CancelSetPageSize()
  202. {
  203. var dialogResult = new DialogResult(ButtonResult.Cancel);
  204. RequestClose.Invoke(dialogResult);
  205. }
  206. public event Action<IDialogResult> RequestClose;
  207. public string Title => "";
  208. public bool CanCloseDialog()
  209. {
  210. return true;
  211. }
  212. public void OnDialogClosed()
  213. {
  214. }
  215. public void OnDialogOpened(IDialogParameters parameters)
  216. {
  217. }
  218. }
  219. }