Jelajahi Sumber

最近列表 - 更换为Prism方式

chenrongqian 2 tahun lalu
induk
melakukan
3961030f6e

+ 4 - 3
PDF Office/PDF Office.csproj

@@ -315,6 +315,7 @@
     <Compile Include="ViewModels\EditTools\Background\BackgroundTemplateListBaseContentViewModel.cs" />
     <Compile Include="ViewModels\EditTools\Background\BackgroundTemplateListColorContentViewModel.cs" />
     <Compile Include="ViewModels\EditTools\Background\BackgroundTemplateListFileContentViewModel.cs" />
+    <Compile Include="ViewModels\HomePanel\RecentFiles\RecentFilesContentViewModel.cs" />
     <Compile Include="ViewModels\Tools\ConverterBarContentViewModel.cs" />
     <Compile Include="ViewModels\Dialog\ExtractDialogViewModel.cs" />
     <Compile Include="ViewModels\Dialog\FullScreenWindowViewModel.cs" />
@@ -595,8 +596,8 @@
     <Compile Include="Views\HomePanel\RecentFiles\DocItemListViewControl.xaml.cs">
       <DependentUpon>DocItemListViewControl.xaml</DependentUpon>
     </Compile>
-    <Compile Include="Views\HomePanel\RecentFiles\RecentFilesView.xaml.cs">
-      <DependentUpon>RecentFilesView.xaml</DependentUpon>
+    <Compile Include="Views\HomePanel\RecentFiles\RecentFilesContent.xaml.cs">
+      <DependentUpon>RecentFilesContent.xaml</DependentUpon>
     </Compile>
     <Compile Include="Views\MainContent.xaml.cs">
       <DependentUpon>MainContent.xaml</DependentUpon>
@@ -1121,7 +1122,7 @@
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
     </Page>
-    <Page Include="Views\HomePanel\RecentFiles\RecentFilesView.xaml">
+    <Page Include="Views\HomePanel\RecentFiles\RecentFilesContent.xaml">
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
     </Page>

+ 192 - 0
PDF Office/ViewModels/HomePanel/RecentFiles/RecentFilesContentViewModel.cs

@@ -0,0 +1,192 @@
+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<OpenFileInfo> _recentFilesGroup = new ObservableCollection<OpenFileInfo>();
+        public ObservableCollection<OpenFileInfo> RecentFilesGroup
+        {
+            get { return _recentFilesGroup; }
+            set
+            {
+                SetProperty(ref _recentFilesGroup, value);
+            }
+        }
+
+        #endregion
+
+        public DelegateCommand<object> RemoveFileItemCommand { get; set; }
+        public DelegateCommand<object> RemoveFilesFromContainerCommand { get; set; }
+        public DelegateCommand<object> OpenFilesCommand { get; set; }
+
+        public RecentFilesContentViewModel()
+        {
+            RecentFilesGroup = new ObservableCollection<OpenFileInfo>(Settings.Default.RecentOpenFiles);
+
+            RemoveFilesFromContainerCommand = new DelegateCommand<object>(RemoveFilesFromContainer_Command);
+            RemoveFileItemCommand = new DelegateCommand<object>(RemoveFileItem_Command);
+            OpenFilesCommand = new DelegateCommand<object>(OpenFiles_Command);
+
+        }
+
+        private void RemoveFileItem_Command(object obj)
+        {
+            var openFileInfo = obj as OpenFileInfo;
+            if (openFileInfo != null)
+            {
+                SettingHelper.RemoveRecentOpenFile(openFileInfo.FilePath);
+                RecentFilesGroup.Remove(openFileInfo);
+            }
+        }
+
+        /// <summary>
+        /// 删除按钮触发事件
+        /// </summary>
+        /// <param name="obj">选中的文档</param>
+        private void RemoveFilesFromContainer_Command(object obj)
+        {
+            System.Collections.IList items = (System.Collections.IList)obj;
+            if (items == null || items.Cast<OpenFileInfo>() == null)
+                return;
+
+            var collection = items.Cast<OpenFileInfo>();
+            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);
+                }
+
+
+            }
+        }
+
+        /// <summary>
+        ///  删除最近文件的操作
+        /// </summary>
+        /// <param name="selectedItemsType">0:全部文件;1:一个文件;2:多个文件</param>
+        /// <param name="openFileInfo">选中的文件</param>
+        private void RemoveRecentFilesFrom(int selectedItemsType, List<OpenFileInfo> 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();
+        }
+
+    }
+}

+ 1 - 1
PDF Office/Views/HomePanel/HomeGuidContent.xaml

@@ -22,7 +22,7 @@
                     <RowDefinition />
                 </Grid.RowDefinitions>
                 <pDFTools:QuickToolsContent x:Name="hometool" Margin="32,32,0,0"/>
-                <recentFiles:RecentFilesView x:Name="Recentlist" Grid.Row="1" Margin="0,0,32,0" />
+                <recentFiles:RecentFilesContent x:Name="Recentlist" Grid.Row="1" Margin="0,0,32,0" />
             </Grid>
         </ScrollViewer>
     </Grid>

File diff ditekan karena terlalu besar
+ 22 - 43
PDF Office/Views/HomePanel/RecentFiles/RecentFilesView.xaml


+ 32 - 106
PDF Office/Views/HomePanel/RecentFiles/RecentFilesView.xaml.cs

@@ -3,6 +3,7 @@ using Microsoft.Win32;
 using PDF_Office.CustomControl;
 using PDF_Office.Helper;
 using PDF_Office.Properties;
+using PDF_Office.ViewModels.HomePanel.RecentFiles;
 using PDFSettings.Settings;
 using System;
 using System.Collections.Generic;
@@ -19,20 +20,16 @@ using winform = System.Windows.Forms;
 
 namespace PDF_Office.Views.HomePanel.RecentFiles
 {
-    public partial class RecentFilesView : UserControl
+    public partial class RecentFilesContent : UserControl
     {
-       
-        private ObservableCollection<OpenFileInfo> RecentFilesGroup = new ObservableCollection<OpenFileInfo>();
-        public RecentFilesView()
+        private RecentFilesContentViewModel ViewModel => DataContext as RecentFilesContentViewModel;
+        public RecentFilesContent()
         {
             InitializeComponent();
         }
 
         private void UserControl_Loaded(object sender, RoutedEventArgs e)
         {
-            RecentFilesGroup = new ObservableCollection<OpenFileInfo>(Settings.Default.RecentOpenFiles);
-            RecentFilesList.ItemsSource = RecentFilesGroup;
-            GridRecentFilesList.ItemsSource = RecentFilesGroup;
             RecentFilesList.SelectedItem = null;
             ShowListViewContentUI();
         }
@@ -135,37 +132,6 @@ namespace PDF_Office.Views.HomePanel.RecentFiles
 
         #endregion
 
-        private void btnDelete_Click(object sender, RoutedEventArgs e)
-        {
-            string msg = "";
-            int SelectedItemsType = 0;
-            if (RecentFilesList.SelectedItems.Count == RecentFilesList.Items.Count || RecentFilesList.SelectedItems.Count == 0)
-            {
-                if (RecentFilesList.SelectedItems.Count == 1 && RecentFilesList.Items.Count == 1)
-                    msg = "ClearFile";
-                else
-                    msg = "AllClearFiles";
-
-                SelectedItemsType = 0;
-            }
-            else if (RecentFilesList.SelectedItems.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);
-            }
-        }
-
         private void RecentFilesList_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
            
@@ -202,47 +168,23 @@ namespace PDF_Office.Views.HomePanel.RecentFiles
         #endregion
 
         #region Events
-        /// <summary>
-        /// 删除最近文件的操作
-        /// </summary>
-        /// <param name="selectedItemsType">0:全部文件;1:一个文件;2:多个文件</param>
-        private void RemoveRecentFilesFrom(int selectedItemsType)
+       
+
+        private void DeleteMenuItem_Click(object sender, RoutedEventArgs e)
         {
-            if (selectedItemsType == 0)
-            {
-                SettingHelper.RemoveAllRecentOpenFiles();
-                RecentFilesGroup.Clear();
-            }
-            else if (selectedItemsType == 1)
+            if (RecentFilesList.SelectedItems == null || RecentFilesList.SelectedItems.Count == 0)
             {
-                var file = RecentFilesList.SelectedItems[0] as OpenFileInfo;
-                SettingHelper.RemoveRecentOpenFile(file.FilePath);
-                RecentFilesGroup.Remove(file);
+                var item = (sender as MenuItem).DataContext as OpenFileInfo;
+                if (item != null)
+                {
+                    ViewModel?.RemoveFileItemCommand.Execute(item);
+                }
             }
             else
             {
-                List<OpenFileInfo> OpenFileInfos = new List<OpenFileInfo>();
-                foreach (var item in RecentFilesList.SelectedItems)
-                {
-                    var openFileInfo = item as OpenFileInfo;
-                    OpenFileInfos.Add(openFileInfo);
-                }
-
-                foreach (var item in OpenFileInfos)
-                {
-                    SettingHelper.RemoveRecentOpenFile(item.FilePath);
-                    RecentFilesGroup.Remove(item);
-                }
-                OpenFileInfos.Clear();
+                ViewModel?.RemoveFilesFromContainerCommand.Execute(RecentFilesList.SelectedItems);
             }
 
-            ShowListViewContentUI();
-        }
-
-        private void DeleteMenuItem_Click(object sender, RoutedEventArgs e)
-        {
-
-            DeleteFileItem(sender);
         }
 
         private void DeleteItemHandler_Click(object sender, RoutedEventArgs e)
@@ -273,10 +215,10 @@ namespace PDF_Office.Views.HomePanel.RecentFiles
                 else
                     msg = "RecentFiles_SelectedClearMsg";
 
-                if (MessageBoxEx.Show(msg, "", winform.MessageBoxButtons.OKCancel, winform.MessageBoxIcon.Question) == winform.DialogResult.OK)
-                    RemoveRecentFilesFrom(2);
-                else
-                    return;
+                //if (MessageBoxEx.Show(msg, "", winform.MessageBoxButtons.OKCancel, winform.MessageBoxIcon.Question) == winform.DialogResult.OK)
+                //    RemoveRecentFilesFrom(2);
+                //else
+                //    return;
             }
             else
             {
@@ -291,7 +233,7 @@ namespace PDF_Office.Views.HomePanel.RecentFiles
                     if (file != null)
                     {
                         SettingHelper.RemoveRecentOpenFile(file.FilePath);
-                        RecentFilesGroup.Remove(file);
+                      //  RecentFilesGroup.Remove(file);
                     }
                 }
                 else if ((sender as Button) != null)
@@ -301,7 +243,7 @@ namespace PDF_Office.Views.HomePanel.RecentFiles
                     if (file != null)
                     {
                         SettingHelper.RemoveRecentOpenFile(file.FilePath);
-                        RecentFilesGroup.Remove(file);
+                      //  RecentFilesGroup.Remove(file);
                     }
 
                 }
@@ -314,20 +256,24 @@ namespace PDF_Office.Views.HomePanel.RecentFiles
             var item = sender as ListViewItem;
             if (item != null && (item.DataContext as OpenFileInfo) != null)
             {
+               
                 var fileInfo = item.DataContext as OpenFileInfo;
+                if(fileInfo != null)
+                {
+                    ViewModel?.OpenFilesCommand.Execute(fileInfo);
+                }
                 if (File.Exists(fileInfo.FilePath))
                 {
-                    MainWindow parentWindow = Window.GetWindow(this) as MainWindow;
+                    //MainWindow parentWindow = Window.GetWindow(this) as MainWindow;
 
-                    string[] filePath = new string[1];
-                    filePath[0] = fileInfo.FilePath;
-                    parentWindow.LoadPdfViewer(filePath);
+                    //string[] filePath = new string[1];
+                    //filePath[0] = fileInfo.FilePath;
+                    //parentWindow.LoadPdfViewer(filePath);
+                   // ViewModel?.OpenFilesCommand.Execute(fileInfo);
                 }
                 else
                 {
-                    //MessageBoxEx.Show(App.MainPageLoader.GetString("Main_TheFileNotExistWarning"));
-                    SettingHelper.RemoveRecentOpenFile(fileInfo.FilePath);
-                    RecentFilesGroup.Remove(fileInfo);
+                   // ViewModel?.RemoveFilesCommand.Execute(fileInfo);
                     ShowListViewContentUI(); 
                 }
 
@@ -351,27 +297,7 @@ namespace PDF_Office.Views.HomePanel.RecentFiles
         }
         #endregion
 
-        private void PrintFile(CPDFViewer pdfViewer)
-        {
-           
-        }
-
-
-        private void PrintMenuItem_Click(object sender, RoutedEventArgs e)
-        {
-
-        }
-
-        private void FileInfoMenuItem_Click(object sender, RoutedEventArgs e)
-        {
-
-        }
-
-        private void ShareMenuItem_Click(object sender, RoutedEventArgs e)
-        {
-
-        }
-
+   
         private void FilePathMenuItem_Click(object sender, RoutedEventArgs e)
         {