KMHomeFilesHeaderView.swift 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. //
  2. // KMHomeFilesHeaderView.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by Niehaoyu on 2024/10/10.
  6. //
  7. import Cocoa
  8. import KMComponentLibrary
  9. @objc public protocol KMHomeFilesHeaderViewDelegate: AnyObject {
  10. @objc optional func homeFilesShowModeDidUpdate(_ view: KMHomeFilesHeaderView)
  11. @objc optional func homeFilesHeaderViewDeleteButtonClicked(_ view: KMHomeFilesHeaderView)
  12. }
  13. public class KMHomeFilesHeaderView: BaseXibView {
  14. @IBOutlet var contendBox: NSBox!
  15. @IBOutlet var titleLabel: NSTextField!
  16. @IBOutlet var typeSegmented: ComponentSegmented!
  17. @IBOutlet var deleteButton: ComponentButton!
  18. let thumbProperty = ComponentSegmentedProperty(size: .s, active: false, iconImage: NSImage(named: "file_thumb"), iconImage_active: NSImage(named: "file_thumb_active"))
  19. let listProperty = ComponentSegmentedProperty(size: .s, active: false, iconImage: NSImage(named: "file_list"), iconImage_active: NSImage(named: "file_list_active"))
  20. weak open var delegate: KMHomeFilesHeaderViewDelegate?
  21. public override func draw(_ dirtyRect: NSRect) {
  22. super.draw(dirtyRect)
  23. // Drawing code here.
  24. }
  25. public required init?(coder decoder: NSCoder) {
  26. super.init(coder: decoder)
  27. }
  28. override init(frame frameRect: NSRect) {
  29. super.init(frame: frameRect)
  30. }
  31. public override func awakeFromNib() {
  32. super.awakeFromNib()
  33. setUpProperty()
  34. reloadData()
  35. updateDeleteButtonState()
  36. }
  37. override func updateUILanguage() {
  38. super.updateUILanguage()
  39. setUpProperty()
  40. }
  41. override func updateUIThemeColor() {
  42. super.updateUIThemeColor()
  43. setUpProperty()
  44. }
  45. func setUpProperty() {
  46. titleLabel.stringValue = KMLocalizedString("Recent")
  47. titleLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/1")
  48. titleLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-m-bold")
  49. if true {
  50. thumbProperty.toolTips = KMLocalizedString("Thumbnails")
  51. listProperty.toolTips = KMLocalizedString("List")
  52. var itemArr: [ComponentSegmentedProperty] = []
  53. itemArr.append(thumbProperty)
  54. itemArr.append(listProperty)
  55. typeSegmented.updateItemProperty(itemArr)
  56. }
  57. typeSegmented.delegate = self
  58. deleteButton.properties = ComponentButtonProperty(type: .default_tertiary,
  59. size: .xxs,
  60. state: .normal,
  61. onlyIcon: true,
  62. keepPressState: false)
  63. deleteButton.properties.propertyInfo.leftIcon_nor = NSImage(named: "file_delete")
  64. deleteButton.properties.propertyInfo.leftIcon_dis = NSImage(named: "file_delete_dis")
  65. deleteButton.toolTip = KMLocalizedString("Delete")
  66. deleteButton.reloadData()
  67. deleteButton.setTarget(self, action: #selector(deleteButtonClicked(_:)))
  68. }
  69. private func reloadData() {
  70. if HistoryFilesManager.manager.showMode == .Thumbnail {
  71. thumbProperty.active = true
  72. listProperty.active = false
  73. } else if HistoryFilesManager.manager.showMode == .List {
  74. thumbProperty.active = false
  75. listProperty.active = true
  76. }
  77. typeSegmented.reloadData()
  78. }
  79. func updateDeleteButtonState() {
  80. if HistoryFilesManager.manager.files.count == 0 {
  81. deleteButton.properties.isDisabled = true
  82. } else {
  83. deleteButton.properties.isDisabled = false
  84. }
  85. deleteButton.reloadData()
  86. }
  87. @objc func deleteButtonClicked(_ sender: NSView) {
  88. delegate?.homeFilesHeaderViewDeleteButtonClicked?(self)
  89. }
  90. //MARK: - MouseEvent
  91. }
  92. extension KMHomeFilesHeaderView: ComponentSegmentedDelegate {
  93. public func componentSegmentedDidSelected(_ view: ComponentSegmented, item: ComponentSegmentedItem) {
  94. if item.properties == thumbProperty {
  95. HistoryFilesManager.manager.showMode = .Thumbnail
  96. } else if item.properties == listProperty {
  97. HistoryFilesManager.manager.showMode = .List
  98. }
  99. self.reloadData()
  100. self.delegate?.homeFilesShowModeDidUpdate?(self)
  101. }
  102. }