123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308 |
- //
- // KMPDFToolbarController.swift
- // PDF Reader Pro
- //
- // Created by Niehaoyu on 2024/10/8.
- //
- import Cocoa
- import KMComponentLibrary
- @objc protocol KMPDFToolbarControllerDelegate: AnyObject {
-
- @objc optional func kmPDFToolbarControllerDidToolbarItemClicked(_ controller: KMPDFToolbarController, _ itemIdentifier: String)
-
- }
- class KMPDFToolbarController: NSViewController {
- @IBOutlet var contendBox: NSBox!
- @IBOutlet var leftViewButton: ComponentButton!
- @IBOutlet var pageButton: ComponentButton!
- @IBOutlet var toolsView: ComponentDropdownTool!
- @IBOutlet var dividerView: ComponentDivider!
- @IBOutlet var selectZoom: ComponentSelectZoom!
- @IBOutlet var tabsView: ComponentTabs!
-
- @IBOutlet var secondContendView: NSView!
-
- var pdfView: CPDFListView?
-
- var secondToolBar: KMPDFSecToolbarController = KMPDFSecToolbarController.init()
-
- weak open var delegate: KMPDFToolbarControllerDelegate?
-
- override func viewDidLoad() {
- super.viewDidLoad()
- // Do view setup here.
-
-
- contendBox.fillColor = ComponentLibrary.shared.getComponentColorFromKey("colorBg/layout-middle")
-
- setUpProperty()
-
- setupSecondToolbar()
- }
-
- func setUpProperty() {
-
- leftViewButton.properties = KMPDFToolbarManager.manager.viewProperty
- leftViewButton.setTarget(self, action: #selector(buttonClicked(_:)))
-
- pageButton.properties = KMPDFToolbarManager.manager.pageProperty
- pageButton.setTarget(self, action: #selector(buttonClicked(_:)))
-
- dividerView.properties = ComponentDividerProperty(type: .vertical, dash: false)
-
- toolsView.properties = KMPDFToolbarManager.manager.toolsProperty
- toolsView.delegate = self
-
- selectZoom.properties = KMPDFToolbarManager.manager.selectZoomProperty
- selectZoom.delegate = self
-
- tabsView.updateItemProperty([KMPDFToolbarManager.manager.markupMode_Property, KMPDFToolbarManager.manager.editMode_Property,
- KMPDFToolbarManager.manager.formMode_Property, KMPDFToolbarManager.manager.fillMode_Property,
- KMPDFToolbarManager.manager.convertMode_Property, KMPDFToolbarManager.manager.protectMode_Property,
- KMPDFToolbarManager.manager.toolsMode_Property])
- tabsView.delegate = self
-
- }
-
- //MARK: - 一级工具栏
- func reloadToolbarTabsView() {
- KMPDFToolbarManager.manager.markupMode_Property.state = KMPDFManager.manager.toolMode == .Markup ? .pressed : .normal
- KMPDFToolbarManager.manager.editMode_Property.state = KMPDFManager.manager.toolMode == .Edit ? .pressed : .normal
- KMPDFToolbarManager.manager.formMode_Property.state = KMPDFManager.manager.toolMode == .Form ? .pressed : .normal
- KMPDFToolbarManager.manager.fillMode_Property.state = KMPDFManager.manager.toolMode == .Fill ? .pressed : .normal
- KMPDFToolbarManager.manager.convertMode_Property.state = KMPDFManager.manager.toolMode == .Convert ? .pressed : .normal
- KMPDFToolbarManager.manager.protectMode_Property.state = KMPDFManager.manager.toolMode == .Protect ? .pressed : .normal
- KMPDFToolbarManager.manager.toolsMode_Property.state = KMPDFManager.manager.toolMode == .Tools ? .pressed : .normal
-
- tabsView.refreshItems()
-
- }
-
- func reloadLeftIconView() {
- KMPDFToolbarManager.manager.viewProperty.state = KMPDFManager.manager.showView ? .pressed : .normal
- KMPDFToolbarManager.manager.viewProperty.isDisabled = false
- if KMPDFManager.manager.isPageEditMode {
- KMPDFToolbarManager.manager.viewProperty.isDisabled = true
- }
- leftViewButton.reloadData()
-
- }
-
- func reloadPageEditView() {
- KMPDFToolbarManager.manager.pageProperty.state = KMPDFManager.manager.isPageEditMode ? .pressed : .normal
- pageButton.reloadData()
-
- }
-
- func reloadSelectZoomView() {
- KMPDFToolbarManager.manager.selectZoomProperty.isDisabled = false
- if KMPDFManager.manager.isPageEditMode {
- KMPDFToolbarManager.manager.selectZoomProperty.isDisabled = true
- }
- selectZoom.reloadData()
-
- }
-
- //MARK: - 二级工具栏
- func setupSecondToolbar() {
- secondToolBar.view.frame = secondContendView.bounds
- secondToolBar.delegate = self
- secondToolBar.view.autoresizingMask = [.width, .height]
- secondContendView.addSubview(secondToolBar.view)
-
- }
-
- func reloadSecondToolbar() {
- let _manager = KMPDFToolbarManager.manager
- if KMPDFManager.manager.isPageEditMode {
- secondToolBar.reloadMainPropertys(_manager.getSubToolbarItems(isPageEditMode: true))
- secondToolBar.reloadRightPropertys([_manager.page_Reduce_Property, _manager.page_Increase_Property])
- } else {
- secondToolBar.reloadMainPropertys(_manager.getSubToolbarItems(KMPDFManager.manager.toolMode))
- secondToolBar.reloadRightPropertys([])
- }
- }
-
- //只刷新Item状态
- func refreshSecondToolbarItemsState() {
- secondToolBar.refreshMainview()
-
- secondToolBar.refreshRightview()
- }
-
- func reloadData() {
- reloadLeftIconView()
-
- reloadPageEditView()
-
- reloadToolsView()
-
- reloadSelectZoomView()
-
- reloadToolbarTabsView()
-
- reloadSecondToolbar()
- }
-
- //MARK: - 刷新tools工具
- func reloadToolsView() {
- KMPDFToolbarManager.manager.reloadToolsData()
-
- toolsView.reloadData()
- }
-
- //MARK: - Action
- @objc func buttonClicked(_ sender: ComponentButton) {
- if sender.properties == KMPDFToolbarManager.manager.viewProperty {
- KMPDFManager.manager.showView = !KMPDFManager.manager.showView
-
- sender.properties.state = KMPDFManager.manager.showView ? .pressed : .normal
- sender.reloadData()
-
- } else if sender.properties == KMPDFToolbarManager.manager.pageProperty {
- KMPDFManager.manager.isPageEditMode = !KMPDFManager.manager.isPageEditMode
-
- sender.properties.state = KMPDFManager.manager.isPageEditMode ? .pressed : .normal
- sender.reloadData()
-
- KMPDFManager.manager.toolMode = .None
- }
-
- delegate?.kmPDFToolbarControllerDidToolbarItemClicked?(self, sender.properties.identifier)
-
- reloadData()
- }
-
- }
- //MARK: - ComponentDropdownToolDelegate
- extension KMPDFToolbarController: ComponentDropdownToolDelegate {
- func componentDropdownToolDidClicked(_ view: ComponentDropdownTool, menuItem: ComponentMenuitemProperty?) {
- for item in KMPDFToolbarManager.manager.toolsProperty.menuItemArr ?? [] {
- item.itemSelected = false
- item.state = .normal
- }
-
- menuItem?.itemSelected = true
- if menuItem == KMPDFToolbarManager.manager.tools_selectProperty {
- KMPDFManager.manager.viewToolsType = .Select
- } else if menuItem == KMPDFToolbarManager.manager.tools_scrollProperty {
- KMPDFManager.manager.viewToolsType = .Scroll
- } else if menuItem == KMPDFToolbarManager.manager.tools_contentProperty {
- KMPDFManager.manager.viewToolsType = .Content_Selection
- } else if menuItem == KMPDFToolbarManager.manager.tools_magnifyProperty {
- KMPDFManager.manager.viewToolsType = .Magnify
- } else if menuItem == KMPDFToolbarManager.manager.tools_areaProperty {
- KMPDFManager.manager.viewToolsType = .AreaZoom
- }
- reloadToolsView()
- }
- }
- //MARK: - ComponentSelectZoomDelegate
- extension KMPDFToolbarController: ComponentSelectZoomDelegate {
- func componentSelectZoomDidReduce(view: ComponentSelectZoom) {
-
- }
-
- func componentSelectZoomDidSelect(view: ComponentSelectZoom?, menuItemProperty: ComponentMenuitemProperty?) {
-
- }
-
- func componentSelectZoomDidAdd(view: ComponentSelectZoom) {
-
- }
- }
- //MARK: - ComponentTabsDelegate
- extension KMPDFToolbarController: ComponentTabsDelegate {
- func componentTabsDidSelected(_ view: ComponentTabs, _ property: ComponentTabsProperty) {
- let _manager = KMPDFManager.manager
-
- _manager.viewToolsType = .Select
- _manager.isPageEditMode = false
-
- if property == KMPDFToolbarManager.manager.markupMode_Property {
- if _manager.toolMode == .Markup {
- _manager.toolMode = .None
- property.state = .normal
- view.refreshItems()
- } else {
- _manager.toolMode = .Markup
- }
- } else if property == KMPDFToolbarManager.manager.editMode_Property {
- if _manager.toolMode == .Edit {
- _manager.toolMode = .None
- property.state = .normal
- view.refreshItems()
- } else {
- _manager.toolMode = .Edit
- }
- } else if property == KMPDFToolbarManager.manager.formMode_Property {
- if _manager.toolMode == .Form {
- _manager.toolMode = .None
- property.state = .normal
- view.refreshItems()
- } else {
- _manager.toolMode = .Form
- }
- } else if property == KMPDFToolbarManager.manager.fillMode_Property {
- if _manager.toolMode == .Fill {
- _manager.toolMode = .None
- property.state = .normal
- view.refreshItems()
- } else {
- _manager.toolMode = .Fill
- }
- } else if property == KMPDFToolbarManager.manager.convertMode_Property {
- if _manager.toolMode == .Convert {
- _manager.toolMode = .None
- property.state = .normal
- view.refreshItems()
- } else {
- _manager.toolMode = .Convert
- }
- } else if property == KMPDFToolbarManager.manager.protectMode_Property {
- if _manager.toolMode == .Protect {
- _manager.toolMode = .None
- property.state = .normal
- view.refreshItems()
- } else {
- _manager.toolMode = .Protect
- }
- } else if property == KMPDFToolbarManager.manager.toolsMode_Property {
- if _manager.toolMode == .Tools {
- _manager.toolMode = .None
-
- property.state = .normal
- view.refreshItems()
- } else {
- _manager.toolMode = .Tools
- }
- }
-
- delegate?.kmPDFToolbarControllerDidToolbarItemClicked?(self, property.identifier)
-
- reloadData()
- }
- }
- //MARK: - KMPDFSecToolbarControllerDelegate
- extension KMPDFToolbarController: KMPDFSecToolbarControllerDelegate {
- func kmPDFSecToolbarControllerDidItemClicked(_ controller: KMPDFSecToolbarController, _ property: Any) {
- if let value = property as? ComponentButtonProperty {
- delegate?.kmPDFToolbarControllerDidToolbarItemClicked?(self, value.identifier)
- } else if let value = property as? ComponentMenuitemProperty {
- delegate?.kmPDFToolbarControllerDidToolbarItemClicked?(self, value.identifier)
- }
- }
- }
|