KMBotaLeftView.swift 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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: KMImageNameUXIconSubtoolbarDisplayTTS)
  24. view.isBordered = false
  25. return view
  26. }()
  27. var itemClick: KMItemClickBlock<KMBotaLeftView>?
  28. override init(frame frameRect: NSRect) {
  29. super.init(frame: frameRect)
  30. self.initSubview()
  31. self.initDefaultValue()
  32. }
  33. required init?(coder: NSCoder) {
  34. super.init(coder: coder)
  35. self.initSubview()
  36. self.initDefaultValue()
  37. }
  38. func initSubview() {
  39. self.addSubview(self.segmentedControl)
  40. self.addSubview(self.helpButton)
  41. self.addSubview(self.ttsButton)
  42. self.ttsButton.target = self
  43. self.ttsButton.action = #selector(ttsAction)
  44. }
  45. func initDefaultValue() {
  46. self.segmentedControl.direction = .vertical
  47. self.segmentedControl.setSegmentCount(6, with: 44)
  48. self.segmentedControl.setImage(NSImage(named: KMImageNameUXIconSidetabbarThumbnailNor)!, for: 0)
  49. self.segmentedControl.setImage(NSImage(named: KMImageNameUXIconSidetabbarOutlineNor)!, for: 1)
  50. self.segmentedControl.setImage(NSImage(named: KMImageNameUXIconSidetabbarAnnotationNor)!, for: 2)
  51. self.segmentedControl.setImage(NSImage(named: "KMImageNameSidebarBookMarkNor")!, for: 3)
  52. self.segmentedControl.setImage(NSImage(named: KMImageNameUXIconSidetabbarSnapshotNor)!, for: 4)
  53. self.segmentedControl.setImage(NSImage(named: KMImageNameUXIconSidetabbarSearchNor)!, for: 5)
  54. self.segmentedControl.setToolTip(KMLocalizedString("View Thumbnails", nil), for: 0)
  55. self.segmentedControl.setToolTip(KMLocalizedString("View Outline", nil), for: 1)
  56. self.segmentedControl.setToolTip(KMLocalizedString("View Notes", nil), for: 2)
  57. self.segmentedControl.setToolTip(KMLocalizedString("View Bookmark", nil), for: 3)
  58. self.segmentedControl.setToolTip(KMLocalizedString("View Snapshots", nil), for: 4)
  59. self.segmentedControl.setToolTip(KMLocalizedString("Search", nil), for: 5)
  60. self.segmentedControl.selectedSegment = UInt8.max
  61. self.segmentedControl.wantsLayer = true
  62. self.segmentedControl.layer?.backgroundColor = KMAppearance.Layout.l_1Color().cgColor
  63. }
  64. override func layout() {
  65. super.layout()
  66. self.segmentedControl.frame = self.bounds
  67. self.helpButton.frame = NSMakeRect(0, 0, 36, 36)
  68. self.ttsButton.frame = NSMakeRect(8, NSMaxY(self.helpButton.frame), 20, 20)
  69. }
  70. override func draw(_ dirtyRect: NSRect) {
  71. super.draw(dirtyRect)
  72. }
  73. override func interfaceThemeDidChanged(_ appearance: NSAppearance.Name) {
  74. super.interfaceThemeDidChanged(appearance)
  75. self.segmentedControl.appearance = .init(named: appearance)
  76. self.segmentedControl.wantsLayer = true
  77. // self.segmentedControl.layer?.backgroundColor = KMAppearance.Layout.l_1Color().cgColor
  78. if KMAppearance.isDarkMode() {
  79. self.segmentedControl.layer?.backgroundColor = NSColor.km_init(hex: "#393B3E", alpha: 1).cgColor
  80. } else {
  81. self.segmentedControl.layer?.backgroundColor = NSColor.km_init(hex: "#EBECF0", alpha: 1).cgColor
  82. }
  83. }
  84. @objc func ttsAction() {
  85. self.itemClick?(self, 1)
  86. }
  87. }