|
@@ -35,6 +35,25 @@ import Cocoa
|
|
case alignmentjustifiedY // 上下两端对齐
|
|
case alignmentjustifiedY // 上下两端对齐
|
|
|
|
|
|
case separator // 分割线
|
|
case separator // 分割线
|
|
|
|
+
|
|
|
|
+ func isRotate() -> Bool {
|
|
|
|
+ return self == .leftRotate || self == .rightRotate
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ func isReverse() -> Bool {
|
|
|
|
+ return self == .reverseX || self == .reverseY
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ func isAlign() -> Bool {
|
|
|
|
+ return self.isHorAlign() || self.isVerAlign()
|
|
|
|
+ }
|
|
|
|
+ func isHorAlign() -> Bool {
|
|
|
|
+ return self == .alignmentLeft || self == .alignmentCenterX || self == .alignmentRight || self == .alignmentjustifiedX
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ func isVerAlign() -> Bool {
|
|
|
|
+ return self == .alignmentTop || self == .alignmentCenterY || self == .alignmentBottom || self == .alignmentjustifiedY
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
class KMEditPDFToolbarModel: NSObject {
|
|
class KMEditPDFToolbarModel: NSObject {
|
|
@@ -88,7 +107,7 @@ class KMEditPDFPopToolBarController: NSViewController {
|
|
var toolbarView: KMEditPDFToolbarView?
|
|
var toolbarView: KMEditPDFToolbarView?
|
|
var itemKeys: [KMEditPDFToolbarItemKey] = [] {
|
|
var itemKeys: [KMEditPDFToolbarItemKey] = [] {
|
|
didSet {
|
|
didSet {
|
|
-// self.toolbarView?.reloadData()
|
|
|
|
|
|
+ // self.toolbarView?.reloadData()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -110,7 +129,7 @@ class KMEditPDFPopToolBarController: NSViewController {
|
|
// Do view setup here.
|
|
// Do view setup here.
|
|
|
|
|
|
self.interfaceThemeDidChanged(NSApp.appearance?.name ?? .aqua)
|
|
self.interfaceThemeDidChanged(NSApp.appearance?.name ?? .aqua)
|
|
-
|
|
|
|
|
|
+
|
|
let toolbarView = KMEditPDFToolbarView()
|
|
let toolbarView = KMEditPDFToolbarView()
|
|
self.toolbarView = toolbarView
|
|
self.toolbarView = toolbarView
|
|
toolbarView.frame = self.view.bounds
|
|
toolbarView.frame = self.view.bounds
|
|
@@ -134,15 +153,33 @@ class KMEditPDFPopToolBarController: NSViewController {
|
|
@objc func _buttonClick(_ sender: NSButton) {
|
|
@objc func _buttonClick(_ sender: NSButton) {
|
|
let idx = sender.tag
|
|
let idx = sender.tag
|
|
if idx >= 0 && idx < self.itemKeys.count {
|
|
if idx >= 0 && idx < self.itemKeys.count {
|
|
- self.itemClick?(self.itemKeys[idx], nil)
|
|
|
|
|
|
+ let key = self.itemKeys[idx]
|
|
|
|
+ self.itemClick?(key, nil)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var style: KMEditPDFToolbarStyle = []
|
|
|
|
+ if let data = self.itemKeys.first {
|
|
|
|
+ if data == .color {
|
|
|
|
+ style.insert(.text)
|
|
|
|
+ } else if data.isRotate() {
|
|
|
|
+ style.insert(.image)
|
|
|
|
+ } else if data.isAlign() {
|
|
|
|
+ style.insert(.text)
|
|
|
|
+ style.insert(.image)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ self._trackEvent(key: key, style: style)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@objc func textAlignmentItemClick(_ sender: NSButton) {
|
|
@objc func textAlignmentItemClick(_ sender: NSButton) {
|
|
|
|
+ self._trackEvent(key: .textAlignment)
|
|
|
|
+
|
|
let vc = KMTextAlignmentController(nibName: "KMTextAlignmentController", bundle: nil)
|
|
let vc = KMTextAlignmentController(nibName: "KMTextAlignmentController", bundle: nil)
|
|
let createFilePopover: NSPopover = NSPopover.init()
|
|
let createFilePopover: NSPopover = NSPopover.init()
|
|
createFilePopover.contentViewController = vc
|
|
createFilePopover.contentViewController = vc
|
|
-// createFilePopover.delegate = self
|
|
|
|
|
|
+ // createFilePopover.delegate = self
|
|
createFilePopover.animates = true
|
|
createFilePopover.animates = true
|
|
createFilePopover.behavior = .semitransient
|
|
createFilePopover.behavior = .semitransient
|
|
createFilePopover.setValue(true, forKey: "shouldHideAnchor")
|
|
createFilePopover.setValue(true, forKey: "shouldHideAnchor")
|
|
@@ -187,6 +224,65 @@ class KMEditPDFPopToolBarController: NSViewController {
|
|
self.toolbarView?.reloadData()
|
|
self.toolbarView?.reloadData()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ // MARK: - Track Events
|
|
|
|
+
|
|
|
|
+ private func _trackEvent(key: KMEditPDFToolbarItemKey, style: KMEditPDFToolbarStyle = []) {
|
|
|
|
+ let catetoryString = "SubTbr_EditPDF"
|
|
|
|
+ let label_text = "SubTbr_EditText"
|
|
|
|
+ let label_image = "SubTbr_EditImage"
|
|
|
|
+
|
|
|
|
+ // Text
|
|
|
|
+ if key == .color {
|
|
|
|
+ let eventString = "SubTbr_EditText_FloatBar_Color"
|
|
|
|
+ kTrackEventManager.trackEvent(event: catetoryString, withProperties: [label_text : eventString])
|
|
|
|
+ } else if key == .fontStyle {
|
|
|
|
+ let eventString = "SubTbr_EditText_FloatBar_FontStyle"
|
|
|
|
+ kTrackEventManager.trackEvent(event: catetoryString, withProperties: [label_text : eventString])
|
|
|
|
+ } else if key == .fontAdd || key == .fontReduce {
|
|
|
|
+ let eventString = "SubTbr_EditText_FloatBar_FontSize"
|
|
|
|
+ kTrackEventManager.trackEvent(event: catetoryString, withProperties: [label_text : eventString])
|
|
|
|
+ } else if key == .fontBold {
|
|
|
|
+ let eventString = "SubTbr_EditText_FloatBar_Bold"
|
|
|
|
+ kTrackEventManager.trackEvent(event: catetoryString, withProperties: [label_text : eventString])
|
|
|
|
+ } else if key == .fontItalic {
|
|
|
|
+ let eventString = "SubTbr_EditText_FloatBar_Italic"
|
|
|
|
+ kTrackEventManager.trackEvent(event: catetoryString, withProperties: [label_text : eventString])
|
|
|
|
+ } else if key == .textAlignment {
|
|
|
|
+ let eventString = "SubTbr_EditText_FloatBar_AlignText"
|
|
|
|
+ kTrackEventManager.trackEvent(event: catetoryString, withProperties: [label_text : eventString])
|
|
|
|
+ }
|
|
|
|
+ // Image
|
|
|
|
+ else if key.isRotate() {
|
|
|
|
+ let eventString = "SubTbr_EditImage_FloatBar_Rotate"
|
|
|
|
+ kTrackEventManager.trackEvent(event: catetoryString, withProperties: [label_image : eventString])
|
|
|
|
+ } else if key.isReverse() {
|
|
|
|
+ let eventString = "SubTbr_EditImage_FloatBar_Flip"
|
|
|
|
+ kTrackEventManager.trackEvent(event: catetoryString, withProperties: [label_image : eventString])
|
|
|
|
+ } else if key == .crop {
|
|
|
|
+ let eventString = "SubTbr_EditImage_FloatBar_Crop"
|
|
|
|
+ kTrackEventManager.trackEvent(event: catetoryString, withProperties: [label_image : eventString])
|
|
|
|
+ } else if key == .replace {
|
|
|
|
+ let eventString = "SubTbr_EditImage_FloatBar_Replace"
|
|
|
|
+ kTrackEventManager.trackEvent(event: catetoryString, withProperties: [label_image : eventString])
|
|
|
|
+ } else if key == .export {
|
|
|
|
+ let eventString = "SubTbr_EditImage_FloatBar_Export"
|
|
|
|
+ kTrackEventManager.trackEvent(event: catetoryString, withProperties: [label_image : eventString])
|
|
|
|
+ }
|
|
|
|
+ // 对齐
|
|
|
|
+ else if key.isAlign() {
|
|
|
|
+ if style.contains(.text) && style.contains(.image) {
|
|
|
|
+ let eventString = "SubTbr_EditContent_AlignContent"
|
|
|
|
+ kTrackEventManager.trackEvent(event: catetoryString, withProperties: [label_text : eventString])
|
|
|
|
+ } else if style.contains(.text) {
|
|
|
|
+ let eventString = "SubTbr_EditText_FloatBar_AlignTextBoxes"
|
|
|
|
+ kTrackEventManager.trackEvent(event: catetoryString, withProperties: [label_text : eventString])
|
|
|
|
+ } else if style.contains(.image) {
|
|
|
|
+ let eventString = "SubTbr_EditImage_FloatBar_Align"
|
|
|
|
+ kTrackEventManager.trackEvent(event: catetoryString, withProperties: [label_image : eventString])
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
extension KMEditPDFPopToolBarController: KMEditPDFToolbarViewDelegate {
|
|
extension KMEditPDFPopToolBarController: KMEditPDFToolbarViewDelegate {
|
|
@@ -209,6 +305,8 @@ extension KMEditPDFPopToolBarController: KMEditPDFToolbarViewDelegate {
|
|
}
|
|
}
|
|
|
|
|
|
view.itemClick = { [weak self] idx, _ in
|
|
view.itemClick = { [weak self] idx, _ in
|
|
|
|
+ self?._trackEvent(key: .color)
|
|
|
|
+
|
|
let panel = NSColorPanel.shared
|
|
let panel = NSColorPanel.shared
|
|
panel.setTarget(self)
|
|
panel.setTarget(self)
|
|
panel.setAction(#selector(self?.colorPanelAction))
|
|
panel.setAction(#selector(self?.colorPanelAction))
|
|
@@ -384,6 +482,10 @@ extension KMEditPDFPopToolBarController: KMEditPDFToolbarViewDelegate {
|
|
}
|
|
}
|
|
|
|
|
|
extension KMEditPDFPopToolBarController: KMSelectPopButtonDelegate {
|
|
extension KMEditPDFPopToolBarController: KMSelectPopButtonDelegate {
|
|
|
|
+ func km_SelectPopoverWillShow(_ obj: KMDesignSelect) {
|
|
|
|
+ self._trackEvent(key: .fontStyle)
|
|
|
|
+ }
|
|
|
|
+
|
|
func km_comboBoxSelectionDidChange(_ obj: KMDesignSelect) {
|
|
func km_comboBoxSelectionDidChange(_ obj: KMDesignSelect) {
|
|
self.itemClick?(.fontStyle, obj.stringValue)
|
|
self.itemClick?(.fontStyle, obj.stringValue)
|
|
}
|
|
}
|