using PDF_Office.Helper; using PDF_Office.Model.SettingsDialog; using PDF_Office.Properties; 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; namespace PDF_Office.ViewModels.Dialog { public class SettingsDialogViewModel : BindableBase, IDialogAware { public string Title => ""; public event Action RequestClose; public AnnotateModel Annote { get; set; } public DescriptionModel Descript { get; set; } public InitialVIewModel View { get; set; } public DelegateCommand ResetCommand { get; set; } public DelegateCommand ResetAllCommand { get; set; } public ObservableCollection AnnoteFamilyList { get; set; } public ObservableCollection PageViewList { get; set; } public ObservableCollection ZoomModeList { get; set; } private int noteSelectedIndex; public int NoteSelectedIndex { get { return noteSelectedIndex; } set { SetProperty(ref noteSelectedIndex, value); switch (value) { case 0: Annote.AnchoredFamaily = "Courier"; break; case 1: Annote.AnchoredFamaily = "Helvetica"; break; case 2: Annote.AnchoredFamaily = "Times New Roman"; break; default: break; } } } private int annoteSelectedIndex; public int AnnoteSelectedIndex { get { return annoteSelectedIndex; } set { SetProperty(ref annoteSelectedIndex, value); switch (value) { case 0: Annote.TextFontFamaily = "Courier"; break; case 1: Annote.TextFontFamaily = "Helvetica"; break; case 2: Annote.TextFontFamaily = "Times New Roman"; break; default: break; } } } private bool lefeSelected; public bool LeftSelected { get { return lefeSelected; } set { SetProperty(ref lefeSelected, value); if(value) { Annote.TextAlign = System.Windows.TextAlignment.Left; } } } private bool centerSelected; public bool CenterSelected { get { return centerSelected; } set { SetProperty(ref centerSelected, value); if (value) { Annote.TextAlign = System.Windows.TextAlignment.Center; } } } private bool rightSelected; public bool RightSelected { get { return rightSelected; } set { SetProperty(ref rightSelected, value); if (value) { Annote.TextAlign = System.Windows.TextAlignment.Right; } } } private bool strechSelected; public bool StrechSelected { get { return strechSelected; } set { SetProperty(ref strechSelected, value); if (value) { Annote.TextAlign = System.Windows.TextAlignment.Justify; } } } private int modeSelectedIndex; //选中的模式 public int ModeSelectedIndex { get { return modeSelectedIndex; } set { SetProperty(ref modeSelectedIndex, value); } } private bool isDefualtApp; /// /// 是否是默认软件 /// public bool IsDefualtApp { get { return isDefualtApp; } set { isDefualtApp = value; } } private bool isSetDefualtAppEnable; /// /// 是否允许设置默认软件 /// public bool IsSetDefualtAppEnable { get { return isSetDefualtAppEnable; } set { SetProperty(ref isSetDefualtAppEnable, value); } } private int pageViewSelectedIndex; public int PageViewSelctedIndex { get { return pageViewSelectedIndex; } set { SetProperty(ref pageViewSelectedIndex, value); View.PageView = (ComPDFKitViewer.ViewMode)(value+1); } } private int zoomModeSelectedIndex ; public int ZoomModeSelectedIndex { get { return zoomModeSelectedIndex; } set { SetProperty(ref zoomModeSelectedIndex, value); switch (value) { case 0: View.ZoomMode = ComPDFKitViewer.FitMode.FitWidth; break; case 1: View.ZoomMode = ComPDFKitViewer.FitMode.FitHeight; break; case 2: View.ZoomMode = ComPDFKitViewer.FitMode.FitSize; break; default: break; } } } public SettingsDialogViewModel() { Annote = new AnnotateModel(); Descript = new DescriptionModel(); View = new InitialVIewModel(); PageViewList = new ObservableCollection(); AnnoteFamilyList = new ObservableCollection(); ZoomModeList = new ObservableCollection(); ResetAllCommand = new DelegateCommand(resetAll); ResetCommand = new DelegateCommand(reset); InitAnnoteFamily(); InitPageViews(); InitZoomMode(); //根据缓存还原下拉框 单选等 InitAnnote(); InitView(); //判断是否以管理员身份运行 IsSetDefualtAppEnable = Win32Helper.IsRunAsAdmin(); IsDefualtApp = Win32Helper.IsDefaultApp(); } private void InitView() { //页面模式下拉框 PageViewSelctedIndex = (int)View.PageView - 1; //缩放模式下拉框 switch (View.ZoomMode) { case ComPDFKitViewer.FitMode.FitWidth: ZoomModeSelectedIndex = 0; break; case ComPDFKitViewer.FitMode.FitHeight: ZoomModeSelectedIndex = 1; break; case ComPDFKitViewer.FitMode.FitSize: zoomModeSelectedIndex = 2; break; case ComPDFKitViewer.FitMode.FitFree: //TODO: break; default: break; } } private void InitAnnote() { //注释对齐方式 switch (Annote.TextAlign) { case System.Windows.TextAlignment.Left: LeftSelected = true; break; case System.Windows.TextAlignment.Right: RightSelected = true; break; case System.Windows.TextAlignment.Center: CenterSelected = true; break; case System.Windows.TextAlignment.Justify: default: StrechSelected = true; break; } //文本注释字体 if(Annote.TextFontFamaily== "Courier") { AnnoteSelectedIndex = 0; } else if(Annote.TextFontFamaily== "Helvetica") { AnnoteSelectedIndex = 1; } else { AnnoteSelectedIndex = 2; } //便签注释字体 if (Annote.AnchoredFamaily == "Courier") { NoteSelectedIndex = 0; } else if (Annote.AnchoredFamaily == "Helvetica") { NoteSelectedIndex = 1; } else { NoteSelectedIndex = 2; } } private void InitPageViews() { PageViewList.Clear(); PageViewList.Add("单页"); PageViewList.Add("单页连续"); PageViewList.Add("双页"); PageViewList.Add("双页连续"); PageViewList.Add("书本"); PageViewList.Add("书本连续"); } private void InitZoomMode() { ZoomModeList.Clear(); ZoomModeList.Add("适应宽度"); ZoomModeList.Add("适应页面"); ZoomModeList.Add("实际大小"); } private void InitAnnoteFamily() { AnnoteFamilyList.Clear(); AnnoteFamilyList.Add("Courier New"); AnnoteFamilyList.Add("Arial"); AnnoteFamilyList.Add("Times New Roman"); } /// /// 重置 /// private void reset() { switch (ModeSelectedIndex) { case 0: Descript.Reset(); break; case 1: View.Reset(); InitView(); break; case 2: Annote.Reset(); InitAnnote(); break; default: break; } } /// /// 全部重置 /// private void resetAll() { View.Reset(); Descript.Reset(); Annote.Reset(); InitAnnote(); InitView(); } public bool CanCloseDialog() { return true; } public void OnDialogClosed() { try { View.Save(); Annote.Save(); Descript.Save(); Win32Helper.RegisterDefaultApp(IsDefualtApp); Settings.Default.Save(); } catch { } } public void OnDialogOpened(IDialogParameters parameters) { } } }