using ComPDFKit.PDFDocument; using PDF_Office.Model.Dialog.ToolsDialogs; using PDF_Office.Model; using Prism.Commands; using Prism.Mvvm; using Prism.Services.Dialogs; using System; using System.Diagnostics; using System.Windows.Forms; using System.Windows; using DialogResult = Prism.Services.Dialogs.DialogResult; using MessageBox = System.Windows.Forms.MessageBox; using PDF_Office.Helper; using ComPDFKitViewer.PdfViewer; using PDF_Office.Model.Dialog.HomePageToolsDialogs.HomePageBatchProcessing; using System.Linq; using System.Collections.Generic; namespace PDF_Office.ViewModels.Dialog.ToolsDialogs.CompressDialogs { public class CompressDialogViewModel : BindableBase, IDialogAware { #region 参数和属性 private CompressDialogModel compressDialogModel; private IntPtr compressingIntpr = IntPtr.Zero; private CPDFDocument document; private CPDFViewer pdfviewer; public IDialogService dialogs; #endregion #region 委托声明 public DelegateCommand LargeQualityCommand { get; set; } public DelegateCommand StandardQualityCommand { get; set; } public DelegateCommand LittleQualityCommand { get; set; } public DelegateCommand MicroQualityCommand { get; set; } public DelegateCommand CompressCommand { get; set; } public DelegateCommand ConfirmCompressCommand { get; set; } public DelegateCommand BatchCompressCommand { get; set; } #endregion public CompressDialogViewModel(IDialogService dialogService) { LargeQualityCommand = new DelegateCommand(LargeQuality); StandardQualityCommand = new DelegateCommand(StandardQuality); LittleQualityCommand = new DelegateCommand(LittleQuality); MicroQualityCommand = new DelegateCommand(MicroQuality); CompressCommand = new DelegateCommand(Compress); ConfirmCompressCommand = new DelegateCommand(ConfirmCompress); BatchCompressCommand = new DelegateCommand(BatchCompress); dialogs = dialogService; } #region 逻辑函数 private void LargeQuality() { compressDialogModel.CompressQuality = CompressDialogModel.EnumQualityLevel.StatusLarge; } private void StandardQuality() { compressDialogModel.CompressQuality = CompressDialogModel.EnumQualityLevel.StatusStandard; } private void LittleQuality() { compressDialogModel.CompressQuality = CompressDialogModel.EnumQualityLevel.StatusLittle; } private void MicroQuality() { compressDialogModel.CompressQuality = CompressDialogModel.EnumQualityLevel.StatusMicro; } private void ConfirmCompress() { RequestClose?.Invoke(new DialogResult(ButtonResult.OK)); } private void BatchCompress() { DialogParameters compresspdf = new DialogParameters(); compresspdf.Add(ParameterNames.BatchProcessing_Name, "1"); HomePageBatchProcessingDialogModel.FilePaths =new List { pdfviewer.Document.FilePath.ToString() } ; HomePageBatchProcessingDialogModel.BatchProcessingIndex = 1; compresspdf.Add(ParameterNames.FilePath, new string[] { pdfviewer.Document.FilePath.ToString() }); dialogs.ShowDialog(DialogNames.HomePageBatchProcessingDialog, compresspdf, e => { }); } private int GetIndex(int pageindex) { Trace.WriteLine(pageindex); return 0; } private void Compress() { FolderBrowserDialog dlg = new FolderBrowserDialog(); string saveSelectedPath = ""; if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { saveSelectedPath = dlg.SelectedPath.Trim(); saveSelectedPath = saveSelectedPath + "\\"+document.FileName+"_Compress.pdf"; saveSelectedPath = CommonHelper.CreateFilePath(saveSelectedPath); /* * 做一些工作 */ Trace.WriteLine("compressDialogModel.CompressQuality: " + compressDialogModel.CompressQuality); var dialogresult = new DialogResult(ButtonResult.OK); dialogresult.Parameters.Add(ParameterNames.PDFDocument, document); dialogresult.Parameters.Add(ParameterNames.PassWord, pdfviewer.Tag); dialogresult.Parameters.Add(ParameterNames.FilePath, saveSelectedPath); dialogresult.Parameters.Add("compressDialogModel.CompressQuality", (int)compressDialogModel.CompressQuality); RequestClose.Invoke(dialogresult); //DialogParameters value = new DialogParameters(); //value.Add(ParameterNames.PDFDocument, document); //value.Add(ParameterNames.PassWord, pdfviewer.Tag); //value.Add(ParameterNames.FilePath, saveSelectedPath); //value.Add("compressDialogModel.CompressQuality", (int)compressDialogModel.CompressQuality); //RequestClose?.Invoke(new DialogResult(ButtonResult.OK)); //dialogs.ShowDialog(DialogNames.CompressProgressBarDialog, value, e => //{ //}); } else { return; } } #endregion #region 框架行为 public string Title => ""; public event Action RequestClose; public bool CanCloseDialog() { return true; } public void OnDialogClosed() { } public void OnDialogOpened(IDialogParameters parameters) { parameters.TryGetValue(ParameterNames.PDFViewer, out pdfviewer); if (pdfviewer != null) { CompressDialogModel compressdialogmodel = new CompressDialogModel(); document = pdfviewer.Document; compressDialogModel = compressdialogmodel; compressDialogModel.CompressQuality = CompressDialogModel.EnumQualityLevel.StatusDefault; } } #endregion } }