KMRightSideController.swift 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  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. //Edit
  27. var edit_textController: KMEditPDFTextPropertyViewController?
  28. var edit_imageController: KMEditImageController?
  29. var edit_linkController: KMLinkViewController?
  30. //Form
  31. //Fill
  32. //
  33. var contentViewController: NSViewController?
  34. //MARK: - func
  35. override func viewDidLoad() {
  36. super.viewDidLoad()
  37. // Do view setup here.
  38. setupUI()
  39. setupContentController()
  40. }
  41. func setupUI() {
  42. contendView.wantsLayer = true
  43. contendView.layer?.backgroundColor = ComponentLibrary.shared.getComponentColorFromKey("colorBg/layout-middle").cgColor
  44. contendLeftDivider.properties = ComponentDividerProperty(type: .vertical)
  45. titleLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
  46. titleLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-m-bold")
  47. emptyView.properties = ComponentEmptyProperty(emptyType: .noWatermark, text: KMLocalizedString("No identical attributes"), subText: "")
  48. }
  49. func updateTitleLabel() {
  50. if viewManager?.subToolMode == .Edit_text {
  51. titleLabel.stringValue = KMLocalizedString("Text")
  52. } else if viewManager?.subToolMode == .Edit_Image {
  53. titleLabel.stringValue = KMLocalizedString("Image")
  54. } else if viewManager?.subToolMode == .Edit_Link {
  55. titleLabel.stringValue = KMLocalizedString("Link")
  56. } else if viewManager?.subToolMode == .Edit_Crop {
  57. titleLabel.stringValue = KMLocalizedString("Crop")
  58. }
  59. }
  60. func setupContentController() {
  61. updateTitleLabel()
  62. contentViewController?.view.removeFromSuperview()
  63. contentViewController = nil
  64. if viewManager?.toolMode == .Edit {
  65. if pdfView?.km_EditingAreas().isEmpty == true {
  66. } else if pdfView?.km_editingImageAreas().isEmpty == true && pdfView?.km_editingTextAreas().isEmpty == false {
  67. //编辑文字
  68. if edit_textController == nil {
  69. edit_textController = KMEditPDFTextPropertyViewController.init()
  70. }
  71. edit_textController?.pdfView = self.pdfView
  72. contentViewController = edit_textController
  73. } else if pdfView?.km_editingImageAreas().isEmpty == false && pdfView?.km_editingTextAreas().isEmpty == true {
  74. //编辑图片
  75. if edit_imageController == nil {
  76. edit_imageController = KMEditImageController.init()
  77. }
  78. contentViewController = edit_imageController
  79. } else {
  80. //多选
  81. }
  82. if viewManager?.subToolMode == .Edit_Link {
  83. //链接
  84. if edit_linkController == nil {
  85. edit_linkController = KMLinkViewController.init()
  86. }
  87. edit_linkController?.pdfView = self.pdfView
  88. contentViewController = edit_linkController
  89. }
  90. }
  91. if let contendVC = contentViewController {
  92. contendVC.view.frame = infoContendView.bounds
  93. contendVC.view.autoresizingMask = [.width, .height]
  94. infoContendView.addSubview(contendVC.view)
  95. headerBGView.isHidden = false
  96. emptyView.isHidden = true
  97. } else {
  98. headerBGView.isHidden = true
  99. emptyView.isHidden = false
  100. }
  101. }
  102. func reloadData() {
  103. if viewManager?.toolMode == .Edit {
  104. //图片&文字
  105. if pdfView?.km_EditingAreas().isEmpty == true {
  106. } else if pdfView?.km_editingImageAreas().isEmpty == true && pdfView?.km_editingTextAreas().isEmpty == false {
  107. //编辑文字
  108. edit_textController?.pdfView = self.pdfView
  109. edit_textController?.reloadData()
  110. } else if pdfView?.km_editingImageAreas().isEmpty == false && pdfView?.km_editingTextAreas().isEmpty == true {
  111. //编辑图片
  112. edit_imageController?.pdfView = self.pdfView
  113. edit_imageController?.reloadData()
  114. } else {
  115. //多选
  116. }
  117. //Link
  118. if viewManager?.subToolMode == .Edit_Link && contentViewController is KMLinkViewController {
  119. if (contentViewController as! KMLinkViewController).pdfView != self.pdfView {
  120. (contentViewController as! KMLinkViewController).pdfView = self.pdfView
  121. }
  122. var linkAnnotations: [CPDFLinkAnnotation] = []
  123. for annotation in self.annotations {
  124. if annotation is CPDFLinkAnnotation {
  125. linkAnnotations.append(annotation as! CPDFLinkAnnotation)
  126. }
  127. }
  128. (contentViewController as! KMLinkViewController).annotations = linkAnnotations
  129. (contentViewController as! KMLinkViewController).reloadData()
  130. if linkAnnotations.count == 0 {
  131. (contentViewController as! KMLinkViewController).view.isHidden = true
  132. } else {
  133. (contentViewController as! KMLinkViewController).view.isHidden = false
  134. }
  135. }
  136. }
  137. }
  138. public func reloadDataWithPDFView(pdfView: CPDFListView) {
  139. self.pdfView = pdfView
  140. setupContentController()
  141. reloadData()
  142. }
  143. //重新刷新编辑中内容
  144. public func reloadEditingAreas() {
  145. if contentViewController is KMEditPDFTextPropertyViewController {
  146. (contentViewController as! KMEditPDFTextPropertyViewController).reloadData()
  147. } else if contentViewController is KMEditImageController {
  148. (contentViewController as! KMEditImageController).reloadData()
  149. }
  150. }
  151. }