KMRightSideController.swift 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682
  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. @objc protocol KMRightSideControllerDelegate: AnyObject {
  10. @objc optional func kmRightSideControllerDidContendVCUpdated(_ controller: KMRightSideController)
  11. }
  12. class KMRightSideController: NSViewController {
  13. @IBOutlet var contendView: NSView!
  14. @IBOutlet var contendLeftDivider: ComponentDivider!
  15. @IBOutlet var headerBGView: NSView!
  16. @IBOutlet var titleLabel: NSTextField!
  17. @IBOutlet var headerRightButton: ComponentButton!
  18. @IBOutlet var infoContendView: NSView!
  19. @IBOutlet var infoContendTopConst: NSLayoutConstraint!
  20. @IBOutlet var emptyView: ComponentEmpty!
  21. var pdfView: CPDFListView?
  22. var viewManager: KMPDFViewManager?
  23. //Controller
  24. //Markup
  25. var highlight_Controller: KMHighlightController?
  26. var note_Controller: KMNoteController?
  27. var pen_Controller: KMPenController?
  28. var eraser_Controller: KMEraserController?
  29. var rectangle_Controller: KMRectangleController?
  30. var line_Controller: KMLineController?
  31. var freeText_Controller: KMTextBoxController?
  32. var stamplist_Controller: KMStampListController?
  33. var stamp_Controller: KMStampController?
  34. var signature_Controller: KMSignatureController?
  35. var signatureList_Controller: KMSignatureListController?
  36. var measure_Controller: KMMeasureController?
  37. //Edit
  38. var edit_textController: KMEditPDFTextPropertyViewController?
  39. var edit_imageController: KMEditImageController?
  40. var edit_linkController: KMLinkViewController?
  41. var edit_cropController: KMCropPropertyController?
  42. //Form
  43. var form_fieldController: FormsTextFieldController?
  44. var form_checkBoxController: FormsCheckBoxController?
  45. var form_radioController: FormsRadioController?
  46. var form_listController: FormsListController?
  47. var form_buttonController: FormsButtonController?
  48. var form_digitalSignController: FormsDigitalSignController?
  49. //Fill
  50. var fill_tickController: FillTickController?
  51. //
  52. //OCR
  53. var tool_OCRController: KMOCRController?
  54. var contentViewController: NSViewController?
  55. weak open var delegate: KMRightSideControllerDelegate?
  56. //MARK: - func
  57. override func viewDidLoad() {
  58. super.viewDidLoad()
  59. // Do view setup here.
  60. setupUI()
  61. setupContentController()
  62. }
  63. //MARK: - Get
  64. func getValidAnnotations() -> [CPDFAnnotation] {
  65. return []
  66. }
  67. //MARK: - Set
  68. func setupUI() {
  69. contendView.wantsLayer = true
  70. contendView.layer?.backgroundColor = ComponentLibrary.shared.getComponentColorFromKey("colorBg/layout-middle").cgColor
  71. contendLeftDivider.properties = ComponentDividerProperty(type: .vertical)
  72. titleLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
  73. titleLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-m-bold")
  74. emptyView.properties = ComponentEmptyProperty(emptyType: .noWatermark, text: KMLocalizedString("No identical attributes"), subText: "")
  75. }
  76. func updateTitleLabel() {
  77. let subToolMode = viewManager?.subToolMode ?? .None
  78. let annotations: [CPDFAnnotation] = self.pdfView?.activeAnnotations as? [CPDFAnnotation] ?? []
  79. var firstAnnotation: CPDFAnnotation?
  80. if let firstObject = annotations.first {
  81. firstAnnotation = firstObject
  82. }
  83. titleLabel.stringValue = ""
  84. if contentViewController is KMHighlightController {
  85. titleLabel.stringValue = KMLocalizedString("Highlight")
  86. if let annotation = firstAnnotation, annotation is CPDFMarkupAnnotation {
  87. let markupAnnotation = firstAnnotation as! CPDFMarkupAnnotation
  88. if markupAnnotation.markupType() == .underline {
  89. titleLabel.stringValue = KMLocalizedString("Underline")
  90. } else if markupAnnotation.markupType() == .squiggly {
  91. titleLabel.stringValue = KMLocalizedString("Wavyline")
  92. } else if markupAnnotation.markupType() == .strikeOut {
  93. titleLabel.stringValue = KMLocalizedString("Strikethrough")
  94. }
  95. } else {
  96. if viewManager?.subToolMode == .Underline {
  97. titleLabel.stringValue = KMLocalizedString("Underline")
  98. } else if viewManager?.subToolMode == .Waveline {
  99. titleLabel.stringValue = KMLocalizedString("Wavyline")
  100. } else if viewManager?.subToolMode == .Strikethrough {
  101. titleLabel.stringValue = KMLocalizedString("Strikethrough")
  102. }
  103. }
  104. } else if (contentViewController is KMNoteController) {
  105. titleLabel.stringValue = KMLocalizedString("Note")
  106. } else if (contentViewController is KMPenController) {
  107. titleLabel.stringValue = KMLocalizedString("Pen")
  108. } else if (contentViewController is KMEraserController) {
  109. titleLabel.stringValue = KMLocalizedString("Eraser")
  110. } else if (contentViewController is KMLineController) {
  111. if let annotation = firstAnnotation, annotation is CPDFLineAnnotation {
  112. let lineAnnotation = firstAnnotation as! CPDFLineAnnotation
  113. if lineAnnotation.type == "Line" {
  114. titleLabel.stringValue = KMLocalizedString("Line")
  115. } else if lineAnnotation.type == "Arrow" {
  116. titleLabel.stringValue = KMLocalizedString("Arrow")
  117. }
  118. } else if subToolMode == .Arrow {
  119. titleLabel.stringValue = KMLocalizedString("Arrow")
  120. } else if subToolMode == .Line {
  121. titleLabel.stringValue = KMLocalizedString("Line")
  122. }
  123. } else if (contentViewController is KMRectangleController) {
  124. if let annotation = firstAnnotation, annotation is CPDFSquareAnnotation {
  125. titleLabel.stringValue = KMLocalizedString("Rectangle")
  126. } else if let annotation = firstAnnotation, annotation is CPDFCircleAnnotation {
  127. titleLabel.stringValue = KMLocalizedString("Circle")
  128. } else if subToolMode == .Rectangle {
  129. titleLabel.stringValue = KMLocalizedString("Rectangle")
  130. } else if subToolMode == .Circle {
  131. titleLabel.stringValue = KMLocalizedString("Circle")
  132. }
  133. } else if (contentViewController is KMTextBoxController) {
  134. titleLabel.stringValue = KMLocalizedString("Text Box")
  135. } else if (contentViewController is KMEditPDFTextPropertyViewController) {
  136. titleLabel.stringValue = KMLocalizedString("Text")
  137. } else if (contentViewController is KMEditImageController) {
  138. titleLabel.stringValue = KMLocalizedString("Image")
  139. } else if (contentViewController is KMLinkViewController) {
  140. titleLabel.stringValue = KMLocalizedString("Link")
  141. } else if (contentViewController is KMCropPropertyController) {
  142. titleLabel.stringValue = KMLocalizedString("Crop")
  143. } else if (contentViewController is KMStampListController) || (contentViewController is KMStampController) {
  144. titleLabel.stringValue = KMLocalizedString("Stamp")
  145. } else if (contentViewController is KMSignatureListController) || (contentViewController is KMSignatureController) {
  146. titleLabel.stringValue = KMLocalizedString("Sign")
  147. } else if (contentViewController is KMMeasureController) {
  148. titleLabel.stringValue = KMLocalizedString("Measure")
  149. } else if (contentViewController is FormsTextFieldController) {
  150. titleLabel.stringValue = KMLocalizedString("Text Field")
  151. } else if (contentViewController is FormsCheckBoxController) {
  152. titleLabel.stringValue = KMLocalizedString("Check Box")
  153. } else if (contentViewController is FormsRadioController) {
  154. titleLabel.stringValue = KMLocalizedString("Radio Button")
  155. } else if (contentViewController is FormsButtonController) {
  156. titleLabel.stringValue = KMLocalizedString("Button")
  157. } else if (contentViewController is FormsListController) {
  158. if let annotation = firstAnnotation, annotation is CPDFChoiceWidgetAnnotation {
  159. let lineAnnotation = firstAnnotation as! CPDFChoiceWidgetAnnotation
  160. if lineAnnotation.isListChoice == true {
  161. titleLabel.stringValue = KMLocalizedString("List")
  162. } else {
  163. titleLabel.stringValue = KMLocalizedString("Dropdown")
  164. }
  165. } else if subToolMode == .Form_list {
  166. titleLabel.stringValue = KMLocalizedString("List")
  167. } else if subToolMode == .Form_dropdown {
  168. titleLabel.stringValue = KMLocalizedString("Dropdown")
  169. }
  170. } else if (contentViewController is FillTickController) {
  171. titleLabel.stringValue = KMLocalizedString("Fill")
  172. } else if (contentViewController is KMOCRController) {
  173. titleLabel.stringValue = KMLocalizedString("OCR")
  174. }
  175. else {
  176. }
  177. }
  178. //MARK: - Setup
  179. func setupContentController() {
  180. /**
  181. Case1:选中指定模式:显示指定模式的属性设置界面,例如橡皮擦。
  182. Case2:未选中模式:根据选中的注释显示指定属性设置界面
  183. 1、筛选出指定模式下对应的右边界面,进行显示。
  184. 2、再判断是否有选中注释,多选不同类型注释时,判断为未选中注释。
  185. 3、判断选中指定类型的注释,或者选中的模式,都展示对应的界面。
  186. */
  187. /**
  188. 只在指定模式下可以选中特定注释:
  189. 编辑模式下:可以选中编辑块跟Link注释
  190. Form模式下:可以选中Form注释
  191. */
  192. contentViewController?.view.removeFromSuperview()
  193. contentViewController = nil
  194. let toolMode = viewManager?.toolMode ?? .None
  195. let subToolMode = viewManager?.subToolMode ?? .None
  196. let annotations: [CPDFAnnotation] = self.pdfView?.activeAnnotations as? [CPDFAnnotation] ?? []
  197. if toolMode == .Edit {
  198. //MARK: -Edit编辑
  199. if subToolMode == .Edit_Link {
  200. //链接
  201. if edit_linkController == nil {
  202. edit_linkController = KMLinkViewController.init()
  203. }
  204. edit_linkController?.pdfView = self.pdfView
  205. contentViewController = edit_linkController
  206. } else if subToolMode == .Edit_Crop {
  207. if edit_cropController == nil {
  208. edit_cropController = KMCropPropertyController.init()
  209. }
  210. contentViewController = edit_cropController
  211. } else {
  212. if pdfView?.km_EditingAreas().isEmpty == true {
  213. //未选中文字跟图片
  214. } else if pdfView?.km_editingImageAreas().isEmpty == true && pdfView?.km_editingTextAreas().isEmpty == false {
  215. //编辑文字
  216. if edit_textController == nil {
  217. edit_textController = KMEditPDFTextPropertyViewController.init()
  218. }
  219. edit_textController?.pdfView = self.pdfView
  220. contentViewController = edit_textController
  221. } else if pdfView?.km_editingImageAreas().isEmpty == false && pdfView?.km_editingTextAreas().isEmpty == true {
  222. //编辑图片
  223. if edit_imageController == nil {
  224. edit_imageController = KMEditImageController.init()
  225. }
  226. contentViewController = edit_imageController
  227. } else if pdfView?.km_editingImageAreas().isEmpty == false && pdfView?.km_editingTextAreas().isEmpty == false {
  228. //混选
  229. }
  230. }
  231. } else if toolMode == .Form {
  232. var firstAnnotation: CPDFAnnotation?
  233. if annotations.count > 0 {
  234. firstAnnotation = annotations.first
  235. }
  236. var controlType: CPDFWidgetControlType = .unknownControl
  237. var isListChoice: Int = -1
  238. if let annotation = firstAnnotation, annotation is CPDFButtonWidgetAnnotation {
  239. let widgetAnnot = annotation as! CPDFButtonWidgetAnnotation
  240. controlType = widgetAnnot.controlType()
  241. } else if let annotation = firstAnnotation, annotation is CPDFChoiceWidgetAnnotation {
  242. let widgetAnnot = annotation as! CPDFChoiceWidgetAnnotation
  243. isListChoice = 0
  244. if widgetAnnot.isListChoice {
  245. isListChoice = 1
  246. }
  247. }
  248. if subToolMode == .Form_text || firstAnnotation is CPDFTextWidgetAnnotation {
  249. if form_fieldController == nil {
  250. form_fieldController = FormsTextFieldController.init()
  251. }
  252. form_fieldController?.pdfView = self.pdfView
  253. contentViewController = form_fieldController
  254. } else if subToolMode == .Form_checkbox || controlType == .checkBoxControl {
  255. if form_checkBoxController == nil {
  256. form_checkBoxController = FormsCheckBoxController.init()
  257. }
  258. form_checkBoxController?.pdfView = self.pdfView
  259. contentViewController = form_checkBoxController
  260. } else if subToolMode == .Form_radio || controlType == .radioButtonControl {
  261. if form_radioController == nil {
  262. form_radioController = FormsRadioController.init()
  263. }
  264. form_radioController?.pdfView = self.pdfView
  265. contentViewController = form_radioController
  266. } else if subToolMode == .Form_list || subToolMode == .Form_dropdown || isListChoice >= 0 {
  267. if form_listController == nil {
  268. form_listController = FormsListController.init()
  269. }
  270. form_listController?.pdfView = self.pdfView
  271. contentViewController = form_listController
  272. } else if subToolMode == .Form_OK || controlType == .pushButtonControl {
  273. if form_buttonController == nil {
  274. form_buttonController = FormsButtonController.init()
  275. }
  276. form_buttonController?.pdfView = self.pdfView
  277. contentViewController = form_buttonController
  278. } else if subToolMode == .Form_digitalSign {
  279. if form_digitalSignController == nil {
  280. form_digitalSignController = FormsDigitalSignController.init()
  281. }
  282. form_digitalSignController?.pdfView = self.pdfView
  283. contentViewController = form_digitalSignController
  284. }
  285. } else {
  286. let exitMulitAnnotation = pdfView?.isMultiAnnotation(annotations)
  287. if exitMulitAnnotation == true {
  288. return
  289. }
  290. var firstAnnotation: CPDFAnnotation?
  291. if annotations.count > 0 {
  292. firstAnnotation = annotations.first
  293. }
  294. if viewManager?.viewToolsType == .Content_Selection {
  295. if edit_cropController == nil {
  296. edit_cropController = KMCropPropertyController.init()
  297. }
  298. contentViewController = edit_cropController
  299. } else if firstAnnotation is CPDFMarkupAnnotation || subToolMode == .Highlight || subToolMode == .Underline || subToolMode == .Waveline || subToolMode == .Strikethrough {
  300. if highlight_Controller == nil {
  301. highlight_Controller = KMHighlightController.init()
  302. }
  303. highlight_Controller?.pdfView = self.pdfView
  304. contentViewController = highlight_Controller
  305. } else if firstAnnotation is CPDFFreeTextAnnotation || subToolMode == .Text {
  306. if freeText_Controller == nil {
  307. freeText_Controller = KMTextBoxController.init()
  308. }
  309. freeText_Controller?.pdfView = self.pdfView
  310. contentViewController = freeText_Controller
  311. } else if firstAnnotation is CPDFTextAnnotation || subToolMode == .Note {
  312. if note_Controller == nil {
  313. note_Controller = KMNoteController.init()
  314. }
  315. note_Controller?.pdfView = self.pdfView
  316. contentViewController = note_Controller
  317. } else if firstAnnotation is CPDFInkAnnotation || subToolMode == .Pen {
  318. if pen_Controller == nil {
  319. pen_Controller = KMPenController.init()
  320. }
  321. pen_Controller?.pdfView = self.pdfView
  322. contentViewController = pen_Controller
  323. } else if subToolMode == .Eraser {
  324. if eraser_Controller == nil {
  325. eraser_Controller = KMEraserController.init()
  326. }
  327. contentViewController = eraser_Controller
  328. } else if firstAnnotation is CPDFCircleAnnotation || firstAnnotation is CPDFSquareAnnotation || subToolMode == .Rectangle || subToolMode == .Circle {
  329. if rectangle_Controller == nil {
  330. rectangle_Controller = KMRectangleController.init()
  331. }
  332. rectangle_Controller?.pdfView = self.pdfView
  333. contentViewController = rectangle_Controller
  334. } else if firstAnnotation is CPDFLineAnnotation || subToolMode == .Line || subToolMode == .Arrow {
  335. if line_Controller == nil {
  336. line_Controller = KMLineController.init()
  337. }
  338. line_Controller?.pdfView = self.pdfView
  339. contentViewController = line_Controller
  340. } else if firstAnnotation is CPDFStampAnnotation {
  341. if firstAnnotation is CSelfSignAnnotation || subToolMode == .Fill_tick {
  342. if fill_tickController == nil {
  343. fill_tickController = FillTickController.init()
  344. }
  345. fill_tickController?.pdfView = self.pdfView
  346. contentViewController = fill_tickController
  347. } else {
  348. if stamp_Controller == nil {
  349. stamp_Controller = KMStampController.init()
  350. }
  351. stamp_Controller?.pdfView = self.pdfView
  352. contentViewController = stamp_Controller
  353. }
  354. } else if subToolMode == .Stamp {
  355. if stamplist_Controller == nil {
  356. stamplist_Controller = KMStampListController.init()
  357. stamplist_Controller?.delegate = self
  358. }
  359. stamplist_Controller?.pdfView = self.pdfView
  360. contentViewController = stamplist_Controller
  361. } else if firstAnnotation is CPDFSignatureAnnotation {
  362. if signature_Controller == nil {
  363. signature_Controller = KMSignatureController.init()
  364. }
  365. signature_Controller?.pdfView = self.pdfView
  366. contentViewController = signature_Controller
  367. } else if subToolMode == .Sign {
  368. if signatureList_Controller == nil {
  369. signatureList_Controller = KMSignatureListController.init()
  370. }
  371. signatureList_Controller?.pdfView = self.pdfView
  372. contentViewController = signatureList_Controller
  373. } else if subToolMode == .Measure {
  374. if measure_Controller == nil {
  375. measure_Controller = KMMeasureController.init()
  376. }
  377. measure_Controller?.pdfView = self.pdfView
  378. contentViewController = measure_Controller
  379. } else if subToolMode == .Tool_OCR {
  380. if tool_OCRController == nil {
  381. tool_OCRController = KMOCRController.init()
  382. }
  383. tool_OCRController?.pdfView = self.pdfView
  384. contentViewController = tool_OCRController
  385. } else {
  386. }
  387. }
  388. if let contendVC = contentViewController {
  389. contendVC.view.frame = infoContendView.bounds
  390. contendVC.view.autoresizingMask = [.width, .height]
  391. infoContendView.addSubview(contendVC.view)
  392. delegate?.kmRightSideControllerDidContendVCUpdated?(self)
  393. }
  394. if let contendVC = contentViewController {
  395. infoContendView.isHidden = false
  396. headerBGView.isHidden = false
  397. emptyView.isHidden = true
  398. } else {
  399. infoContendView.isHidden = true
  400. headerBGView.isHidden = true
  401. emptyView.isHidden = false
  402. }
  403. updateTitleLabel()
  404. }
  405. //MARK: - reloadData
  406. func reloadContendTopConst() {
  407. infoContendTopConst.constant = 40
  408. headerBGView.isHidden = false
  409. if contentViewController is KMHighlightController {
  410. if CPDFMarkupAnnotation.isMarkupAnnotationsContainMultiType((contentViewController as! KMHighlightController).getValidAnnotations()) {
  411. infoContendTopConst.constant = 0
  412. headerBGView.isHidden = true
  413. }
  414. } else if contentViewController is KMLineController {
  415. if CPDFLineAnnotation.isLineAnnotationsContainMultiType((contentViewController as! KMLineController).getValidAnnotations()) {
  416. infoContendTopConst.constant = 0
  417. headerBGView.isHidden = true
  418. }
  419. }
  420. }
  421. func reloadTopRightButtonInfo() {
  422. headerRightButton.isHidden = true
  423. if contentViewController is KMStampListController {
  424. let stampListVC = contentViewController as! KMStampListController
  425. if stampListVC.stampType == .dynamic {
  426. headerRightButton.isHidden = false
  427. headerRightButton.properties = ComponentButtonProperty(type: .text_gray, size: .xxs, onlyIcon: true, icon: NSImage(named: "stampDynamic_Setting"), keepPressState: false)
  428. } else if stampListVC.stampType == .custom {
  429. headerRightButton.isHidden = false
  430. headerRightButton.properties = ComponentButtonProperty(type: .text_gray, size: .xxs, onlyIcon: true, icon: NSImage(named: "watermark_template_add"), keepPressState: false)
  431. }
  432. } else if contentViewController is KMSignatureListController {
  433. headerRightButton.isHidden = false
  434. headerRightButton.properties = ComponentButtonProperty(type: .text_gray, size: .xxs, onlyIcon: true, icon: NSImage(named: "watermark_template_add"), keepPressState: false)
  435. }
  436. headerRightButton.setTarget(self, action: #selector(headerRightButtonClicked(_:)))
  437. }
  438. func reloadData() {
  439. let toolMode = viewManager?.toolMode ?? .None
  440. let subToolMode = viewManager?.subToolMode ?? .None
  441. let annotations: [CPDFAnnotation] = self.pdfView?.activeAnnotations as? [CPDFAnnotation] ?? []
  442. if (contentViewController is KMHighlightController) {
  443. (contentViewController as? KMHighlightController)?.viewManager = viewManager
  444. (contentViewController as? KMHighlightController)?.reloadData()
  445. } else if (contentViewController is KMNoteController) {
  446. (contentViewController as? KMNoteController)?.reloadData()
  447. } else if (contentViewController is KMPenController) {
  448. (contentViewController as? KMPenController)?.reloadData()
  449. } else if (contentViewController is KMEraserController) {
  450. (contentViewController as? KMEraserController)?.reloadData()
  451. } else if (contentViewController is KMLineController) {
  452. (contentViewController as? KMLineController)?.viewManager = viewManager
  453. (contentViewController as? KMLineController)?.reloadData()
  454. } else if (contentViewController is KMRectangleController) {
  455. (contentViewController as? KMRectangleController)?.viewManager = viewManager
  456. (contentViewController as? KMRectangleController)?.reloadData()
  457. } else if (contentViewController is KMTextBoxController) {
  458. (contentViewController as? KMTextBoxController)?.reloadData()
  459. } else if (contentViewController is KMStampController) {
  460. (contentViewController as? KMStampController)?.reloadData()
  461. } else if (contentViewController is KMSignatureListController) {
  462. (contentViewController as? KMSignatureListController)?.reloadData()
  463. } else if (contentViewController is FormsTextFieldController) {
  464. (contentViewController as? FormsTextFieldController)?.reloadData()
  465. } else if (contentViewController is FormsCheckBoxController) {
  466. (contentViewController as? FormsCheckBoxController)?.reloadData()
  467. } else if (contentViewController is FormsRadioController) {
  468. (contentViewController as? FormsRadioController)?.reloadData()
  469. } else if (contentViewController is FormsListController) {
  470. (contentViewController as? FormsListController)?.reloadData()
  471. } else if (contentViewController is FormsButtonController) {
  472. (contentViewController as? FormsButtonController)?.reloadData()
  473. } else if (contentViewController is FormsDigitalSignController) {
  474. (contentViewController as? FormsDigitalSignController)?.reloadData()
  475. } else if (contentViewController is FillTickController) {
  476. (contentViewController as? FillTickController)?.reloadData()
  477. }
  478. if toolMode == .Markup {
  479. if (subToolMode == .Highlight ||
  480. subToolMode == .Underline ||
  481. subToolMode == .Waveline ||
  482. subToolMode == .Strikethrough) && (contentViewController is KMHighlightController) {
  483. (contentViewController as? KMHighlightController)?.reloadData()
  484. }
  485. } else if toolMode == .Edit {
  486. //图片&文字
  487. if pdfView?.km_EditingAreas().isEmpty == true {
  488. } else if pdfView?.km_editingImageAreas().isEmpty == true && pdfView?.km_editingTextAreas().isEmpty == false {
  489. //编辑文字
  490. edit_textController?.pdfView = self.pdfView
  491. edit_textController?.reloadData()
  492. } else if pdfView?.km_editingImageAreas().isEmpty == false && pdfView?.km_editingTextAreas().isEmpty == true {
  493. //编辑图片
  494. edit_imageController?.pdfView = self.pdfView
  495. edit_imageController?.reloadData()
  496. } else {
  497. //多选
  498. }
  499. //Link
  500. if viewManager?.subToolMode == .Edit_Link && (contentViewController is KMLinkViewController) {
  501. if (contentViewController as! KMLinkViewController).pdfView != self.pdfView {
  502. (contentViewController as! KMLinkViewController).pdfView = self.pdfView
  503. }
  504. (contentViewController as! KMLinkViewController).reloadData()
  505. } else if viewManager?.subToolMode == .Edit_Crop && (contentViewController is KMCropPropertyController) {
  506. (contentViewController as! KMCropPropertyController).reloadData()
  507. }
  508. }
  509. reloadContendTopConst()
  510. reloadTopRightButtonInfo()
  511. }
  512. public func reloadDataWithPDFView(pdfView: CPDFListView) {
  513. self.pdfView = pdfView
  514. setupContentController()
  515. reloadData()
  516. }
  517. //MARK: - Action
  518. @objc func headerRightButtonClicked(_ button: ComponentButton) {
  519. if contentViewController is KMStampListController {
  520. let stampListVC = contentViewController as! KMStampListController
  521. if stampListVC.stampType == .dynamic {
  522. stampListVC.showDynamicSetting()
  523. } else if stampListVC.stampType == .custom {
  524. stampListVC.createCustomStamp()
  525. }
  526. } else if contentViewController is KMSignatureListController {
  527. let vc = contentViewController as! KMSignatureListController
  528. vc.createCustomStamp()
  529. }
  530. }
  531. //MARK: - 重新刷新编辑中内容
  532. public func reloadEditingAreas() {
  533. if contentViewController is KMEditPDFTextPropertyViewController {
  534. (contentViewController as! KMEditPDFTextPropertyViewController).reloadData()
  535. } else if contentViewController is KMEditImageController {
  536. (contentViewController as! KMEditImageController).reloadData()
  537. }
  538. }
  539. //MARK: - 裁剪模式下刷新文档
  540. public func reloadCropDocument(_ pdfview: CPDFListView?) {
  541. if viewManager?.subToolMode == .Edit_Crop && (contentViewController is KMCropPropertyController) {
  542. (contentViewController as! KMCropPropertyController).pdfView = pdfview
  543. (contentViewController as! KMCropPropertyController).reloadData()
  544. }
  545. }
  546. }
  547. extension KMRightSideController: KMStampListControllerDelegate {
  548. func kmStampListControllerDidStampTypeUpdated(_ controller: KMStampListController) {
  549. reloadTopRightButtonInfo()
  550. }
  551. }