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
}
}