Browse Source

【埋点】付费路径埋点新增记录触发保存的功能

tangchao 1 year ago
parent
commit
88b951f7bd

+ 96 - 2
PDF Office/PDF Master/Class/Common/KMEnumExtensions.swift

@@ -7,6 +7,10 @@
 
 import Foundation
 
+protocol KMSubscribeWaterMarkTypeConvertProtocol {
+    func toSubscribeWaterMarkType() -> KMSubscribeWaterMarkType
+}
+
 /*
  @objc enum KMToolbarType: Int {
      /// conversion
@@ -33,7 +37,7 @@ import Foundation
  }
  */
 
-extension KMToolbarType {
+extension KMToolbarType: KMSubscribeWaterMarkTypeConvertProtocol {
     func toSubscribeWaterMarkType() -> KMSubscribeWaterMarkType {
         switch self {
         case .word:
@@ -84,7 +88,7 @@ extension KMToolbarType {
  }
  */
 
-extension KMPDFConvertType {
+extension KMPDFConvertType: KMSubscribeWaterMarkTypeConvertProtocol {
     func toSubscribeWaterMarkType() -> KMSubscribeWaterMarkType {
         switch self {
         case .word:
@@ -108,3 +112,93 @@ extension KMPDFConvertType {
         }
     }
 }
+
+/*
+ @objc enum KMItemKey: Int {
+     case print = 0 // 打印
+     case delete
+     case leftRotate
+     case rightRotate
+     case cut
+     case paste
+ }
+ */
+
+extension KMItemKey: KMSubscribeWaterMarkTypeConvertProtocol {
+    func toSubscribeWaterMarkType() -> KMSubscribeWaterMarkType {
+        switch self {
+        case .leftRotate:
+            return .rotate
+        case .rightRotate:
+            return .rotate
+        case .paste:
+            return .copy
+        case .delete:
+            return .delete
+        default:
+            return .none
+        }
+    }
+}
+
+/*
+ enum KMPageEditType: Int {
+     case pageRange = 1
+     case leftRotate
+     case rightRotate
+     case insert
+     case extract
+     case replace
+     case split
+     case reverse
+     case delete
+     
+     case zoomOut
+     case zoomIn
+     
+     static let none: KMPageEditType = KMPageEditType(rawValue: 0)!
+     
+     static var insert_files: Int {
+         get {
+             return self.insert.rawValue + 1000
+         }
+     }
+     static var insert_blank_page: Int {
+         get {
+             return self.insert.rawValue  + 1001
+         }
+     }
+     static var insert_custom_page: Int {
+         get {
+             return self.insert.rawValue + 1002
+         }
+     }
+ }
+ */
+
+extension KMPageEditType: KMSubscribeWaterMarkTypeConvertProtocol {
+    func toSubscribeWaterMarkType() -> KMSubscribeWaterMarkType {
+        switch self {
+        case .leftRotate:
+            return .rotate
+        case .rightRotate:
+            return .rotate
+        case .insert:
+            return .insert
+        case .extract:
+            return .extract
+        case .replace:
+            return .replace
+        case .split:
+            return .split
+        case .reverse:
+            return .none
+        case .delete:
+            return .delete
+        case .paste:
+            return .copy
+        default:
+            return .none
+        }
+    }
+}

+ 10 - 10
PDF Office/PDF Master/Class/PDFTools/PageEdit/Controller/KMPDFEditViewController.swift

@@ -233,12 +233,12 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
         }
     }
     
-    fileprivate func dealPdfDocumentDidEditCallback() {
+    fileprivate func dealPdfDocumentDidEditCallback(type: KMPageEditType = .none) {
         // 提醒外面文档已编辑
         guard let callback = self.documentEditedCallback else {
             return
         }
-        callback()
+        callback(type)
     }
     
     // MARK: - 清空选择
@@ -285,7 +285,7 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
             return
         }
         
-        self.dealPdfDocumentDidEditCallback()
+        self.dealPdfDocumentDidEditCallback(type: .delete)
         
         super.deleteIndexPaths(indexpaths: indexpaths)
     }
@@ -303,7 +303,7 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
             return
         }
         super.leftRotateIndexpaths(indexpaths: indexpaths)
-        self.dealPdfDocumentDidEditCallback()
+        self.dealPdfDocumentDidEditCallback(type: .leftRotate)
     }
     
     override func rightRotateAction() {
@@ -320,7 +320,7 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
         }
         
         super.rightRotateIndexpaths(indexpaths: indexpaths)
-        self.dealPdfDocumentDidEditCallback()
+        self.dealPdfDocumentDidEditCallback(type: .rightRotate)
     }
     
     override func insertPages(pages: Array<CPDFPage>, at indexs: IndexSet) {
@@ -328,7 +328,7 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
         
         if (!indexs.isEmpty) {
             self.selectPages(indexs: indexs)
-            self.dealPdfDocumentDidEditCallback()
+            self.dealPdfDocumentDidEditCallback(type: .insert)
         }
     }
     
@@ -336,7 +336,7 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
         if (self.canPaste()) {
             super.pasteAction()
             
-            self.dealPdfDocumentDidEditCallback()
+            self.dealPdfDocumentDidEditCallback(type: .paste)
         }
     }
     
@@ -766,7 +766,7 @@ class KMPDFEditViewController: KMPDFThumbViewBaseController {
         }
         
         self.reversePages(indexs: indexs)
-        self.dealPdfDocumentDidEditCallback()
+        self.dealPdfDocumentDidEditCallback(type: .reverse)
     }
     
     override func addMenuItem(menu: NSMenu, item: KMPDFThumbViewMenu.Item) -> NSMenuItem? {
@@ -1130,12 +1130,12 @@ extension KMPDFEditViewController {
             insertIndex += 1
         }
         self.thumbnailView.selectionIndexPaths = indexpaths
-        self.dealPdfDocumentDidEditCallback()
+        self.dealPdfDocumentDidEditCallback(type: .replace)
     }
     
     override func insertBlankPageAfter(size: NSSize, at index: Int) {
         self.selectPages(indexs: IndexSet(integer: index))
-        self.dealPdfDocumentDidEditCallback()
+        self.dealPdfDocumentDidEditCallback(type: .insert)
     }
     
     func listViewCurrentPageUpdateForDrag(indexs: IndexSet, toIndex: Int) {

+ 3 - 0
PDF Office/PDF Master/Class/PDFTools/PageEdit/View/KMPDFEditToolbar.swift

@@ -21,6 +21,9 @@ enum KMPageEditType: Int {
     case zoomOut
     case zoomIn
     
+    static let none: KMPageEditType = KMPageEditType(rawValue: 0)!
+    static let paste: KMPageEditType = KMPageEditType(rawValue: 100)!
+    
     static var insert_files: Int {
         get {
             return self.insert.rawValue + 1000

+ 2 - 2
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift

@@ -2881,7 +2881,7 @@ extension KMMainViewController : KMMainToolbarControllerDelegate {
                         self?.listView.document.unlock(withPassword: password)
                         self?.hiddenSecureLimitTip()
                         self?.recordRemoveSecureFlag()
-                        self?.recordSaveWatermarkFlag()
+                        self?.recordSaveWatermarkFlag(type: .removePassword)
                         
                         let tip = KMRemovePasswordResultTipView()
                         tip.result = .success
@@ -2900,7 +2900,7 @@ extension KMMainViewController : KMMainToolbarControllerDelegate {
                 }
                 
                 self.recordRemoveSecureFlag()
-                self.recordSaveWatermarkFlag()
+                self.recordSaveWatermarkFlag(type: .removePassword)
                 let tip = KMRemovePasswordResultTipView()
                 tip.result = .success
                 self.hiddenSecureLimitTip()

+ 1 - 1
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+UI.swift

@@ -436,7 +436,7 @@ extension KMMainViewController: KMLeftSideViewControllerDelegate {
             
             self.showPrintWindow(pageRange: pageRange)
         } else if (itemKey == .cut || itemKey == .paste || itemKey == .delete || itemKey == .leftRotate || itemKey == .rightRotate) {
-            self.recordIsPDFDocumentEdited()
+            self.recordIsPDFDocumentEdited(type: itemKey.toSubscribeWaterMarkType())
         }
     }
     

+ 21 - 13
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController.swift

@@ -559,10 +559,14 @@ import Cocoa
                 self?.showPrintWindow(pageRange: KMPrintPageRange(type: .custom, selectPages: params.first as! [Int]))
             }
         }
-        controller.documentEditedCallback = { [weak self] _ in
+        controller.documentEditedCallback = { [weak self] params in
             self?.recordIsPDFDocumentEdited()
 //            self?.needSave = true
-            self?.recordSaveWatermarkFlag()
+            if let data = params.first as? KMPageEditType {
+                self?.recordSaveWatermarkFlag(type: data.toSubscribeWaterMarkType())
+            } else {
+                self?.recordSaveWatermarkFlag()
+            }
         }
     }
     
@@ -881,11 +885,11 @@ import Cocoa
             
             self?._secureOptions = windowController_secure.options
             self?.needSave = true
-            self?.recordIsPDFDocumentEdited()
+            self?.recordIsPDFDocumentEdited(type: .setPassword)
             
             if (result) {
                 self?.showSecureSuccessTip()
-                self?.recordSaveWatermarkFlag()
+                self?.recordSaveWatermarkFlag(type: .setPassword)
             } else {
                 let alert = NSAlert()
                 alert.messageText = NSLocalizedString("Failure", comment: "")
@@ -1293,7 +1297,7 @@ import Cocoa
     public func recordRemoveSecureFlag() {
         self._removeSecureFlag = true
         self.clearSecureOptions()
-        self.recordIsPDFDocumentEdited()
+        self.recordIsPDFDocumentEdited(type: .removePassword)
         self._needSave = true
     }
     
@@ -1301,7 +1305,7 @@ import Cocoa
         self._removeSecureFlag = false
     }
     
-    public func recordSaveWatermarkFlag() {
+    public func recordSaveWatermarkFlag(type: KMSubscribeWaterMarkType = .none) {
         km_synchronized(self) {
             self._saveWatermarkFlag = true
         }
@@ -1313,7 +1317,7 @@ import Cocoa
         }
     }
     
-    public func recordIsPDFDocumentEdited() {
+    public func recordIsPDFDocumentEdited(type: KMSubscribeWaterMarkType = .none) {
         km_synchronized(self) {
             self._isPDFDocumentEdited = true
             
@@ -1522,7 +1526,7 @@ import Cocoa
                 }
             }
             if self.listView.isEdited() {
-                self.recordIsPDFDocumentEdited()
+                self.recordIsPDFDocumentEdited(type: .editText)
             }
             if self.listView.annotationType != .addText {
                 NotificationCenter.default.post(name: NSNotification.Name(rawValue: "kPDFViewEditingAreaDidChanged"), object: self.listView.document)
@@ -1590,7 +1594,7 @@ import Cocoa
         }
         
         if self.listView.isEdited() {
-            self.recordIsPDFDocumentEdited()
+            self.recordIsPDFDocumentEdited(type: .editText)
             
             if self.listView.annotationType != .addText {
                 NotificationCenter.default.post(name: NSNotification.Name(rawValue: "kPDFViewEditingAreaDidChanged"), object: self.listView.document)
@@ -1608,7 +1612,7 @@ import Cocoa
     
     //编辑PDF 创建图片区域回调
     func pdfViewEditingAddImageArea(_ pdfView: CPDFView!, add page: CPDFPage!, add rect: CGRect) {
-        self.recordSaveWatermarkFlag()
+        self.recordSaveWatermarkFlag(type: .editImage)
         
         if self.listView.isEditImage {
             self.menuItemEditingClick_CropImage(sender: NSMenuItem())
@@ -1683,7 +1687,7 @@ import Cocoa
                         DispatchQueue.main.async {
                             self.listView.createImagePath(filePath, rect: imageRect, page: pdfView.currentPage())
                             self.isPDFTextImageEdited = true
-                            self.recordIsPDFDocumentEdited()
+                            self.recordIsPDFDocumentEdited(type: .editImage)
 //                            self.asyncSaveDocument { params in
 //
 //                            }
@@ -1732,7 +1736,7 @@ import Cocoa
 //        self.asyncSaveDocument { params in
 //
 //        }
-        self.recordSaveWatermarkFlag()
+        self.recordSaveWatermarkFlag(type: .editText)
     }
     
     func pdfListViewKeyDownIsContinue(_ pdfListView: CPDFListView!, theEvent: NSEvent!) -> Bool {
@@ -2107,20 +2111,24 @@ import Cocoa
     func pdfListViewAddAnnotations(_ pdfListView: CPDFListView!, forAdd annotations: [CPDFAnnotation]!, in pdfPage: CPDFPage!) {
         var addRedact = false
         var saveWatermark = false
+        var saveWatermarkType: KMSubscribeWaterMarkType = .none
         for anno in annotations {
             if (anno.isKind(of: CPDFRedactAnnotation.self)) {
                 addRedact = true
 //                break
             } else if (anno.isKind(of: CPDFLinkAnnotation.self)) { // link 注释
                 saveWatermark = true
+                saveWatermarkType = .link
             } else if (anno.isKind(of: CPDFListStampAnnotation.self)) { // 图章注释
                 saveWatermark = true
+                saveWatermarkType = .stamp
             } else if (anno.isKind(of: CPDFListSignatureAnnotation.self)) { // 签名注释
                 saveWatermark = true
+                saveWatermarkType = .sign
             }
         }
         if (saveWatermark) {
-            self.recordSaveWatermarkFlag()
+            self.recordSaveWatermarkFlag(type: saveWatermarkType)
         }
         self.hasAddRedact = addRedact
         if self.isReadMode || self.listView.toolMode == .moveToolMode {