using PDF_Master.Helper; using PDF_Master.Model; using PDF_Master.Model.PageEdit; using Prism.Commands; using Prism.Mvvm; using Prism.Services.Dialogs; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; namespace PDF_Master.ViewModels.Dialog.PageEditDialogs { public class InsertDialogViewModel : BindableBase, IDialogAware { public string Title => ""; /// /// 数据模型 /// private CustomInsertModel Model = new CustomInsertModel(); public event Action RequestClose; private Size size = new Size(); private string currentPageSize; /// /// 当前页的尺寸大小 括号显示的形式 /// public string CurrentPageSize { get { return currentPageSize; } set { SetProperty(ref currentPageSize, value); } } private int itemSelectedIndex = 0; /// /// 自定义页面的选中索引 /// public int ItemSelectedIndex { get { return itemSelectedIndex; } set { SetProperty(ref itemSelectedIndex, value); if (Model != null) { Model.filepath = Pages[itemSelectedIndex].FilePath; } } } private string customWidth; /// /// 自定义页面宽度 /// public string CustomWidth { get { return customWidth; } set { SetProperty(ref customWidth, value); } } private string customHeight; /// /// 自定义页面高度 /// public string CustomHeight { get { return customHeight; } set { SetProperty(ref customHeight, value); } } private int unitsSelectedIndex = 0; /// /// 单位下拉框的选中项索引 /// public int UnitsSelectedIndex { get { return unitsSelectedIndex; } set { SetProperty(ref unitsSelectedIndex, value); } } private int pageSizeSelectedIndex = 0; /// /// 页面尺寸选中项 /// public int PageSizeSelectedIndex { get { return pageSizeSelectedIndex; } set { SetProperty(ref pageSizeSelectedIndex, value); } } private bool isCurrentSelected = true; public bool IsCurrentSelected { get { return isCurrentSelected; } set { SetProperty(ref isCurrentSelected, value); } } private bool isStandSelcted; public bool IsStandSelected { get { return isStandSelcted; } set { SetProperty(ref isStandSelcted, value); } } private bool isCustomSelected; public bool IsCustomSelected { get { return isCustomSelected; } set { SetProperty(ref isCustomSelected, value); } } private bool isVerticalSelected = true; public bool IsVerticalSelected { get { return isVerticalSelected; } set { SetProperty(ref isVerticalSelected, value); } } private bool isHorizontalSelected; public bool IsHorizontalSelected { get { return isHorizontalSelected; } set { SetProperty(ref isHorizontalSelected, value); } } /// /// 自定义页面的路径集合 /// public ObservableCollection Pages { get; set; } /// /// 页面单位集合 /// public List Units { get; set; } public List PageSize { get; set; } public DelegateCommand CancelCommand { get; set; } public DelegateCommand InsertCommnad { get; set; } public InsertDialogViewModel() { InitPageSource(); InitUnits(); InitPage(); CancelCommand = new DelegateCommand(cancel); InsertCommnad = new DelegateCommand(insert); } private void InitPage() { PageSize = new List(); PageSize.Add("Letter(8.5x11 inches)"); PageSize.Add("Legal (210 x 297mm)"); PageSize.Add("A3 (297 x 420mm)"); PageSize.Add("A4 (210 x 297mm)"); PageSize.Add("A5 (148 x 210mm)"); PageSize.Add("B4 (250 x 353mm)"); PageSize.Add("B5 (176 x 250mm)"); PageSize.Add("Executive (7.25x10.5 inches)"); PageSize.Add("US4x6 (4x6 inches)"); PageSize.Add("US4x8 (4x8 inches)"); PageSize.Add("US5x7 (5x7 inches)"); PageSize.Add("Comm10 (4.125x9.5 inches)"); } /// /// 初始化页面大小单位集合 /// private void InitUnits() { Units = new List(); Units.Add("mm"); Units.Add("cm"); Units.Add("in"); } /// /// 初始化自定义页面集合 /// private void InitPageSource() { Pages = new ObservableCollection(); Pages.Add(new CustomPageItem() { Name = "空白页", FilePath = "" }); Pages.Add(new CustomPageItem() { Name = "横线", FilePath = System.IO.Path.Combine(Environment.CurrentDirectory, @"Resources\PageEdit\HorizontalLine.jpg") }); Pages.Add(new CustomPageItem() { Name = "五线谱", FilePath = System.IO.Path.Combine(Environment.CurrentDirectory, @"Resources\PageEdit\Staff.jpg") }); Pages.Add(new CustomPageItem() { Name = "格子线", FilePath = System.IO.Path.Combine(Environment.CurrentDirectory, @"Resources\PageEdit\GridLine.jpg") }); } private void cancel() { RequestClose.Invoke(new DialogResult(ButtonResult.Cancel)); } private void insert() { //最后统一处理页面尺寸 if(IsCurrentSelected) { Model.width = (int)size.Width; Model.height = (int)size.Height; } else if(IsStandSelected) { //TODO: } else { int width = (int)size.Width; int height = (int)size.Height; int.TryParse(customWidth,out width); int.TryParse(customHeight,out height); if(width <= 0) { width = (int)size.Width; } if(height<=0) { height = (int)size.Height; } switch (unitsSelectedIndex) { case 1: width = width / 10; height = height / 10; break; case 2: width = (int)(width / 25.4); height = (int)(height / 25.4); break; case 0: default: break; } Model.width = width; Model.height = height; } //方向处理 if (isVerticalSelected) { if (Model.height <= Model.width) { var temp = Model.height; Model.height = Model.width; Model.width = Model.height; } } else { if (Model.height > Model.width) { var temp = Model.height; Model.height = Model.width; Model.width = temp; } } DialogParameters valuePairs = new DialogParameters(); //将mm转换成像素单位 Model.width = (int)CommonHelper.GetPageSizeFomrUnit(Model.width); Model.height = (int)CommonHelper.GetPageSizeFomrUnit(Model.height); valuePairs.Add(ParameterNames.DataModel, Model); RequestClose.Invoke(new DialogResult(ButtonResult.OK, valuePairs)); } #region 弹窗接口 public bool CanCloseDialog() { return true; } public void OnDialogClosed() { } public void OnDialogOpened(IDialogParameters parameters) { if (parameters != null) { size = parameters.GetValue("CurrentPageSize"); CurrentPageSize = $"({size.Width.ToString("F0")}mm*{size.Height.ToString("F0")}mm)"; CustomWidth = size.Width.ToString("F2"); CustomHeight = size.Height.ToString("F2"); Model.width = (int)size.Width; Model.height = (int)size.Height; } } #endregion } }