using PDFSettings; using Prism.Commands; using Prism.Mvvm; using Prism.Regions; using System.Windows; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using PDF_Office.Properties; using Prism.Events; using PDF_Office.EventAggregators; using PDF_Office.Model.EditTools.Watermark; using System.Windows.Controls; namespace PDF_Office.ViewModels.EditTools.Watermark { public class WatermarkTemplateListTextContentViewModel : BindableBase, INavigationAware { private readonly IEventAggregator eventAggregator; public WatermarkInfo WatermarkInfo = new WatermarkInfo(); public ObservableCollection watermarkModTextCollection = new ObservableCollection(); public ObservableCollection WatermarkModTextCollection { get { return watermarkModTextCollection; } set { watermarkModTextCollection = value; RaisePropertyChanged(); } } private Visibility _createTemplateVisible; public Visibility CreateTemplateVisible { get { return _createTemplateVisible; } set { SetProperty(ref _createTemplateVisible, value); } } public DelegateCommand AddTemplateCommand { get; set; } public DelegateCommand DeleteTemplateItemCommand { get; set; } public DelegateCommand DeleteAllTemplateItemCommand { get; set; } public DelegateCommand SelectTemplateItemCommand { get; set; } public WatermarkTemplateListTextContentViewModel(IEventAggregator eventAggregator) { this.eventAggregator = eventAggregator; AddTemplateCommand = new DelegateCommand(AddTemplate); DeleteTemplateItemCommand = new DelegateCommand(DeleteTemplateItem); DeleteAllTemplateItemCommand = new DelegateCommand(DeleteAllTemplateItem); SelectTemplateItemCommand = new DelegateCommand(SelectTemplateItem); } private void CheckTemplateListIsEmpty(List watermarkTemplateList) { if (watermarkTemplateList.Count() == 0) { CreateTemplateVisible = Visibility.Visible; } else { CreateTemplateVisible = Visibility.Collapsed; } } private void GetWatermarkSource() { List watermarkModTextTemplateList = new List(); for (int temp = 0; temp < Settings.Default.WatermarkTemplateList.Count; temp++) { if (Settings.Default.WatermarkTemplateList[temp].type == ComPDFKit.PDFWatermark.C_Watermark_Type.WATERMARK_TYPE_TEXT) { watermarkModTextTemplateList.Add(Settings.Default.WatermarkTemplateList[temp]); } } WatermarkModTextCollection = new ObservableCollection(watermarkModTextTemplateList); CheckTemplateListIsEmpty(watermarkModTextTemplateList); } private void InitWatermarkTemplateList() { if (Settings.Default.WatermarkTemplateList == null) { Settings.Default.WatermarkTemplateList = new WatermarkTemplateList(); } GetWatermarkSource(); } public void AddTemplate() { this.eventAggregator.GetEvent().Publish(EnumTemplateListOrCreate.StatusCreate); } public void DeleteTemplateItem(object e) { var btn = e as System.Windows.Controls.Button; if (btn == null) { return; } var template = btn.DataContext as WatermarkItem; if (template == null) { return; } Settings.Default.WatermarkTemplateList.Remove(template); Settings.Default.Save(); WatermarkModTextCollection.Remove(template); GetWatermarkSource(); } public void DeleteAllTemplateItem() { while (Settings.Default.WatermarkTemplateList.Count != 0) { int temp = 0; var template = Settings.Default.WatermarkTemplateList[temp]; Settings.Default.WatermarkTemplateList.Remove(template); Settings.Default.Save(); WatermarkModTextCollection.Remove(template); } GetWatermarkSource(); } public void SelectTemplateItem(object e) { var listBox = e as ListBox; WatermarkItem WatermarkItem = listBox.SelectedItem as WatermarkItem; SendTemplateItemToDocument(WatermarkItem); } public void ConvertItemToInfo(WatermarkItem watermarkItem, ref WatermarkInfo watermarkInfo) { if (watermarkItem != null) { watermarkInfo.WatermarkType = watermarkItem.type; watermarkInfo.Text = watermarkItem.text; watermarkInfo.TextSize = watermarkItem.fontSize; watermarkInfo.FontName = watermarkItem.fontName; watermarkInfo.TextColor = watermarkItem.textcolor; watermarkInfo.WatermarkHorizalign = watermarkItem.horizalign; watermarkInfo.WatermarkVertalign = watermarkItem.vertalign; watermarkInfo.Isfull = watermarkItem.isFullScreen; watermarkInfo.IsFront = watermarkItem.isfront; watermarkInfo.Opacity = watermarkItem.opacity; watermarkInfo.Rotation = watermarkItem.rotation; watermarkInfo.VertOffset = watermarkItem.vertOffset; watermarkInfo.HorizOffset = watermarkItem.horizOffset; watermarkInfo.VerticalSpacing = watermarkItem.verticalSpacing; watermarkInfo.HorizontalSpacing = watermarkItem.horizontalSpacing; watermarkInfo.PageRange = watermarkItem.pageRange; } } public void SendTemplateItemToDocument(WatermarkItem WatermarkItem) { ConvertItemToInfo(WatermarkItem, ref WatermarkInfo); eventAggregator.GetEvent().Publish(WatermarkInfo); } public bool IsNavigationTarget(NavigationContext navigationContext) { return true; } public void OnNavigatedFrom(NavigationContext navigationContext) { } public void OnNavigatedTo(NavigationContext navigationContext) { InitWatermarkTemplateList(); } } }