// // KMRightSideController.swift // PDF Reader Pro // // Created by Niehaoyu on 2024/11/12. // import Cocoa import KMComponentLibrary class KMRightSideController: NSViewController { @IBOutlet var contendView: NSView! @IBOutlet var contendLeftDivider: ComponentDivider! @IBOutlet var titleLabel: NSTextField! @IBOutlet var infoContendView: NSView! var annotations: [CPDFAnnotation] { get { return self.pdfView?.activeAnnotations as? [CPDFAnnotation] ?? [] } } var editingAreas: [CPDFEditArea] { get { return self.pdfView?.editingAreas() as? [CPDFEditArea] ?? [] } } var editingImageAreas: [CPDFEditImageArea] { get { var areas: [CPDFEditImageArea] = [] for area in self.editingAreas { if let data = area as? CPDFEditImageArea { areas.append(data) } } return areas } } var editingTextAreas: [CPDFEditTextArea] { get { var areas: [CPDFEditTextArea] = [] for area in self.editingAreas { if let data = area as? CPDFEditTextArea { areas.append(data) } } return areas } } var pdfView: CPDFListView? var viewManager: KMPDFViewManager? { didSet { updateUI() } } var contentViewController: NSViewController? //MARK: - func override func viewDidLoad() { super.viewDidLoad() // Do view setup here. setupUI() updateUI() } func setupUI() { contendView.wantsLayer = true contendView.layer?.backgroundColor = ComponentLibrary.shared.getComponentColorFromKey("colorBg/layout-middle").cgColor contendLeftDivider.properties = ComponentDividerProperty(type: .vertical) titleLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2") titleLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-m-bold") } func updateTitleLabel() { if viewManager?.subToolMode == .Edit_text { titleLabel.stringValue = KMLocalizedString("Text") } else if viewManager?.subToolMode == .Edit_Image { titleLabel.stringValue = KMLocalizedString("Image") } else if viewManager?.subToolMode == .Edit_Link { titleLabel.stringValue = KMLocalizedString("Link") } else if viewManager?.subToolMode == .Edit_Crop { titleLabel.stringValue = KMLocalizedString("Crop") } } func updateUI() { updateTitleLabel() contentViewController?.view.removeFromSuperview() contentViewController = nil if viewManager?.toolMode == .Edit { if editingAreas.isEmpty == true { } else if editingImageAreas.count == 0 && editingTextAreas.count > 0 { //编辑文字 let controller = KMEditPDFTextPropertyViewController.init() contentViewController = controller } else if editingImageAreas.count > 0 && editingTextAreas.count == 0 { //编辑图片 let controller = KMEditImagePropertyViewController.init() contentViewController = controller } else { //多选 } if viewManager?.subToolMode == .Edit_Link { //链接 let controller = KMLinkViewController.init() controller.pdfView = self.pdfView contentViewController = controller } } if let contendVC = contentViewController { contendVC.view.frame = infoContendView.bounds contendVC.view.autoresizingMask = [.width, .height] infoContendView.addSubview(contendVC.view) } } func reloadData() { if viewManager?.toolMode == .Edit { if contentViewController == nil { updateUI() } //Link if viewManager?.subToolMode == .Edit_Link && contentViewController is KMLinkViewController { if (contentViewController as! KMLinkViewController).pdfView != self.pdfView { (contentViewController as! KMLinkViewController).pdfView = self.pdfView } var linkAnnotations: [CPDFLinkAnnotation] = [] for annotation in self.annotations { if annotation is CPDFLinkAnnotation { linkAnnotations.append(annotation as! CPDFLinkAnnotation) } } (contentViewController as! KMLinkViewController).annotations = linkAnnotations (contentViewController as! KMLinkViewController).reloadData() } } } public func reloadDataWithPDFView(pdfView: CPDFListView) { self.pdfView = pdfView reloadData() } }