KMBotaLeftView.swift 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. //
  2. // KMBotaLeftView.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by tangchao on 2023/11/22.
  6. //
  7. import Cocoa
  8. class KMBotaLeftView: NSView {
  9. var segmentedControl: KMSegmentedControl = {
  10. let view = KMSegmentedControl()
  11. return view
  12. }()
  13. var helpButton: KMCoverButton = {
  14. let view = KMCoverButton()
  15. view.title = ""
  16. view.image = NSImage(named: "KMImgNameUserFbHelpIcon")
  17. view.isBordered = false
  18. return view
  19. }()
  20. var ttsButton: NSButton = {
  21. let view = NSButton()
  22. view.title = ""
  23. view.image = NSImage(named: "KMImageNameBotaNewUserTTSGuide")
  24. view.isBordered = false
  25. view.imageScaling = NSImageScaling.scaleAxesIndependently
  26. return view
  27. }()
  28. private lazy var newUserGuideButton_: NSButton = {
  29. let view = NSButton()
  30. view.title = ""
  31. view.image = NSImage(named: "KMImageNameBotaNewUserGuide")
  32. view.isBordered = false
  33. view.imageScaling = NSImageScaling.scaleAxesIndependently
  34. return view
  35. }()
  36. var itemClick: KMItemClickBlock<KMBotaLeftView>?
  37. override init(frame frameRect: NSRect) {
  38. super.init(frame: frameRect)
  39. self.initSubview()
  40. self.initDefaultValue()
  41. }
  42. required init?(coder: NSCoder) {
  43. super.init(coder: coder)
  44. self.initSubview()
  45. self.initDefaultValue()
  46. }
  47. func initSubview() {
  48. self.addSubview(self.segmentedControl)
  49. self.addSubview(self.helpButton)
  50. self.addSubview(self.ttsButton)
  51. self.addSubview(self.newUserGuideButton_)
  52. self.ttsButton.target = self
  53. self.ttsButton.action = #selector(ttsAction)
  54. newUserGuideButton_.target = self
  55. newUserGuideButton_.action = #selector(newUserGuideAction)
  56. }
  57. func initDefaultValue() {
  58. self.segmentedControl.direction = .vertical
  59. self.segmentedControl.setSegmentCount(6, with: 44)
  60. self.segmentedControl.setImage(NSImage(named: KMImageNameUXIconSidetabbarSearchNor)!, for: 0)
  61. self.segmentedControl.setImage(NSImage(named: KMImageNameUXIconSidetabbarThumbnailNor)!, for: 1)
  62. self.segmentedControl.setImage(NSImage(named: KMImageNameUXIconSidetabbarOutlineNor)!, for: 2)
  63. self.segmentedControl.setImage(NSImage(named: KMImageNameUXIconSidetabbarAnnotationNor)!, for: 3)
  64. self.segmentedControl.setImage(NSImage(named: "KMImageNameSidebarBookMarkNor")!, for: 4)
  65. self.segmentedControl.setImage(NSImage(named: KMImageNameUXIconSidetabbarSnapshotNor)!, for: 5)
  66. self.segmentedControl.setToolTip(KMLocalizedString("Search", nil), for: 0)
  67. self.segmentedControl.setToolTip(KMLocalizedString("View Thumbnails", nil), for: 1)
  68. self.segmentedControl.setToolTip(KMLocalizedString("View Outline", nil), for: 2)
  69. self.segmentedControl.setToolTip(KMLocalizedString("View Notes", nil), for: 3)
  70. self.segmentedControl.setToolTip(KMLocalizedString("View Bookmarks", nil), for: 4)
  71. self.segmentedControl.setToolTip(KMLocalizedString("View Snapshots", nil), for: 5)
  72. self.segmentedControl.selectedSegment = UInt8.max
  73. self.segmentedControl.wantsLayer = true
  74. self.segmentedControl.layer?.backgroundColor = KMAppearance.Layout.l_1Color().cgColor
  75. }
  76. override func layout() {
  77. super.layout()
  78. self.segmentedControl.frame = self.bounds
  79. let leftMargin: CGFloat = 4
  80. let buttonSize: CGFloat = 36
  81. self.helpButton.frame = NSMakeRect(leftMargin, 0, buttonSize, buttonSize)
  82. let ttsButtonSize: CGFloat = 16
  83. let ttsButtonLeft = (buttonSize-ttsButtonSize)*0.5 + leftMargin
  84. self.ttsButton.frame = NSMakeRect(ttsButtonLeft, NSMaxY(self.helpButton.frame)+6, ttsButtonSize, ttsButtonSize)
  85. let newUserGuideSize = ttsButtonSize
  86. let newUserGuideLeft = (buttonSize-newUserGuideSize)*0.5 + leftMargin
  87. let newUserGuideTop = NSMaxY(self.ttsButton.frame)+16
  88. self.newUserGuideButton_.frame = NSMakeRect(newUserGuideLeft, newUserGuideTop, newUserGuideSize, newUserGuideSize)
  89. }
  90. override func draw(_ dirtyRect: NSRect) {
  91. super.draw(dirtyRect)
  92. }
  93. override func interfaceThemeDidChanged(_ appearance: NSAppearance.Name) {
  94. super.interfaceThemeDidChanged(appearance)
  95. self.segmentedControl.appearance = .init(named: appearance)
  96. self.segmentedControl.wantsLayer = true
  97. // self.segmentedControl.layer?.backgroundColor = KMAppearance.Layout.l_1Color().cgColor
  98. if KMAppearance.isDarkMode() {
  99. self.segmentedControl.layer?.backgroundColor = NSColor.km_init(hex: "#393B3E", alpha: 1).cgColor
  100. } else {
  101. self.segmentedControl.layer?.backgroundColor = NSColor.km_init(hex: "#EBECF0", alpha: 1).cgColor
  102. }
  103. }
  104. @objc func ttsAction() {
  105. self.itemClick?(self, 1)
  106. }
  107. @objc func newUserGuideAction() {
  108. self.itemClick?(self, 2)
  109. }
  110. }