Bläddra i källkod

【综合】悬浮框新增埋点

tangchao 8 månader sedan
förälder
incheckning
c6793affb1

+ 106 - 4
PDF Office/PDF Master/Class/PDFTools/EditPDF/Controller/KMEditPDFPopToolBarController.swift

@@ -35,6 +35,25 @@ import Cocoa
     case alignmentjustifiedY // 上下两端对齐
     
     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 {
@@ -88,7 +107,7 @@ class KMEditPDFPopToolBarController: NSViewController {
     var toolbarView: KMEditPDFToolbarView?
     var itemKeys: [KMEditPDFToolbarItemKey] = [] {
         didSet {
-//            self.toolbarView?.reloadData()
+            //            self.toolbarView?.reloadData()
         }
     }
     
@@ -110,7 +129,7 @@ class KMEditPDFPopToolBarController: NSViewController {
         // Do view setup here.
         
         self.interfaceThemeDidChanged(NSApp.appearance?.name ?? .aqua)
-
+        
         let toolbarView = KMEditPDFToolbarView()
         self.toolbarView = toolbarView
         toolbarView.frame = self.view.bounds
@@ -134,15 +153,33 @@ class KMEditPDFPopToolBarController: NSViewController {
     @objc func _buttonClick(_ sender: NSButton) {
         let idx = sender.tag
         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) {
+        self._trackEvent(key: .textAlignment)
+        
         let vc = KMTextAlignmentController(nibName: "KMTextAlignmentController", bundle: nil)
         let createFilePopover: NSPopover = NSPopover.init()
         createFilePopover.contentViewController = vc
-//        createFilePopover.delegate = self
+        //        createFilePopover.delegate = self
         createFilePopover.animates = true
         createFilePopover.behavior = .semitransient
         createFilePopover.setValue(true, forKey: "shouldHideAnchor")
@@ -187,6 +224,65 @@ class KMEditPDFPopToolBarController: NSViewController {
             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 {
@@ -209,6 +305,8 @@ extension KMEditPDFPopToolBarController: KMEditPDFToolbarViewDelegate {
             }
             
             view.itemClick = { [weak self] idx, _ in
+                self?._trackEvent(key: .color)
+                
                 let panel = NSColorPanel.shared
                 panel.setTarget(self)
                 panel.setAction(#selector(self?.colorPanelAction))
@@ -384,6 +482,10 @@ extension KMEditPDFPopToolBarController: KMEditPDFToolbarViewDelegate {
 }
 
 extension KMEditPDFPopToolBarController: KMSelectPopButtonDelegate {
+    func km_SelectPopoverWillShow(_ obj: KMDesignSelect) {
+        self._trackEvent(key: .fontStyle)
+    }
+    
     func km_comboBoxSelectionDidChange(_ obj: KMDesignSelect) {
         self.itemClick?(.fontStyle, obj.stringValue)
     }

+ 1 - 0
PDF Office/PDF Master/Class/PDFWindowController/Tools/FMTrackEventManager.swift

@@ -8,6 +8,7 @@
 import Foundation
 import AppCenterAnalytics
 
+let kTrackEventManager = FMTrackEventManager.defaultManager
 @objcMembers class FMTrackEventManager: NSObject{
     static let defaultManager: FMTrackEventManager = {
         let manager = FMTrackEventManager()