123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468 |
- 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.Drawing.Printing;
- 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 listSelectedIndex;
- public int ListSelectedIndex
- {
- get { return listSelectedIndex; }
- set
- {
- SetProperty(ref listSelectedIndex, 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);
- if (pageSizeSelectedIndex != -1)
- {
- PageSizeInfo pageSizeInfo = PageSizeInfos[pageSizeSelectedIndex];
- if (pageSizeInfo != null)
- {
- CustomWidth = pageSizeInfo.Width;
- CustomHeight = pageSizeInfo.Height;
- Model.width = Convert.ToInt32(pageSizeInfo.Width);
- Model.height = Convert.ToInt32(pageSizeInfo.Height);
- //V_Width = CustomWidth;
- //V_Height = CustomHeight;
- //H_Width = CustomHeight;
- //H_Height = CustomWidth;
- }
- }
- }
- }
- private bool isCurrentIsEnabled = true;
- public bool IsCurrentIsEnabled
- {
- get { return isCurrentIsEnabled; }
- set
- {
- SetProperty(ref isCurrentIsEnabled, 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);
- if (isVerticalSelected)
- {
- //if (V_Width != null && V_Height != null)
- //{
- // CustomHeight = V_Height;
- // CustomWidth = V_Width;
- //}
- if (Model.height != 0 && Model.width != 0)
- {
- CustomHeight = Model.height.ToString();
- CustomWidth = Model.width.ToString();
- }
- }
- }
- }
- private bool isHorizontalSelected;
- public bool IsHorizontalSelected
- {
- get { return isHorizontalSelected; }
- set
- {
- SetProperty(ref isHorizontalSelected, value);
- if (isHorizontalSelected)
- {
- //if (H_Width != null && H_Height != null)
- //{
- // CustomHeight = H_Height;
- // CustomWidth = H_Width;
- //}
- if (Model.height != 0 && Model.width != 0)
- {
- CustomHeight = Model.width.ToString();
- CustomWidth = Model.height.ToString();
- }
- }
- }
- }
- //public string H_Width = null;
- //public string H_Height = null;
- //public string V_Width = null;
- //public string V_Height = null;
- /// <summary>
- /// 自定义页面的路径集合
- /// </summary>
- public ObservableCollection<CustomPageItem> Pages { get; set; }
- /// <summary>
- /// 页面单位集合
- /// </summary>
- public List<string> Units { get; set; }
- public List<string> PageSize { get; set; }
- public List<PageSizeInfo> PageSizeInfos { 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)");
- PageSizeInfos = new List<PageSizeInfo>() {
- new PageSizeInfo(){ Name="A3",Width="297",Height="420",Unit="mm"},
- new PageSizeInfo(){ Name="A4",Width="210",Height="297",Unit="mm"},
- new PageSizeInfo(){ Name="A5",Width="148",Height="210",Unit="mm"},
- new PageSizeInfo(){ Name="B5",Width="176",Height="250",Unit="mm"},
- new PageSizeInfo(){ Name="10号信封",Width="105",Height="241",Unit="mm"},
- new PageSizeInfo(){ Name="Choukei 3信封",Width="120",Height="235",Unit="mm"},
- new PageSizeInfo(){ Name="DL信封",Width="110",Height="220",Unit="mm"},
- new PageSizeInfo(){ Name="JIS B5",Width="182",Height="257",Unit="mm"},
- new PageSizeInfo(){ Name="ROC 16K",Width="197",Height="273",Unit="mm"},
- new PageSizeInfo(){ Name="超大B/A3型",Width="330",Height="483",Unit="mm"},
- new PageSizeInfo(){ Name="小报用纸",Width="279",Height="432",Unit="mm"},
- new PageSizeInfo(){ Name="小报用纸(特大)",Width="305",Height="457",Unit="mm"},
- new PageSizeInfo(){ Name="美国法定用纸",Width="216",Height="356",Unit="mm"},
- new PageSizeInfo(){ Name="美国信纸",Width="216",Height="279",Unit="mm"},
- };
- foreach (var item in PageSizeInfos)
- {
- PageSize.Add($"{item.Name}({item.Width} x {item.Height} {item.Unit})");
- }
- }
- /// <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)
- {
- PageSizeInfo pageSizeInfo = PageSizeInfos[PageSizeSelectedIndex];
- if (pageSizeInfo != null)
- {
- Model.width = Convert.ToInt32(pageSizeInfo.Width);
- Model.height = Convert.ToInt32(pageSizeInfo.Height);
- }
- }
- 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 = temp;
- }
- }
- 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>(ParameterNames.CurrentPageSize);
- ListSelectedIndex = parameters.GetValue<int>(ParameterNames.PageEditSelectedIndex);
- //未选择页面时,【当前页】项置灰不可点击,默认选中【标准】A4
- if (ListSelectedIndex == -1)
- {
- IsCurrentIsEnabled = false;
- IsStandSelected = true;
- PageSizeSelectedIndex = 1;
- PageSizeInfo pageSizeInfo = PageSizeInfos[PageSizeSelectedIndex];
- if (pageSizeInfo != null)
- {
- CustomWidth = pageSizeInfo.Width;
- CustomHeight = pageSizeInfo.Height;
- Model.width = Convert.ToInt32(pageSizeInfo.Width);
- Model.height = Convert.ToInt32(pageSizeInfo.Height);
- }
- }
- else
- {
- IsCurrentIsEnabled = true;
- CurrentPageSize = $"({size.Width.ToString("F0")}mm*{size.Height.ToString("F0")}mm)";
- CustomWidth = size.Width.ToString("F0");
- CustomHeight = size.Height.ToString("F0");
- Model.width = (int)size.Width;
- Model.height = (int)size.Height;
- }
- //V_Width = CustomWidth;
- //V_Height = CustomHeight;
- //H_Width = CustomHeight;
- //H_Height = CustomWidth;
- //IsVerticalSelected = true;
- }
- }
- #endregion 弹窗接口
- }
- }
|