KMRightSideController.swift 5.2 KB

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