KMRightSideController.swift 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. //
  2. // KMRightSideController.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by Niehaoyu on 2024/11/12.
  6. //
  7. import Cocoa
  8. import KMComponentLibrary
  9. class KMRightSideController: NSViewController {
  10. @IBOutlet var contendView: NSView!
  11. @IBOutlet var contendLeftDivider: ComponentDivider!
  12. @IBOutlet var headerBGView: NSView!
  13. @IBOutlet var titleLabel: NSTextField!
  14. @IBOutlet var headerRightButton: ComponentButton!
  15. @IBOutlet var infoContendView: NSView!
  16. @IBOutlet var emptyView: ComponentEmpty!
  17. var annotations: [CPDFAnnotation] {
  18. get {
  19. return self.pdfView?.activeAnnotations as? [CPDFAnnotation] ?? []
  20. }
  21. }
  22. var pdfView: CPDFListView?
  23. var viewManager: KMPDFViewManager?
  24. //Controller
  25. //Markup
  26. var highlight_Controller: KMHighlightController?
  27. //Edit
  28. var edit_textController: KMEditPDFTextPropertyViewController?
  29. var edit_imageController: KMEditImageController?
  30. var edit_linkController: KMLinkViewController?
  31. //Form
  32. //Fill
  33. //
  34. var contentViewController: NSViewController?
  35. //MARK: - func
  36. override func viewDidLoad() {
  37. super.viewDidLoad()
  38. // Do view setup here.
  39. setupUI()
  40. setupContentController()
  41. }
  42. func setupUI() {
  43. contendView.wantsLayer = true
  44. contendView.layer?.backgroundColor = ComponentLibrary.shared.getComponentColorFromKey("colorBg/layout-middle").cgColor
  45. contendLeftDivider.properties = ComponentDividerProperty(type: .vertical)
  46. titleLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
  47. titleLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-m-bold")
  48. emptyView.properties = ComponentEmptyProperty(emptyType: .noWatermark, text: KMLocalizedString("No identical attributes"), subText: "")
  49. }
  50. func updateTitleLabel() {
  51. if viewManager?.subToolMode == .Edit_text {
  52. titleLabel.stringValue = KMLocalizedString("Text")
  53. } else if viewManager?.subToolMode == .Edit_Image {
  54. titleLabel.stringValue = KMLocalizedString("Image")
  55. } else if viewManager?.subToolMode == .Edit_Link {
  56. titleLabel.stringValue = KMLocalizedString("Link")
  57. } else if viewManager?.subToolMode == .Edit_Crop {
  58. titleLabel.stringValue = KMLocalizedString("Crop")
  59. }
  60. }
  61. func setupContentController() {
  62. updateTitleLabel()
  63. contentViewController?.view.removeFromSuperview()
  64. contentViewController = nil
  65. let subToolMode = viewManager?.subToolMode ?? .None
  66. if viewManager?.toolMode == .Markup {
  67. if subToolMode == .Highlight {
  68. if highlight_Controller == nil {
  69. highlight_Controller = KMHighlightController.init()
  70. }
  71. highlight_Controller?.pdfView = self.pdfView
  72. contentViewController = highlight_Controller
  73. }
  74. } else if viewManager?.toolMode == .Edit {
  75. if pdfView?.km_EditingAreas().isEmpty == true {
  76. } else if pdfView?.km_editingImageAreas().isEmpty == true && pdfView?.km_editingTextAreas().isEmpty == false {
  77. //编辑文字
  78. if edit_textController == nil {
  79. edit_textController = KMEditPDFTextPropertyViewController.init()
  80. }
  81. edit_textController?.pdfView = self.pdfView
  82. contentViewController = edit_textController
  83. } else if pdfView?.km_editingImageAreas().isEmpty == false && pdfView?.km_editingTextAreas().isEmpty == true {
  84. //编辑图片
  85. if edit_imageController == nil {
  86. edit_imageController = KMEditImageController.init()
  87. }
  88. contentViewController = edit_imageController
  89. } else {
  90. //多选
  91. }
  92. if viewManager?.subToolMode == .Edit_Link {
  93. //链接
  94. if edit_linkController == nil {
  95. edit_linkController = KMLinkViewController.init()
  96. }
  97. edit_linkController?.pdfView = self.pdfView
  98. contentViewController = edit_linkController
  99. }
  100. }
  101. if let contendVC = contentViewController {
  102. contendVC.view.frame = infoContendView.bounds
  103. contendVC.view.autoresizingMask = [.width, .height]
  104. infoContendView.addSubview(contendVC.view)
  105. headerBGView.isHidden = false
  106. emptyView.isHidden = true
  107. } else {
  108. headerBGView.isHidden = true
  109. emptyView.isHidden = false
  110. }
  111. }
  112. func reloadData() {
  113. let toolMode = viewManager?.toolMode ?? .None
  114. let subToolMode = viewManager?.subToolMode ?? .None
  115. if viewManager?.toolMode == .Markup {
  116. if subToolMode == .Highlight && (contentViewController is KMHighlightController) {
  117. (contentViewController as? KMHighlightController)?.reloadData()
  118. }
  119. } else if viewManager?.toolMode == .Edit {
  120. //图片&文字
  121. if pdfView?.km_EditingAreas().isEmpty == true {
  122. } else if pdfView?.km_editingImageAreas().isEmpty == true && pdfView?.km_editingTextAreas().isEmpty == false {
  123. //编辑文字
  124. edit_textController?.pdfView = self.pdfView
  125. edit_textController?.reloadData()
  126. } else if pdfView?.km_editingImageAreas().isEmpty == false && pdfView?.km_editingTextAreas().isEmpty == true {
  127. //编辑图片
  128. edit_imageController?.pdfView = self.pdfView
  129. edit_imageController?.reloadData()
  130. } else {
  131. //多选
  132. }
  133. //Link
  134. if viewManager?.subToolMode == .Edit_Link && contentViewController is KMLinkViewController {
  135. if (contentViewController as! KMLinkViewController).pdfView != self.pdfView {
  136. (contentViewController as! KMLinkViewController).pdfView = self.pdfView
  137. }
  138. var linkAnnotations: [CPDFLinkAnnotation] = []
  139. for annotation in self.annotations {
  140. if annotation is CPDFLinkAnnotation {
  141. linkAnnotations.append(annotation as! CPDFLinkAnnotation)
  142. }
  143. }
  144. (contentViewController as! KMLinkViewController).annotations = linkAnnotations
  145. (contentViewController as! KMLinkViewController).reloadData()
  146. if linkAnnotations.count == 0 {
  147. (contentViewController as! KMLinkViewController).view.isHidden = true
  148. } else {
  149. (contentViewController as! KMLinkViewController).view.isHidden = false
  150. }
  151. }
  152. }
  153. }
  154. public func reloadDataWithPDFView(pdfView: CPDFListView) {
  155. self.pdfView = pdfView
  156. setupContentController()
  157. reloadData()
  158. }
  159. //重新刷新编辑中内容
  160. public func reloadEditingAreas() {
  161. if contentViewController is KMEditPDFTextPropertyViewController {
  162. (contentViewController as! KMEditPDFTextPropertyViewController).reloadData()
  163. } else if contentViewController is KMEditImageController {
  164. (contentViewController as! KMEditImageController).reloadData()
  165. }
  166. }
  167. }