using PDF_Office.CustomControl; using PDF_Office.Helper; using PDF_Office.Properties; using PDF_Office.Views; using PDFSettings.Settings; using Prism.Commands; using Prism.Mvvm; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using winform = System.Windows.Forms; namespace PDF_Office.ViewModels.HomePanel.RecentFiles { public class RecentFilesContentViewModel: BindableBase { #region 属性 private ObservableCollection _recentFilesGroup = new ObservableCollection(); public ObservableCollection RecentFilesGroup { get { return _recentFilesGroup; } set { SetProperty(ref _recentFilesGroup, value); } } #endregion public DelegateCommand RemoveFileItemCommand { get; set; } public DelegateCommand RemoveFilesFromContainerCommand { get; set; } public DelegateCommand OpenFilesCommand { get; set; } public RecentFilesContentViewModel() { RecentFilesGroup = new ObservableCollection(Settings.Default.RecentOpenFiles); RemoveFilesFromContainerCommand = new DelegateCommand(RemoveFilesFromContainer_Command); RemoveFileItemCommand = new DelegateCommand(RemoveFileItem_Command); OpenFilesCommand = new DelegateCommand(OpenFiles_Command); } private void RemoveFileItem_Command(object obj) { var openFileInfo = obj as OpenFileInfo; if (openFileInfo != null) { SettingHelper.RemoveRecentOpenFile(openFileInfo.FilePath); RecentFilesGroup.Remove(openFileInfo); } } /// /// 删除按钮触发事件 /// /// 选中的文档 private void RemoveFilesFromContainer_Command(object obj) { System.Collections.IList items = (System.Collections.IList)obj; if (items == null || items.Cast() == null) return; var collection = items.Cast(); var openFileInfo = collection.ToList(); if(openFileInfo != null) { string msg = ""; int SelectedItemsType = 0; if (openFileInfo.Count == RecentFilesGroup.Count || openFileInfo.Count == 0) { if(openFileInfo.Count == 1 && RecentFilesGroup.Count == 1) msg = "ClearFile"; else msg = "AllClearFiles"; SelectedItemsType = 0; } else if(openFileInfo.Count == 1) { msg = "ClearFile"; SelectedItemsType = 1; } else { msg = "ClearSelectedFiles"; SelectedItemsType = 2; } winform.DialogResult result = MessageBoxEx.Show(msg, "", winform.MessageBoxButtons.OKCancel, winform.MessageBoxIcon.Question); if (result == winform.DialogResult.OK) { RemoveRecentFilesFrom(SelectedItemsType, openFileInfo); } } } /// /// 删除最近文件的操作 /// /// 0:全部文件;1:一个文件;2:多个文件 /// 选中的文件 private void RemoveRecentFilesFrom(int selectedItemsType, List openFileInfo) { if (selectedItemsType == 0) { SettingHelper.RemoveAllRecentOpenFiles(); RecentFilesGroup.Clear(); } else if (selectedItemsType == 1) { var file = openFileInfo[0] as OpenFileInfo; SettingHelper.RemoveRecentOpenFile(file.FilePath); RecentFilesGroup.Remove(file); } else { foreach (var item in openFileInfo) { SettingHelper.RemoveRecentOpenFile(item.FilePath); RecentFilesGroup.Remove(item); } } } private void OpenFiles_Command(object obj) { var fileInfo = obj as OpenFileInfo; if (fileInfo != null) { if (File.Exists(fileInfo.FilePath)) { string[] filePath = new string[1]; filePath[0] = fileInfo.FilePath; LoadPdfViewer(filePath); } else { SettingHelper.RemoveRecentOpenFile(fileInfo.FilePath); RecentFilesGroup.Remove(fileInfo); } } } public void LoadPdfViewer(string[] filePaths) { var content = App.mainWindowViewModel.SelectedItem.DataContext as MainContentViewModel; if (filePaths.Count() == 1) { if (App.OpenedFileList.Contains(filePaths[0])) { App.mainWindowViewModel.SelectItem(filePaths[0]); } else { content.OpenFile(filePaths[0]); } ToolMethod.SetFileThumbImg(filePaths[0]); } else { var fileList = filePaths.ToList().Where(x => !App.OpenedFileList.Exists(y => y == x)).ToList(); if (fileList.Count <= 0) return; content.OpenFile(filePaths[0]); for (int i = 1; i < fileList.Count(); i++) { if (!App.OpenedFileList.Contains(fileList[i])) { App.mainWindowViewModel.AddTabItem(fileList[i]); } ToolMethod.SetFileThumbImg(fileList[i]); } } Settings.Default.Save(); } } }