using PDF_Office.EventAggregators; using Prism.Commands; using Prism.Events; using Prism.Mvvm; using Prism.Regions; using System.Windows; using System; using System.Collections.Generic; using System.Linq; using ComPDFKitViewer.PdfViewer; using PDF_Office.Model; using PDFSettings; using PDF_Office.CustomControl; using PDF_Office.Model.Dialog.HomePageToolsDialogs.HomePageBatchProcessing; using Prism.Services.Dialogs; namespace PDF_Office.ViewModels.EditTools.HeaderFooter { public class HeaderFooterContentViewModel : BindableBase, INavigationAware { public IEventAggregator eventAggregator; public IRegionManager headerFooterRegion; public IDialogService dialogs; private CPDFViewer PDFViewer; private ViewContentViewModel viewContentViewModel; public string TemplateListName = "HeaderFooterTemplateListContent"; public string CreateName = "HeaderFooterCreateContent"; public string HeaderFooterDocumentName = "HeaderFooterDocumentContent"; public string HeaderFooterType = "HeaderFooterType"; private string _headerFooterSettingsRegionName; /// /// 属性设置Region /// public string HeaderFooterSettingsRegionName { get { return _headerFooterSettingsRegionName; } set { _headerFooterSettingsRegionName = value; } } private Visibility _headerFooterSettingsVisible = Visibility.Visible; /// /// 属性设置Region可见 /// public Visibility HeaderFooterSettingsVisible { get { return _headerFooterSettingsVisible; } set { _headerFooterSettingsVisible = value; } } private string _headerFooterDocumentRegionName; /// /// 持有Document的Region,负责渲染和保存 /// public string HeaderFooterDocumentRegionName { get { return _headerFooterDocumentRegionName; } set { _headerFooterDocumentRegionName = value; } } private Visibility _headerFooterDocumentVisible = Visibility.Visible; /// /// 持有Document的Region可见 /// public Visibility HeaderFooterDocumentVisible { get { return _headerFooterDocumentVisible; } set { _headerFooterDocumentVisible = value; } } public DelegateCommand CloseEditToolCommand { get; set; } public DelegateCommand ConfirmEditToolCommand { get; set; } public DelegateCommand BatchHeaderFooterCommand { get; set; } public DelegateCommand DeleteHeaderFooterCommand { get; set; } public string Unicode = null; public HeaderFooterContentViewModel(IRegionManager regionManager, IEventAggregator eventAggregator, IDialogService dialogs) { this.eventAggregator = eventAggregator; this.headerFooterRegion = regionManager; this.dialogs = dialogs; HeaderFooterSettingsRegionName = Guid.NewGuid().ToString(); HeaderFooterDocumentRegionName = Guid.NewGuid().ToString(); Unicode = App.mainWindowViewModel.SelectedItem.Unicode; CloseEditToolCommand = new DelegateCommand(CloseEditTool); ConfirmEditToolCommand = new DelegateCommand(ConfirmEditTool); DeleteHeaderFooterCommand = new DelegateCommand(DeleteHeaderFooter); BatchHeaderFooterCommand = new DelegateCommand(BatchHeaderFooter); eventAggregator.GetEvent().Subscribe(EditHeaderFooterTemplateItem, e => e.Unicode == Unicode && e.Type == HeaderFooterType); eventAggregator.GetEvent().Subscribe(EnterTemplateListOrCreate, e => e.Unicode == Unicode); } public void CloseEditTool() { this.eventAggregator.GetEvent().Publish(new EnumCloseModeUnicode { Unicode = Unicode, Status = EnumCloseMode.StatusCancel }); } public void ConfirmEditTool() { this.eventAggregator.GetEvent().Publish(Unicode); this.eventAggregator.GetEvent().Publish(new EnumCloseModeUnicode { Unicode = Unicode, Status = EnumCloseMode.StatusConfirm }); } private void DeleteHeaderFooter() { AlertsMessage alertsMessage = new AlertsMessage(); alertsMessage.ShowDialog("确定要删除页眉页脚吗?", "", "取消", "删除"); if (alertsMessage.result == ContentResult.Ok) { this.eventAggregator.GetEvent().Publish(new EnumDeleteUnicode { Unicode = Unicode, Status = EnumDelete.StatusDeleteAll }); } else { this.eventAggregator.GetEvent().Publish(new EnumDeleteUnicode { Unicode = Unicode, Status = EnumDelete.StatusCreate }); } } private void BatchHeaderFooter() { DialogParameters headerFooterpdf = new DialogParameters(); headerFooterpdf.Add(ParameterNames.BatchProcessing_Name, "5"); HomePageBatchProcessingDialogModel.FilePaths = new List { PDFViewer.Document.FilePath.ToString() }; HomePageBatchProcessingDialogModel.BatchProcessingIndex = 5; headerFooterpdf.Add(ParameterNames.FilePath, new string[] { PDFViewer.Document.FilePath.ToString() }); dialogs.ShowDialog(DialogNames.HomePageBatchProcessingDialog, headerFooterpdf, e => { EnterSelectedContent(TemplateListName); }); } public void EnterSelectedContent(string SelectedContentName) { NavigationParameters param = new NavigationParameters(); param.Add(ParameterNames.PDFViewer, PDFViewer); headerFooterRegion.RequestNavigate(HeaderFooterSettingsRegionName, SelectedContentName, param); HeaderFooterSettingsVisible = Visibility.Visible; } public void EnterDocumentContent() { NavigationParameters param = new NavigationParameters(); param.Add(ParameterNames.PDFViewer, PDFViewer); param.Add(ParameterNames.ViewContentViewModel, viewContentViewModel); headerFooterRegion.RequestNavigate(HeaderFooterDocumentRegionName, HeaderFooterDocumentName, param); HeaderFooterDocumentVisible = Visibility.Visible; } public void EnterTemplateListOrCreate(EnumTemplateListOrCreateUnicode enumTemplateListOrCreateunicode) { EnumTemplateListOrCreate enumTemplateListOrCreate = enumTemplateListOrCreateunicode.Status; if (enumTemplateListOrCreate == EnumTemplateListOrCreate.StatusTemplate) { EnterSelectedContent(TemplateListName); } else { EnterSelectedContent(CreateName); } } public void EditHeaderFooterTemplateItem(BatesHeaderFooterItemUnicode headerfooterItemunicode) { BatesHeaderFooterItem headerfooterItem = headerfooterItemunicode.Status; NavigationParameters param = new NavigationParameters(); param.Add(ParameterNames.PDFViewer, PDFViewer); param.Add("HeaderFooterItem", headerfooterItem); headerFooterRegion.RequestNavigate(HeaderFooterSettingsRegionName, CreateName, param); HeaderFooterSettingsVisible = Visibility.Visible; } public void OnNavigatedTo(NavigationContext navigationContext) { navigationContext.Parameters.TryGetValue(ParameterNames.ViewContentViewModel, out viewContentViewModel); navigationContext.Parameters.TryGetValue(ParameterNames.PDFViewer, out PDFViewer); EnterSelectedContent(TemplateListName); EnterDocumentContent(); } public bool IsNavigationTarget(NavigationContext navigationContext) { return true; } public void OnNavigatedFrom(NavigationContext navigationContext) { } } }