|
@@ -22,33 +22,94 @@ class KMPDFSecToolbarController: NSViewController {
|
|
|
|
|
|
@IBOutlet var rightContendView: NSView!
|
|
|
|
|
|
+ @IBOutlet var moreToolsBGView: NSView!
|
|
|
@IBOutlet var moreToolsView: ComponentDropdownTool!
|
|
|
|
|
|
-
|
|
|
+ @IBOutlet var contendLeftConst: NSLayoutConstraint!
|
|
|
@IBOutlet var contendViewWidthConst: NSLayoutConstraint!
|
|
|
@IBOutlet var rightContendViewWidthConst: NSLayoutConstraint!
|
|
|
|
|
|
private var propertys: [Any] = []
|
|
|
+ private var propertysWidthValue: CGFloat = 0
|
|
|
+ private var lastPropertyWidth: CGFloat = 0
|
|
|
+ private var hidePropertys: [Any] = []
|
|
|
|
|
|
private var rightPropertys: [Any] = []
|
|
|
|
|
|
+
|
|
|
weak open var delegate: KMPDFSecToolbarControllerDelegate?
|
|
|
|
|
|
+ override func viewWillLayout() {
|
|
|
+ super.viewWillLayout()
|
|
|
+
|
|
|
+ let contendXValue = CGRectGetWidth(view.frame)/2 - propertysWidthValue/2
|
|
|
+ contendLeftConst.constant = max(0, contendXValue)
|
|
|
+
|
|
|
+ if contendXValue <= 0 {
|
|
|
+ contendViewWidthConst.constant = CGRectGetWidth(view.frame)
|
|
|
+ } else {
|
|
|
+ contendViewWidthConst.constant = propertysWidthValue
|
|
|
+ }
|
|
|
+
|
|
|
+ hidePropertys.removeAll()
|
|
|
+ moreToolsBGView.isHidden = true
|
|
|
+ let subviews = infoContendView.subviews
|
|
|
+ for view in subviews {
|
|
|
+ if CGRectGetMidX(view.frame) > CGRectGetWidth(self.view.frame) - lastPropertyWidth {
|
|
|
+ moreToolsBGView.isHidden = false
|
|
|
+ view.isHidden = true
|
|
|
+ if view is ComponentButton {
|
|
|
+ hidePropertys.append((view as! ComponentButton).properties)
|
|
|
+ } else if view is ComponentDropdownTool {
|
|
|
+ hidePropertys.append((view as! ComponentDropdownTool).properties)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ view.isHidden = false
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(setUpHidePropertys), object: nil)
|
|
|
+ self.perform(#selector(setUpHidePropertys), with: nil, afterDelay: 0.35)
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
override func viewDidLoad() {
|
|
|
super.viewDidLoad()
|
|
|
// Do view setup here.
|
|
|
|
|
|
-
|
|
|
setUpProperty()
|
|
|
+
|
|
|
}
|
|
|
|
|
|
func setUpProperty() {
|
|
|
+ contendBox.fillColor = ComponentLibrary.shared.getComponentColorFromKey("colorBg/layout-middle")
|
|
|
+ moreToolsBGView.wantsLayer = true
|
|
|
+ moreToolsBGView.layer?.backgroundColor = contendBox.fillColor.cgColor
|
|
|
+ moreToolsBGView.isHidden = true
|
|
|
+
|
|
|
moreToolsView.properties = ComponentDropdownToolProperty(state: .normal, leftIcon: NSImage(named: "toolbar_doubleArrow_right"))
|
|
|
+ moreToolsView.delegate = self
|
|
|
|
|
|
-
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+ @objc func setUpHidePropertys() {
|
|
|
+
|
|
|
+ var menuItemArr: [ComponentMenuitemProperty] = []
|
|
|
+
|
|
|
+ for item in hidePropertys {
|
|
|
+ if item is ComponentButtonProperty {
|
|
|
+ let menuItem = ComponentMenuitemProperty(type: .normal, text: (item as! ComponentButtonProperty).buttonText ?? "", identifier: (item as! ComponentButtonProperty).identifier)
|
|
|
+ menuItemArr.append(menuItem)
|
|
|
+ } else if item is ComponentDropdownToolProperty {
|
|
|
+ let menuItem = ComponentMenuitemProperty(type: .normal, text: (item as! ComponentDropdownToolProperty).text ?? "testtest", identifier: "")
|
|
|
+ if let subItems = (item as! ComponentDropdownToolProperty).menuItemArr {
|
|
|
+ menuItem.subPropertys = subItems
|
|
|
+ }
|
|
|
+ menuItemArr.append(menuItem)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ moreToolsView.properties.menuItemArr = menuItemArr
|
|
|
+ }
|
|
|
|
|
|
//MARK: - reload
|
|
|
public func reloadMainPropertys(_ arr: [Any]) {
|
|
@@ -93,6 +154,7 @@ class KMPDFSecToolbarController: NSViewController {
|
|
|
|
|
|
itemXvalue += CGRectGetWidth(button.frame)
|
|
|
itemXvalue += 12
|
|
|
+ lastPropertyWidth = CGRectGetWidth(button.frame)
|
|
|
|
|
|
} else if property is ComponentDividerProperty {
|
|
|
let divider = ComponentDivider.init()
|
|
@@ -102,6 +164,7 @@ class KMPDFSecToolbarController: NSViewController {
|
|
|
|
|
|
itemXvalue += 1
|
|
|
itemXvalue += 12
|
|
|
+ lastPropertyWidth = CGRectGetWidth(divider.frame)
|
|
|
|
|
|
} else if property is ComponentDropdownToolProperty {
|
|
|
let dropdownTool = ComponentDropdownTool.init()
|
|
@@ -112,12 +175,15 @@ class KMPDFSecToolbarController: NSViewController {
|
|
|
|
|
|
itemXvalue += CGRectGetWidth(dropdownTool.frame)
|
|
|
itemXvalue += 12
|
|
|
+ lastPropertyWidth = CGRectGetWidth(dropdownTool.frame)
|
|
|
|
|
|
}
|
|
|
}
|
|
|
itemXvalue -= 12
|
|
|
|
|
|
- contendViewWidthConst.constant = itemXvalue
|
|
|
+ propertysWidthValue = itemXvalue
|
|
|
+ contendViewWidthConst.constant = propertysWidthValue
|
|
|
+ contendLeftConst.constant = CGRectGetWidth(view.frame)/2 - propertysWidthValue/2
|
|
|
|
|
|
}
|
|
|
|
|
@@ -181,7 +247,6 @@ class KMPDFSecToolbarController: NSViewController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
//MARK: -
|
|
|
@objc func buttonClicked(_ sender: ComponentButton) {
|
|
|
delegate?.kmPDFSecToolbarControllerDidItemClicked?(self, sender.properties)
|
|
@@ -193,6 +258,7 @@ extension KMPDFSecToolbarController: ComponentDropdownToolDelegate {
|
|
|
func componentDropdownToolDidClicked(_ view: ComponentDropdownTool, menuItem: ComponentMenuitemProperty?) {
|
|
|
if let property = menuItem {
|
|
|
property.itemSelected = false
|
|
|
+ property.state = .normal
|
|
|
|
|
|
delegate?.kmPDFSecToolbarControllerDidItemClicked?(self, property)
|
|
|
}
|