KMRightSideController.swift 6.4 KB

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