ConverterImgDialogViewModel.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. using ComPDFKitViewer.PdfViewer;
  2. using PDF_Office.CustomControl;
  3. using PDF_Office.Helper;
  4. using PDF_Office.Model;
  5. using PDF_Office.Model.Dialog.ConverterDialogs;
  6. using Prism.Commands;
  7. using Prism.Mvvm;
  8. using Prism.Services.Dialogs;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Diagnostics;
  12. using System.IO;
  13. using System.Linq;
  14. using System.Windows.Forms;
  15. using DialogResult = Prism.Services.Dialogs.DialogResult;
  16. namespace PDF_Office.ViewModels.Dialog.ConverterDialogs
  17. {
  18. public class ConverterImgDialogViewModel : BindableBase, IDialogAware
  19. {
  20. public ConverterImgDialogModel ConverterImgModel = new ConverterImgDialogModel();
  21. public CPDFViewer currentViewer;
  22. public string CurrentPageIndex = "1";
  23. public IDialogService dialogs;
  24. public string PageRangeText { set; get; } = "0";
  25. public string PageRangeSelectIndex { set; get; } = "0";
  26. public List<string> ImageTypeFamily { set; get; } =new List<string>();
  27. private void SetImageTypeOrigin()
  28. {
  29. this.ImageTypeFamily.Add("JPEG");
  30. this.ImageTypeFamily.Add("JPG");
  31. this.ImageTypeFamily.Add("PNG");
  32. this.ImageTypeFamily.Add("GIF");
  33. this.ImageTypeFamily.Add("TIFF");
  34. this.ImageTypeFamily.Add("TGA");
  35. this.ImageTypeFamily.Add("BMP");
  36. this.ImageTypeFamily.Add("JPEG-2000");
  37. }
  38. public List<string> ImageDPIFamily { set; get; } = new List<string>();
  39. private void SetImageDPIOrigin()
  40. {
  41. this.ImageDPIFamily.Add("50 dpi");
  42. this.ImageDPIFamily.Add("72 dpi");
  43. this.ImageDPIFamily.Add("96 dpi");
  44. this.ImageDPIFamily.Add("150 dpi");
  45. this.ImageDPIFamily.Add("300 dpi");
  46. this.ImageDPIFamily.Add("600 dpi");
  47. }
  48. public DelegateCommand CancelCommand { get; set; }
  49. public DelegateCommand ConverterCommnad { get; set; }
  50. public ConverterImgDialogViewModel(IDialogService dialogService)
  51. {
  52. CancelCommand = new DelegateCommand(cancel);
  53. ConverterCommnad = new DelegateCommand(converter);
  54. dialogs = dialogService;
  55. }
  56. private void cancel()
  57. {
  58. RequestClose.Invoke(new DialogResult(ButtonResult.Cancel));
  59. }
  60. private void converter()
  61. {
  62. FolderBrowserDialog dlg = new FolderBrowserDialog();
  63. if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
  64. {
  65. ConverterImgModel.OutputPath = dlg.SelectedPath.Trim();
  66. }
  67. HomePageEditHelper.GetPagerange(PageRangeSelectIndex, currentViewer, ref ConverterImgModel.PageRange, PageRangeText, true, CurrentPageIndex);
  68. char[] enumerationSeparator = new char[] { ',' };
  69. char[] rangeSeparator = new char[] { '-' };
  70. if (!CommonHelper.GetPagesInRange(ref ConverterImgModel.PageIndexLists, ConverterImgModel.PageRange, currentViewer.Document.PageCount, enumerationSeparator, rangeSeparator))
  71. { //TODO
  72. Trace.WriteLine("输入不对");
  73. MessageBoxEx.Show("输入不对");
  74. return;
  75. }
  76. DialogParameters value = new DialogParameters();
  77. value.Add(ParameterNames.ConverterType, "Img");
  78. value.Add(ParameterNames.ConverterTypeModel, ConverterImgModel);
  79. RequestClose?.Invoke(new DialogResult(ButtonResult.OK));
  80. dialogs.ShowDialog(DialogNames.ConverterProgressBarDialog, value, e =>
  81. {
  82. });
  83. }
  84. private void SetProgress(int pageIndex)
  85. {
  86. }
  87. public string Title => "";
  88. public event Action<IDialogResult> RequestClose;
  89. public bool CanCloseDialog()
  90. {
  91. return true;
  92. }
  93. public void OnDialogClosed()
  94. {
  95. }
  96. public void OnDialogOpened(IDialogParameters parameters)
  97. {
  98. CPDFViewer pdfViewer = null;
  99. parameters.TryGetValue<CPDFViewer>(ParameterNames.PDFViewer, out pdfViewer);
  100. if (pdfViewer != null)
  101. {
  102. currentViewer = pdfViewer;
  103. ConverterImgModel.InputPath = pdfViewer.Document.FilePath;
  104. FileInfo fileinfo = new FileInfo(ConverterImgModel.InputPath);
  105. ConverterImgModel.OutputPath = fileinfo.DirectoryName;
  106. SetImageTypeOrigin();
  107. SetImageDPIOrigin();
  108. }
  109. }
  110. }
  111. }