123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342 |
- 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 => "";
- /// <summary>
- /// 数据模型
- /// </summary>
- private CustomInsertModel Model = new CustomInsertModel();
- public event Action<IDialogResult> RequestClose;
- private Size size = new Size();
- private string currentPageSize;
- /// <summary>
- /// 当前页的尺寸大小 括号显示的形式
- /// </summary>
- public string CurrentPageSize
- {
- get { return currentPageSize; }
- set
- {
- SetProperty(ref currentPageSize, value);
- }
- }
- private int itemSelectedIndex = 0;
- /// <summary>
- /// 自定义页面的选中索引
- /// </summary>
- public int ItemSelectedIndex
- {
- get { return itemSelectedIndex; }
- set
- {
- SetProperty(ref itemSelectedIndex, value);
- if (Model != null)
- {
- Model.filepath = Pages[itemSelectedIndex].FilePath;
- }
- }
- }
- private string customWidth;
- /// <summary>
- /// 自定义页面宽度
- /// </summary>
- public string CustomWidth
- {
- get { return customWidth; }
- set
- {
- SetProperty(ref customWidth, value);
- }
- }
- private string customHeight;
- /// <summary>
- /// 自定义页面高度
- /// </summary>
- public string CustomHeight
- {
- get { return customHeight; }
- set
- {
- SetProperty(ref customHeight, value);
- }
- }
- private int unitsSelectedIndex = 0;
- /// <summary>
- /// 单位下拉框的选中项索引
- /// </summary>
- public int UnitsSelectedIndex
- {
- get { return unitsSelectedIndex; }
- set
- {
- SetProperty(ref unitsSelectedIndex, value);
- }
- }
- private int pageSizeSelectedIndex = 0;
- /// <summary>
- /// 页面尺寸选中项
- /// </summary>
- 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);
- }
- }
- /// <summary>
- /// 自定义页面的路径集合
- /// </summary>
- public ObservableCollection<CustomPageItem> Pages { get; set; }
- /// <summary>
- /// 页面单位集合
- /// </summary>
- public List<string> Units { get; set; }
- public List<string> 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<string>();
- 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)");
- }
- /// <summary>
- /// 初始化页面大小单位集合
- /// </summary>
- private void InitUnits()
- {
- Units = new List<string>();
- Units.Add("mm");
- Units.Add("cm");
- Units.Add("in");
- }
- /// <summary>
- /// 初始化自定义页面集合
- /// </summary>
- private void InitPageSource()
- {
- Pages = new ObservableCollection<CustomPageItem>();
- 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<Size>("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
- }
- }
|