using Dropbox.Api.Sharing; using PDF_Office.EventAggregators; using Prism.Commands; using Prism.Events; using Prism.Mvvm; using Prism.Regions; using System; using System.Windows; using System.Linq; using System.Windows.Controls; using Visibility = System.Windows.Visibility; using Dropbox.Api.FileProperties; using ComPDFKitViewer.PdfViewer; using PDF_Office.Model; using PDF_Office.Model.EditTools.Background; using PDFSettings; using PDF_Office.CustomControl; using PDF_Office.Model.Dialog.HomePageToolsDialogs.HomePageBatchProcessing; using Prism.Services.Dialogs; using System.Collections.Generic; namespace PDF_Office.ViewModels.EditTools.Background { public class BackgroundContentViewModel : BindableBase, INavigationAware { public IEventAggregator eventAggregator; public IRegionManager backgroundRegion; public IDialogService dialogs; private CPDFViewer PDFViewer; private ViewContentViewModel viewContentViewModel; public string TemplateListBaseName = "BackgroundTemplateListBaseContent"; public string CreateBaseName = "BackgroundCreateBaseContent"; public string CreateModColorName = "BackgroundCreateColorContent"; public string CreateModFileName = "BackgroundCreateFileContent"; public string TemplateListModColorName = "BackgroundTemplateListColorContent"; public string TemplateListModFileName = "BackgroundTemplateListFileContent"; public string BackgroundDocumentName = "BackgroundDocumentContent"; private string _backgroundSettingsRegionName; /// /// 属性设置Region /// public string BackgroundSettingsRegionName { get { return _backgroundSettingsRegionName; } set { _backgroundSettingsRegionName = value; } } private Visibility _backgroundSettingsVisible = Visibility.Collapsed; /// /// 属性设置Region可见 /// public Visibility BackgroundSettingsVisible { get { return _backgroundSettingsVisible; } set { _backgroundSettingsVisible = value; } } private string _backgroundDocumentRegionName; /// /// 持有Document的Region,负责渲染和保存 /// public string BackgroundDocumentRegionName { get { return _backgroundDocumentRegionName; } set { _backgroundDocumentRegionName = value; } } private Visibility _backgroundDocumentVisible = Visibility.Visible; /// /// 持有Document的Region可见 /// public Visibility BackgroundDocumentVisible { get { return _backgroundDocumentVisible; } set { _backgroundDocumentVisible = value; } } private EnumColorOrFile _currentCreateMod; public EnumColorOrFile CurrentCreateMod { get { return _currentCreateMod; } set { _currentCreateMod = value; } } private EnumColorOrFile _currentTemplateListMod; public EnumColorOrFile CurrentTemplateListMod { get { return _currentTemplateListMod; } set { _currentTemplateListMod = value; } } /// /// 退出EditTool /// public DelegateCommand CloseEditToolCommand { get; set; } public DelegateCommand ConfirmEditToolCommand { get; set; } public DelegateCommand EnterSelectedContentCommand { get; set; } public DelegateCommand BatchBackgroundCommand { get; set; } public DelegateCommand DeleteBackgroundCommand { get; set; } public string Unicode = null; public BackgroundContentViewModel(IRegionManager regionManager, IEventAggregator eventAggregator, IDialogService dialogs) { this.eventAggregator = eventAggregator; this.backgroundRegion = regionManager; this.dialogs = dialogs; Unicode = App.mainWindowViewModel.SelectedItem.Unicode; BackgroundSettingsVisible = Visibility.Visible; BackgroundSettingsRegionName = Guid.NewGuid().ToString(); BackgroundDocumentRegionName = Guid.NewGuid().ToString(); BatchBackgroundCommand = new DelegateCommand(BatchBackground); CloseEditToolCommand = new DelegateCommand(CloseEditTool); ConfirmEditToolCommand = new DelegateCommand(ConfirmEditTool); EnterSelectedContentCommand = new DelegateCommand(EnterSelectedContent); DeleteBackgroundCommand = new DelegateCommand(DeleteBackground); eventAggregator.GetEvent().Subscribe(EnterTemplateListOrCreate, e => e.Unicode == Unicode); eventAggregator.GetEvent().Subscribe(SetCurrentCreateMod, e => e.Unicode == Unicode); eventAggregator.GetEvent().Subscribe(SetCurrentTemplateListMod, e => e.Unicode == Unicode); eventAggregator.GetEvent().Subscribe(EditBackgroundTemplateItem, 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 }); } public void EnterTemplateListOrCreate(EnumTemplateListOrCreateUnicode enumTemplateListOrCreateunicode) { EnumTemplateListOrCreate enumTemplateListOrCreate = enumTemplateListOrCreateunicode.Status; if (enumTemplateListOrCreate == EnumTemplateListOrCreate.StatusTemplate) { EnterSelectedContent(TemplateListBaseName); } else { EnterSelectedContent(CreateBaseName); } } public void SetCurrentCreateMod(stringUnicode currentCreateModNameunicode) { string currentCreateModName = currentCreateModNameunicode.Status; if (currentCreateModName == CreateModColorName) { CurrentCreateMod = EnumColorOrFile.StatusColor; } else if (currentCreateModName == CreateModFileName) { CurrentCreateMod = EnumColorOrFile.StatusFile; } } public void EditBackgroundTemplateItem(BackgroundItemUnicode backgroundItemunicode) { BackgroundItem backgroundItem = backgroundItemunicode.Status; NavigationParameters param = new NavigationParameters(); param.Add(ParameterNames.PDFViewer, PDFViewer); param.Add("CurrentTemplateListModName", CurrentTemplateListMod); param.Add("BackgroundItem", backgroundItem); backgroundRegion.RequestNavigate(BackgroundSettingsRegionName, CreateBaseName, param); BackgroundSettingsVisible = Visibility.Visible; } public void SetCurrentTemplateListMod(stringUnicode currentTemplateListModNameunicode) { string currentTemplateListModName = currentTemplateListModNameunicode.Status; if (currentTemplateListModName == TemplateListModColorName) { CurrentTemplateListMod = EnumColorOrFile.StatusColor; } else if (currentTemplateListModName == TemplateListModFileName) { CurrentTemplateListMod = EnumColorOrFile.StatusFile; } } public void EnterSelectedContent(string SelectedContentName) { NavigationParameters param = new NavigationParameters(); param.Add(ParameterNames.PDFViewer, PDFViewer); if (SelectedContentName == TemplateListBaseName) { param.Add("CurrentCreateModName", CurrentCreateMod); } else if (SelectedContentName == CreateBaseName) { param.Add("CurrentTemplateListModName", CurrentTemplateListMod); } backgroundRegion.RequestNavigate(BackgroundSettingsRegionName, SelectedContentName, param); BackgroundSettingsVisible = Visibility.Visible; } private void DeleteBackground() { 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 BatchBackground() { DialogParameters backgroundpdf = new DialogParameters(); backgroundpdf.Add(ParameterNames.BatchProcessing_Name, "4"); HomePageBatchProcessingDialogModel.FilePaths = new List { PDFViewer.Document.FilePath.ToString() }; HomePageBatchProcessingDialogModel.BatchProcessingIndex = 4; backgroundpdf.Add(ParameterNames.FilePath, new string[] { PDFViewer.Document.FilePath.ToString() }); dialogs.ShowDialog(DialogNames.HomePageBatchProcessingDialog, backgroundpdf, e => { EnterSelectedContent(TemplateListBaseName); }); } public void EnterDocumentContent() { NavigationParameters param = new NavigationParameters(); param.Add(ParameterNames.PDFViewer, PDFViewer); param.Add(ParameterNames.ViewContentViewModel, viewContentViewModel); backgroundRegion.RequestNavigate(BackgroundDocumentRegionName, BackgroundDocumentName, param); BackgroundDocumentVisible = Visibility.Visible; } public void OnNavigatedTo(NavigationContext navigationContext) { navigationContext.Parameters.TryGetValue(ParameterNames.ViewContentViewModel, out viewContentViewModel); navigationContext.Parameters.TryGetValue(ParameterNames.PDFViewer, out PDFViewer); EnterSelectedContent(TemplateListBaseName); EnterDocumentContent(); } public bool IsNavigationTarget(NavigationContext navigationContext) { return true; } public void OnNavigatedFrom(NavigationContext navigationContext) { } } }