RecentFilesView.xaml.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380
  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 PDFSettings.Settings;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Collections.ObjectModel;
  10. using System.Diagnostics;
  11. using System.IO;
  12. using System.Windows;
  13. using System.Windows.Controls;
  14. using System.Windows.Input;
  15. using System.Windows.Interop;
  16. using System.Windows.Navigation;
  17. using winform = System.Windows.Forms;
  18. namespace PDF_Office.Views.HomePanel.RecentFiles
  19. {
  20. public partial class RecentFilesView : UserControl
  21. {
  22. private ObservableCollection<OpenFileInfo> RecentFilesGroup = new ObservableCollection<OpenFileInfo>();
  23. public RecentFilesView()
  24. {
  25. InitializeComponent();
  26. }
  27. private void UserControl_Loaded(object sender, RoutedEventArgs e)
  28. {
  29. RecentFilesGroup = new ObservableCollection<OpenFileInfo>(Settings.Default.RecentOpenFiles);
  30. RecentFilesList.ItemsSource = RecentFilesGroup;
  31. GridRecentFilesList.ItemsSource = RecentFilesGroup;
  32. RecentFilesList.SelectedItem = null;
  33. ShowListViewContentUI();
  34. }
  35. private void SetLangText()
  36. {
  37. }
  38. private void InitContextMenu()
  39. {
  40. }
  41. private void InitUI()
  42. {
  43. }
  44. #region UI
  45. #region 列表和网格模式
  46. private void ListModeBtn_Click(object sender, RoutedEventArgs e)
  47. {
  48. SwitchFilesMode(sender);
  49. if (BtnListMode.IsChecked == false)
  50. BtnListMode.IsChecked = true;
  51. }
  52. private void GridModeBtn_Click(object sender, RoutedEventArgs e)
  53. {
  54. SwitchFilesMode(sender);
  55. if (BtnGridMode.IsChecked == false)
  56. BtnGridMode.IsChecked = true;
  57. }
  58. private void SwitchFilesMode(object sender)
  59. {
  60. try
  61. {
  62. var btn = sender as CustomIconToggleBtn;
  63. switch (btn.Tag.ToString())
  64. {
  65. case "ListMode":
  66. BtnGridMode.IsChecked = false;
  67. GridRecentFilesList.Visibility = Visibility.Collapsed;
  68. RecentFilesList.Visibility = Visibility.Visible;
  69. RecentFilesList.SelectedItems.Clear();
  70. if (GridRecentFilesList.SelectedItems.Count > 0)
  71. {
  72. for (int i = 0; i < GridRecentFilesList.SelectedItems.Count; i++)
  73. {
  74. RecentFilesList.SelectedItems.Add(GridRecentFilesList.SelectedItems[i]);
  75. }
  76. }
  77. break;
  78. case "GridMode":
  79. BtnListMode.IsChecked=false;
  80. GridRecentFilesList.Visibility = Visibility.Visible;
  81. RecentFilesList.Visibility = Visibility.Collapsed;
  82. GridRecentFilesList.SelectedItems.Clear();
  83. if (RecentFilesList.SelectedItems.Count > 0)
  84. {
  85. for (int i = 0; i < RecentFilesList.SelectedItems.Count; i++)
  86. {
  87. GridRecentFilesList.SelectedItems.Add(RecentFilesList.SelectedItems[i]);
  88. }
  89. }
  90. break;
  91. }
  92. }
  93. catch { }
  94. }
  95. private void ShowListViewContentUI()
  96. {
  97. if (RecentFilesList.Items.Count == 0)
  98. {
  99. BlankContentPanel.Visibility = Visibility.Visible;
  100. RecentFilesList.Visibility = Visibility.Collapsed;
  101. PnlRightBtns.Visibility = Visibility.Collapsed;
  102. }
  103. else
  104. {
  105. RecentFilesList.Visibility = Visibility.Visible;
  106. PnlRightBtns.Visibility = Visibility.Visible;
  107. BlankContentPanel.Visibility = Visibility.Collapsed;
  108. }
  109. }
  110. #endregion
  111. private void btnDelete_Click(object sender, RoutedEventArgs e)
  112. {
  113. string msg = "";
  114. int SelectedItemsType = 0;
  115. if (RecentFilesList.SelectedItems.Count == RecentFilesList.Items.Count || RecentFilesList.SelectedItems.Count == 0)
  116. {
  117. if (RecentFilesList.SelectedItems.Count == 1 && RecentFilesList.Items.Count == 1)
  118. msg = "ClearFile";
  119. else
  120. msg = "AllClearFiles";
  121. SelectedItemsType = 0;
  122. }
  123. else if (RecentFilesList.SelectedItems.Count == 1)
  124. {
  125. msg = "ClearFile";
  126. SelectedItemsType = 1;
  127. }
  128. else
  129. {
  130. msg = "ClearSelectedFiles";
  131. SelectedItemsType = 2;
  132. }
  133. winform.DialogResult result = MessageBoxEx.Show(msg, "", winform.MessageBoxButtons.OKCancel, winform.MessageBoxIcon.Question);
  134. if (result == winform.DialogResult.OK)
  135. {
  136. RemoveRecentFilesFrom(SelectedItemsType);
  137. }
  138. }
  139. private void RecentFilesList_SelectionChanged(object sender, SelectionChangedEventArgs e)
  140. {
  141. }
  142. private void GridRecentFilesList_SelectionChanged(object sender, SelectionChangedEventArgs e)
  143. {
  144. }
  145. private void ContextMenu_Opened(object sender, RoutedEventArgs e)
  146. {
  147. }
  148. /// <summary>
  149. /// 未被选中的项目,或只有一个被选中的项
  150. /// </summary>
  151. private void showMoreContexMenu(ContextMenu contexMenu)
  152. {
  153. foreach (var item in contexMenu.Items)
  154. {
  155. var menuitem = item as MenuItem;
  156. menuitem.Visibility = Visibility.Visible;
  157. }
  158. }
  159. private void ListViewItem_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
  160. {
  161. Trace.WriteLine("Preview MouseRightButtonDown");
  162. e.Handled = true;
  163. }
  164. #endregion
  165. #region Events
  166. /// <summary>
  167. /// 删除最近文件的操作
  168. /// </summary>
  169. /// <param name="selectedItemsType">0:全部文件;1:一个文件;2:多个文件</param>
  170. private void RemoveRecentFilesFrom(int selectedItemsType)
  171. {
  172. if (selectedItemsType == 0)
  173. {
  174. SettingHelper.RemoveAllRecentOpenFiles();
  175. RecentFilesGroup.Clear();
  176. }
  177. else if (selectedItemsType == 1)
  178. {
  179. var file = RecentFilesList.SelectedItems[0] as OpenFileInfo;
  180. SettingHelper.RemoveRecentOpenFile(file.FilePath);
  181. RecentFilesGroup.Remove(file);
  182. }
  183. else
  184. {
  185. List<OpenFileInfo> OpenFileInfos = new List<OpenFileInfo>();
  186. foreach (var item in RecentFilesList.SelectedItems)
  187. {
  188. var openFileInfo = item as OpenFileInfo;
  189. OpenFileInfos.Add(openFileInfo);
  190. }
  191. foreach (var item in OpenFileInfos)
  192. {
  193. SettingHelper.RemoveRecentOpenFile(item.FilePath);
  194. RecentFilesGroup.Remove(item);
  195. }
  196. OpenFileInfos.Clear();
  197. }
  198. ShowListViewContentUI();
  199. }
  200. private void DeleteMenuItem_Click(object sender, RoutedEventArgs e)
  201. {
  202. DeleteFileItem(sender);
  203. }
  204. private void DeleteItemHandler_Click(object sender, RoutedEventArgs e)
  205. {
  206. DeleteFileItem(sender);
  207. }
  208. private bool IsSelectedFile(object sender)
  209. {
  210. return true;
  211. }
  212. private void DeleteFileItem(object sender)
  213. {
  214. if (RecentFilesList.SelectedItems.Count > 1)
  215. {
  216. var isSelected = IsSelectedFile(sender);
  217. if (!isSelected)
  218. {
  219. ShowListViewContentUI();
  220. return;
  221. }
  222. string msg = "";
  223. if (RecentFilesList.SelectedItems.Count == RecentFilesList.Items.Count)
  224. msg = "RecentFiles_AllClearMsg";
  225. else
  226. msg = "RecentFiles_SelectedClearMsg";
  227. if (MessageBoxEx.Show(msg, "", winform.MessageBoxButtons.OKCancel, winform.MessageBoxIcon.Question) == winform.DialogResult.OK)
  228. RemoveRecentFilesFrom(2);
  229. else
  230. return;
  231. }
  232. else
  233. {
  234. if (MessageBoxEx.Show("RecentFiles_ClearMsg", "", winform.MessageBoxButtons.OKCancel, winform.MessageBoxIcon.Question) != winform.DialogResult.OK)
  235. return;
  236. OpenFileInfo file = null;
  237. if ((sender as MenuItem) != null)
  238. {
  239. var menuItem = sender as MenuItem;
  240. file = menuItem.DataContext as OpenFileInfo;
  241. if (file != null)
  242. {
  243. SettingHelper.RemoveRecentOpenFile(file.FilePath);
  244. RecentFilesGroup.Remove(file);
  245. }
  246. }
  247. else if ((sender as Button) != null)
  248. {
  249. var btn = sender as Button;
  250. file = btn.DataContext as OpenFileInfo;
  251. if (file != null)
  252. {
  253. SettingHelper.RemoveRecentOpenFile(file.FilePath);
  254. RecentFilesGroup.Remove(file);
  255. }
  256. }
  257. }
  258. ShowListViewContentUI();
  259. }
  260. private void RecentFilesList_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
  261. {
  262. var item = sender as ListViewItem;
  263. if (item != null && (item.DataContext as OpenFileInfo) != null)
  264. {
  265. var fileInfo = item.DataContext as OpenFileInfo;
  266. if (File.Exists(fileInfo.FilePath))
  267. {
  268. MainWindow parentWindow = Window.GetWindow(this) as MainWindow;
  269. string[] filePath = new string[1];
  270. filePath[0] = fileInfo.FilePath;
  271. parentWindow.LoadPdfViewer(filePath);
  272. }
  273. else
  274. {
  275. //MessageBoxEx.Show(App.MainPageLoader.GetString("Main_TheFileNotExistWarning"));
  276. SettingHelper.RemoveRecentOpenFile(fileInfo.FilePath);
  277. RecentFilesGroup.Remove(fileInfo);
  278. ShowListViewContentUI();
  279. }
  280. }
  281. }
  282. private void OpenFiles_Click(object sender, RoutedEventArgs e)
  283. {
  284. var dlg = new OpenFileDialog();
  285. dlg.Multiselect = true;
  286. dlg.Filter = Properties.Resources.OpenDialogFilter;
  287. if (dlg.ShowDialog() == true)
  288. {
  289. MainWindow parentWindow = Window.GetWindow(this) as MainWindow;
  290. parentWindow.LoadPdfViewer(dlg.FileNames);
  291. }
  292. }
  293. #endregion
  294. private void PrintFile(CPDFViewer pdfViewer)
  295. {
  296. }
  297. private void PrintMenuItem_Click(object sender, RoutedEventArgs e)
  298. {
  299. }
  300. private void FileInfoMenuItem_Click(object sender, RoutedEventArgs e)
  301. {
  302. }
  303. private void ShareMenuItem_Click(object sender, RoutedEventArgs e)
  304. {
  305. }
  306. private void FilePathMenuItem_Click(object sender, RoutedEventArgs e)
  307. {
  308. }
  309. }
  310. }