HistoryFilesManager.swift 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. //
  2. // HistoryFilesManager.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by Niehaoyu on 2024/10/10.
  6. //
  7. import Foundation
  8. public enum HistoryFileShowMode : Int {
  9. case Thumbnail = 0
  10. case List
  11. }
  12. class HistoryFilesManager: NSObject {
  13. @objc public static let manager = HistoryFilesManager()
  14. var showMode: HistoryFileShowMode = .Thumbnail {
  15. didSet {
  16. UserDefaults.standard.setValue(showMode.rawValue, forKey: "HistoryFileShowModeKey")
  17. UserDefaults.standard.synchronize()
  18. }
  19. }//显示模式
  20. var files: [URL] = [] //列表文件
  21. var selectFiles: [URL] = [] //选中的列表文件
  22. override init() {
  23. super.init()
  24. self.refreshHistoryFile()
  25. if UserDefaults.standard.object(forKey: "SetHistoryFileShowModeKey") == nil {
  26. self.showMode = .Thumbnail
  27. UserDefaults.standard.setValue("show", forKey: "SetHistoryFileShowModeKey")
  28. UserDefaults.standard.synchronize()
  29. } else {
  30. self.showMode = HistoryFileShowMode(rawValue: UserDefaults.standard.integer(forKey: "HistoryFileShowModeKey"))!
  31. }
  32. }
  33. func refreshHistoryFile() -> Void {
  34. files.removeAll()
  35. for url in NSDocumentController.shared.recentDocumentURLs {
  36. if FileManager.default.fileExists(atPath: url.path) {
  37. files.append(url)
  38. }
  39. }
  40. let fileNumber = SettingsManager.sharedInstance.fileListCount
  41. if fileNumber <= files.count {
  42. let arr1 = files.prefix(fileNumber)
  43. files = Array(arr1)
  44. }
  45. }
  46. func historyFileDeleteAction(_ indexPaths: [URL]) -> Void {
  47. let urls: Array<URL> = NSDocumentController.shared.recentDocumentURLs
  48. NSDocumentController.shared.clearRecentDocuments(nil)
  49. for (_, url) in urls.enumerated() {
  50. if !indexPaths.contains(url) {
  51. NSDocumentController.shared.noteNewRecentDocumentURL(url)
  52. }
  53. }
  54. refreshHistoryFile()
  55. HistoryFilesManager.manager.selectFiles.removeAll()
  56. }
  57. }