SidebarDemoVC.swift 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. //
  2. // SidebarDemoVC.swift
  3. // KMComponentLibraryDemo
  4. //
  5. // Created by wanjun on 2024/8/2.
  6. //
  7. import Cocoa
  8. import KMComponentLibrary
  9. @objc public enum SidebarType : Int {
  10. case search = 0
  11. case thumbnail
  12. case outline
  13. case bookmark
  14. case annotation
  15. }
  16. class SidebarDemoVC: NSViewController {
  17. @IBOutlet weak var searchItem: ComponentSideBarItem!
  18. @IBOutlet weak var thumbnailItem: ComponentSideBarItem!
  19. @IBOutlet weak var outlineItem: ComponentSideBarItem!
  20. @IBOutlet weak var bookmarkItem: ComponentSideBarItem!
  21. @IBOutlet weak var annotationItem: ComponentSideBarItem!
  22. @IBOutlet weak var pageTurnerView: ComponentSidebarPageTurner!
  23. @IBOutlet weak var firstPageBtn: NSButton!
  24. @IBOutlet weak var lastPageBtn: NSButton!
  25. @IBOutlet weak var previousBtn: NSButton!
  26. @IBOutlet weak var nextBtn: NSButton!
  27. let searchProperty: ComponentSideBarItemProperty = ComponentSideBarItemProperty(state: .normal, icon: ComponentLibrary.shared.image(forResource: "Sidebar_search"))
  28. let thumbnailProperty: ComponentSideBarItemProperty = ComponentSideBarItemProperty(state: .normal, icon: ComponentLibrary.shared.image(forResource: "Sidebar_thumbnails"))
  29. let outlineProperty: ComponentSideBarItemProperty = ComponentSideBarItemProperty(state: .normal, icon: ComponentLibrary.shared.image(forResource: "Sidebar_outline"))
  30. let bookmarkProperty: ComponentSideBarItemProperty = ComponentSideBarItemProperty(state: .normal, icon: ComponentLibrary.shared.image(forResource: "Sidebar_bookmark"))
  31. let annotationProperty: ComponentSideBarItemProperty = ComponentSideBarItemProperty(state: .normal, icon: ComponentLibrary.shared.image(forResource: "Sidebar_annotation"))
  32. var sideBarType: SidebarType = .search
  33. override func viewDidLoad() {
  34. super.viewDidLoad()
  35. // Do view setup here.
  36. self.searchItem.properties = searchProperty
  37. self.thumbnailItem.properties = thumbnailProperty
  38. self.outlineItem.properties = outlineProperty
  39. self.bookmarkItem.properties = bookmarkProperty
  40. self.annotationItem.properties = annotationProperty
  41. self.searchItem.setTarget(self, action: #selector(sidebarItemClicked(_ :)))
  42. self.thumbnailItem.setTarget(self, action: #selector(sidebarItemClicked(_ :)))
  43. self.outlineItem.setTarget(self, action: #selector(sidebarItemClicked(_ :)))
  44. self.bookmarkItem.setTarget(self, action: #selector(sidebarItemClicked(_ :)))
  45. self.annotationItem.setTarget(self, action: #selector(sidebarItemClicked(_ :)))
  46. self.reloadData()
  47. self.reloadPageTurnerData()
  48. }
  49. func reloadData() {
  50. searchProperty.state = .normal
  51. thumbnailProperty.state = .normal
  52. outlineProperty.state = .normal
  53. bookmarkProperty.state = .normal
  54. annotationProperty.state = .normal
  55. if self.sideBarType == .search {
  56. searchProperty.state = .pressed
  57. } else if self.sideBarType == .thumbnail {
  58. thumbnailProperty.state = .pressed
  59. } else if self.sideBarType == .outline {
  60. outlineProperty.state = .pressed
  61. } else if self.sideBarType == .bookmark {
  62. bookmarkProperty.state = .pressed
  63. } else if self.sideBarType == .annotation {
  64. annotationProperty.state = .pressed
  65. }
  66. searchItem.reloadData()
  67. thumbnailItem.reloadData()
  68. outlineItem.reloadData()
  69. bookmarkItem.reloadData()
  70. annotationItem.reloadData()
  71. }
  72. func reloadPageTurnerData() {
  73. let turnerProperty: ComponentSidebarPageTurnerProperty = ComponentSidebarPageTurnerProperty(currentIndex: 1, totalCount: 200)
  74. turnerProperty.firstPage_show = self.firstPageBtn.state == .on
  75. turnerProperty.lastPage_show = self.lastPageBtn.state == .on
  76. turnerProperty.previous_show = self.previousBtn.state == .on
  77. turnerProperty.next_show = self.nextBtn.state == .on
  78. self.pageTurnerView.properties = turnerProperty
  79. }
  80. @objc func sidebarItemClicked(_ sender: ComponentSideBarItem) {
  81. if sender == self.searchItem {
  82. self.sideBarType = .search
  83. } else if sender == self.thumbnailItem {
  84. self.sideBarType = .thumbnail
  85. } else if sender == self.outlineItem {
  86. self.sideBarType = .outline
  87. } else if sender == self.bookmarkItem {
  88. self.sideBarType = .bookmark
  89. } else if sender == self.annotationItem {
  90. self.sideBarType = .annotation
  91. }
  92. self.reloadData()
  93. }
  94. @IBAction func clickAction(_ sender: Any) {
  95. self.reloadData()
  96. self.reloadPageTurnerData()
  97. }
  98. override func mouseDown(with event: NSEvent) {
  99. self.view.window?.makeFirstResponder(nil)
  100. }
  101. }