KMHomeContentView.swift 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. //
  2. // KMHomeContentView.swift
  3. // PDF Master
  4. //
  5. // Created by lizhe on 2023/10/27.
  6. //
  7. import Cocoa
  8. typealias KMHomeContentViewHistoryDidSelect = (_ view: KMHomeContentView, _ url: KMHomeHistoryListViewModel) -> Void
  9. typealias KMHomeContentViewHistoryShowPathAction = (_ view: KMHomeContentView, _ url: KMHomeHistoryListViewModel) -> Void
  10. typealias KMHomeContentViewHistoryrRemoveFileAction = (_ view: KMHomeContentView, _ url: KMHomeHistoryListViewModel) -> Void
  11. typealias KMHomeContentViewHistoryrRemoveAllFileAction = (_ view: KMHomeContentView) -> Void
  12. typealias KMHomeContentViewQucikToolsDidSelect = (_ view: KMHomeContentView, _ item: KMQucikToolsModel) -> Void
  13. typealias KMHomeContentViewQucikToolsAddAction = (_ view: KMHomeContentView, _ item: KMQucikToolsModel) -> Void
  14. typealias KMHomeContentViewQucikToolsRemoveAction = (_ view: KMHomeContentView, _ item: KMQucikToolsModel) -> Void
  15. class KMHomeContentView: KMBaseXibView {
  16. @IBOutlet weak var qucikToolsLabel: NSTextField!
  17. @IBOutlet weak var qucikToolsView: KMQucikToolsView!
  18. @IBOutlet weak var leftButton: NSButton!
  19. @IBOutlet weak var pageLabel: NSTextField!
  20. @IBOutlet weak var rightButton: NSButton!
  21. @IBOutlet weak var moreButton: KMButton!
  22. @IBOutlet weak var recentlyLabel: NSTextField!
  23. @IBOutlet weak var historyListView: KMHomeHistoryListView!
  24. @IBOutlet weak var horizontalButton: KMButton!
  25. @IBOutlet weak var verticalButton: KMButton!
  26. @IBOutlet weak var cleanButton: KMButton!
  27. var historyDidSelect: KMHomeContentViewHistoryDidSelect?
  28. var historyShowPathAction: KMHomeContentViewHistoryShowPathAction?
  29. var historyRemoveFileAction: KMHomeContentViewHistoryrRemoveFileAction?
  30. var historyRemoveAllFileAction: KMHomeContentViewHistoryrRemoveAllFileAction?
  31. var qucikToolsDidSelect: KMHomeContentViewQucikToolsDidSelect?
  32. var qucikToolsAddAction: KMHomeContentViewQucikToolsAddAction?
  33. var qucikToolsRemoveAction: KMHomeContentViewQucikToolsRemoveAction?
  34. override func draw(_ dirtyRect: NSRect) {
  35. super.draw(dirtyRect)
  36. // Drawing code here.
  37. self.setup()
  38. }
  39. override func setup() {
  40. self.pageLabel.textColor = KMAppearance.Layout.h0Color()
  41. self.qucikToolsView.didSelect = { [unowned self] view, item in
  42. guard let callBack = qucikToolsDidSelect else { return }
  43. callBack(self, item)
  44. }
  45. self.qucikToolsView.pageChange = { [unowned self] view in
  46. self.updatePageLabel()
  47. }
  48. self.qucikToolsView.addAction = { [unowned self] view, item in
  49. self.qucikToolsAddAction?(self, item)
  50. }
  51. self.qucikToolsView.removeAction = { [unowned self] view, item in
  52. self.qucikToolsRemoveAction?(self, item)
  53. }
  54. self.historyListView.didSelect = { [unowned self] view, item in
  55. guard let callBack = historyDidSelect else { return }
  56. callBack(self, item)
  57. }
  58. self.historyListView.removeFileAction = { [unowned self] view, item in
  59. guard let callBack = historyRemoveFileAction else { return }
  60. callBack(self, item)
  61. }
  62. self.historyListView.showPathAction = { [unowned self] view, item in
  63. guard let callBack = historyShowPathAction else { return }
  64. callBack(self, item)
  65. }
  66. cleanButton.mouseMoveCallback = { [unowned self] enter in
  67. if enter {
  68. self.cleanButton.image = NSImage(named: "KMImageNameHomeDeletHor")
  69. } else {
  70. self.cleanButton.image = NSImage(named: "KMImageNameHomeDeletNor")
  71. }
  72. }
  73. moreButton.mouseMoveCallback = { [unowned self] enter in
  74. if enter {
  75. self.moreButton.image = NSImage(named: "KMImageNameUXIconHomeMorePre")
  76. } else {
  77. self.moreButton.image = NSImage(named: "KMImageNameUXIconHomeMoreNor")
  78. }
  79. }
  80. self.updatePageLabel()
  81. self.updateRecentlyListState()
  82. }
  83. func updatePageLabel() {
  84. self.pageLabel.stringValue = "\(qucikToolsView.currentPage()) / \(qucikToolsView.pageCount())"
  85. }
  86. func updateRecentlyListState() {
  87. let showType = self.historyListView.showType
  88. if showType == .horizontal {
  89. verticalButton.image = NSImage(named: "KMImageNameUXIconHomeViewthumbnailNor")
  90. horizontalButton.image = NSImage(named: "KMImageNameUXIconHomeViewlistPre")
  91. } else if showType == .vertical {
  92. verticalButton.image = NSImage(named: "KMImageNameUXIconHomeViewthumbnailPre")
  93. horizontalButton.image = NSImage(named: "KMImageNameUXIconHomeViewlistNor")
  94. }
  95. }
  96. }
  97. //MARK: Action
  98. extension KMHomeContentView {
  99. @IBAction func leftButtonAction(_ sender: Any) {
  100. self.qucikToolsView.previousPage()
  101. }
  102. @IBAction func rightButtonAction(_ sender: Any) {
  103. self.qucikToolsView.nextPage()
  104. }
  105. @IBAction func moreButtonAction(_ sender: Any) {
  106. let homeQuickToolsWindowController: KMHomeQuickToolsWindowController = KMHomeQuickToolsWindowController.sharedHomeQuickTools
  107. homeQuickToolsWindowController.window?.center()
  108. NSWindow.currentWindow().addChildWindow(homeQuickToolsWindowController.window!, ordered: NSWindow.OrderingMode.above)
  109. homeQuickToolsWindowController.dataChange = { [unowned self] controller in
  110. self.qucikToolsView.reloadData()
  111. }
  112. }
  113. @IBAction func horizontalButtonAction(_ sender: Any) {
  114. self.historyListView.showType = .horizontal
  115. self.updateRecentlyListState()
  116. }
  117. @IBAction func verticalButtonAction(_ sender: Any) {
  118. self.historyListView.showType = .vertical
  119. self.updateRecentlyListState()
  120. }
  121. @IBAction func cleanButtonAction(_ sender: Any) {
  122. guard let callBack = historyRemoveAllFileAction else { return }
  123. callBack(self)
  124. }
  125. }