RecentFilesContent.xaml.cs 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. using ComPDFKitViewer.PdfViewer;
  2. using Microsoft.Win32;
  3. using PDF_Office.CustomControl;
  4. using PDF_Office.Helper;
  5. using PDF_Office.Properties;
  6. using PDF_Office.ViewModels.HomePanel.RecentFiles;
  7. using PDFSettings.Settings;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Collections.ObjectModel;
  11. using System.Diagnostics;
  12. using System.IO;
  13. using System.Threading.Tasks;
  14. using System.Windows;
  15. using System.Windows.Controls;
  16. using System.Windows.Input;
  17. using System.Windows.Interop;
  18. using System.Windows.Navigation;
  19. using winform = System.Windows.Forms;
  20. namespace PDF_Office.Views.HomePanel.RecentFiles
  21. {
  22. public partial class RecentFilesContent : UserControl
  23. {
  24. private RecentFilesContentViewModel ViewModel => DataContext as RecentFilesContentViewModel;
  25. public RecentFilesContent()
  26. {
  27. InitializeComponent();
  28. }
  29. private void UserControl_Loaded(object sender, RoutedEventArgs e)
  30. {
  31. RecentFilesList.SelectedItem = null;
  32. ShowListViewContentUI();
  33. }
  34. private void SetLangText()
  35. {
  36. }
  37. private void InitContextMenu()
  38. {
  39. }
  40. private void InitUI()
  41. {
  42. }
  43. #region UI
  44. #region 列表和网格模式
  45. private void ListModeBtn_Click(object sender, RoutedEventArgs e)
  46. {
  47. SwitchFilesMode(sender);
  48. if (BtnListMode.IsChecked == false)
  49. BtnListMode.IsChecked = true;
  50. }
  51. private void GridModeBtn_Click(object sender, RoutedEventArgs e)
  52. {
  53. SwitchFilesMode(sender);
  54. if (BtnGridMode.IsChecked == false)
  55. BtnGridMode.IsChecked = true;
  56. }
  57. private void SwitchFilesMode(object sender)
  58. {
  59. try
  60. {
  61. var btn = sender as CustomIconToggleBtn;
  62. switch (btn.Tag.ToString())
  63. {
  64. case "ListMode":
  65. BtnGridMode.IsChecked = false;
  66. GridRecentFilesList.Visibility = Visibility.Collapsed;
  67. RecentFilesList.Visibility = Visibility.Visible;
  68. RecentFilesList.SelectedItems.Clear();
  69. if (GridRecentFilesList.SelectedItems.Count > 0)
  70. {
  71. for (int i = 0; i < GridRecentFilesList.SelectedItems.Count; i++)
  72. {
  73. RecentFilesList.SelectedItems.Add(GridRecentFilesList.SelectedItems[i]);
  74. }
  75. }
  76. break;
  77. case "GridMode":
  78. BtnListMode.IsChecked=false;
  79. GridRecentFilesList.Visibility = Visibility.Visible;
  80. RecentFilesList.Visibility = Visibility.Collapsed;
  81. GridRecentFilesList.SelectedItems.Clear();
  82. if (RecentFilesList.SelectedItems.Count > 0)
  83. {
  84. for (int i = 0; i < RecentFilesList.SelectedItems.Count; i++)
  85. {
  86. GridRecentFilesList.SelectedItems.Add(RecentFilesList.SelectedItems[i]);
  87. }
  88. }
  89. break;
  90. }
  91. }
  92. catch { }
  93. }
  94. private void ShowListViewContentUI()
  95. {
  96. if (RecentFilesList.Items.Count == 0)
  97. {
  98. BlankContentPanel.Visibility = Visibility.Visible;
  99. RecentFilesList.Visibility = Visibility.Collapsed;
  100. PnlRightBtns.Visibility = Visibility.Collapsed;
  101. }
  102. else
  103. {
  104. RecentFilesList.Visibility = Visibility.Visible;
  105. PnlRightBtns.Visibility = Visibility.Visible;
  106. BlankContentPanel.Visibility = Visibility.Collapsed;
  107. }
  108. }
  109. #endregion
  110. private void RecentFilesList_SelectionChanged(object sender, SelectionChangedEventArgs e)
  111. {
  112. }
  113. private void GridRecentFilesList_SelectionChanged(object sender, SelectionChangedEventArgs e)
  114. {
  115. }
  116. private void ContextMenu_Opened(object sender, RoutedEventArgs e)
  117. {
  118. }
  119. /// <summary>
  120. /// 未被选中的项目,或只有一个被选中的项
  121. /// </summary>
  122. private void showMoreContexMenu(ContextMenu contexMenu)
  123. {
  124. foreach (var item in contexMenu.Items)
  125. {
  126. var menuitem = item as MenuItem;
  127. menuitem.Visibility = Visibility.Visible;
  128. }
  129. }
  130. private void ListViewItem_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
  131. {
  132. Trace.WriteLine("Preview MouseRightButtonDown");
  133. e.Handled = true;
  134. }
  135. #endregion
  136. #region Events
  137. private void DeleteMenuItem_Click(object sender, RoutedEventArgs e)
  138. {
  139. if (RecentFilesList.SelectedItems == null || RecentFilesList.SelectedItems.Count == 0)
  140. {
  141. var item = (sender as MenuItem).DataContext as OpenFileInfo;
  142. if (item != null)
  143. {
  144. ViewModel?.RemoveFileItemCommand.Execute(item);
  145. }
  146. }
  147. else
  148. {
  149. ViewModel?.RemoveFilesFromContainerCommand.Execute(RecentFilesList.SelectedItems);
  150. }
  151. }
  152. private void DeleteItemHandler_Click(object sender, RoutedEventArgs e)
  153. {
  154. DeleteFileItem(sender);
  155. }
  156. private bool IsSelectedFile(object sender)
  157. {
  158. return true;
  159. }
  160. private void DeleteFileItem(object sender)
  161. {
  162. if (RecentFilesList.SelectedItems.Count > 1)
  163. {
  164. var isSelected = IsSelectedFile(sender);
  165. if (!isSelected)
  166. {
  167. ShowListViewContentUI();
  168. return;
  169. }
  170. string msg = "";
  171. if (RecentFilesList.SelectedItems.Count == RecentFilesList.Items.Count)
  172. msg = "RecentFiles_AllClearMsg";
  173. else
  174. msg = "RecentFiles_SelectedClearMsg";
  175. //if (MessageBoxEx.Show(msg, "", winform.MessageBoxButtons.OKCancel, winform.MessageBoxIcon.Question) == winform.DialogResult.OK)
  176. // RemoveRecentFilesFrom(2);
  177. //else
  178. // return;
  179. }
  180. else
  181. {
  182. if (MessageBoxEx.Show("RecentFiles_ClearMsg", "", winform.MessageBoxButtons.OKCancel, winform.MessageBoxIcon.Question) != winform.DialogResult.OK)
  183. return;
  184. OpenFileInfo file = null;
  185. if ((sender as MenuItem) != null)
  186. {
  187. var menuItem = sender as MenuItem;
  188. file = menuItem.DataContext as OpenFileInfo;
  189. if (file != null)
  190. {
  191. SettingHelper.RemoveRecentOpenFile(file.FilePath);
  192. // RecentFilesGroup.Remove(file);
  193. }
  194. }
  195. else if ((sender as Button) != null)
  196. {
  197. var btn = sender as Button;
  198. file = btn.DataContext as OpenFileInfo;
  199. if (file != null)
  200. {
  201. SettingHelper.RemoveRecentOpenFile(file.FilePath);
  202. // RecentFilesGroup.Remove(file);
  203. }
  204. }
  205. }
  206. ShowListViewContentUI();
  207. }
  208. private void RecentFilesList_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
  209. {
  210. var item = sender as ListViewItem;
  211. if (item != null && (item.DataContext as OpenFileInfo) != null)
  212. {
  213. var fileInfo = item.DataContext as OpenFileInfo;
  214. if(fileInfo != null)
  215. {
  216. ViewModel?.OpenFilesCommand.Execute(fileInfo);
  217. }
  218. if (File.Exists(fileInfo.FilePath))
  219. {
  220. //MainWindow parentWindow = Window.GetWindow(this) as MainWindow;
  221. //string[] filePath = new string[1];
  222. //filePath[0] = fileInfo.FilePath;
  223. //parentWindow.LoadPdfViewer(filePath);
  224. // ViewModel?.OpenFilesCommand.Execute(fileInfo);
  225. }
  226. else
  227. {
  228. // ViewModel?.RemoveFilesCommand.Execute(fileInfo);
  229. ShowListViewContentUI();
  230. }
  231. }
  232. }
  233. private async void OpenFiles_Click(object sender, RoutedEventArgs e)
  234. {
  235. var dlg = new OpenFileDialog();
  236. dlg.Multiselect = true;
  237. dlg.Filter = Properties.Resources.OpenDialogFilter;
  238. if (dlg.ShowDialog() == true)
  239. {
  240. await Task.Delay(3);
  241. MainWindow parentWindow = Window.GetWindow(this) as MainWindow;
  242. parentWindow.LoadPdfViewer(dlg.FileNames);
  243. }
  244. }
  245. #endregion
  246. private void FilePathMenuItem_Click(object sender, RoutedEventArgs e)
  247. {
  248. }
  249. }
  250. }