소스 검색

【2025】【综合】Edit,水印,编辑模板但未保存时,切换Tab应该弹保存提示

niehaoyu 2 주 전
부모
커밋
1daeea9c31

+ 15 - 1
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/KMEditToolbarView.swift

@@ -19,7 +19,9 @@ import KMComponentLibrary
     @objc optional func kmEditToolbarViewDidChooseExit(_ view: KMEditToolbarView)
      
     @objc optional func kmEditToolbarViewDidPageRangeUpdate(_ view: KMEditToolbarView)
- 
+
+    @objc optional func kmEditToolbarViewDidModeChangeEnable(_ view: KMEditToolbarView) -> Bool
+
 }
 
 class KMEditToolbarView: BaseXibView {
@@ -162,6 +164,11 @@ class KMEditToolbarView: BaseXibView {
             editSubType = .template
             delegate?.kmEditToolbarViewDidUpdateMode?(self)
         } else if sender == addButton {
+            if editSubType == .edit {
+                if delegate?.kmEditToolbarViewDidModeChangeEnable?(self) == false {
+                    return
+                }
+            }
             editSubType = .add
             delegate?.kmEditToolbarViewDidUpdateMode?(self)
         } else if sender == batchButton {
@@ -175,6 +182,13 @@ class KMEditToolbarView: BaseXibView {
         
     }
     
+    func changeEditSubType(_ modeType: KMPDFEditSubModeType) {
+        editSubType = modeType
+        delegate?.kmEditToolbarViewDidUpdateMode?(self)
+        
+        reloadData()
+    }
+    
     //MARK: - Mouse
     override func mouseDown(with event: NSEvent) {
         super.mouseDown(with: event)

+ 2 - 10
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Watermark/Views/KMNWatermarkPropertyController.swift

@@ -410,11 +410,7 @@ class KMNWatermarkPropertyController: KMNBaseViewController {
             leftTopButton.isHidden = false
             saveTemplateBGView.isHidden = true
             templateButton.properties.icon = NSImage(named: "edit_save")
-            var isChanged = false
-            if let dict = self.originalDataDict {
-                isChanged = KMWatermarkManager.compareIsChangedModel(watermarkData, withDict: dict as NSDictionary)
-            }
-            if isChanged {
+            if self.isOriginalDataDictChanged() == true {
                 templateButton.properties.isDisabled = false
             } else {
                 templateButton.properties.isDisabled = true
@@ -628,11 +624,7 @@ class KMNWatermarkPropertyController: KMNBaseViewController {
     //MARK: - Action
     @objc func leftTopButtonClicked(_ sender: ComponentButton) {
         if sender == leftTopButton {
-            var isChanged = false
-            if let dict = self.originalDataDict {
-                isChanged = KMWatermarkManager.compareIsChangedModel(watermarkData, withDict: dict as NSDictionary)
-            }
-            if isChanged == true {
+            if self.isOriginalDataDictChanged() == true {
                 self.showSaveEditChangeAlert { response in
                     if response == NSApplication.ModalResponse.alertFirstButtonReturn {
                         //OK

+ 53 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/KMMainViewController.swift

@@ -5339,6 +5339,59 @@ extension KMMainViewController: KMEditToolbarViewDelegate {
         }
     }
     
+    func kmEditToolbarViewDidModeChangeEnable(_ view: KMEditToolbarView) -> Bool {
+        if view.editType == .watermark, let vc = watermarkViewController, vc.propertyController.isOriginalDataDictChanged() == true {
+            vc.propertyController.showSaveEditChangeAlert { response in
+                if response == NSApplication.ModalResponse.alertFirstButtonReturn {
+                    //OK
+                    vc.propertyController.saveDataEdit()
+                } else {
+                    //Cancel
+                    vc.propertyController.cancelDataEdit()
+                }
+                view.changeEditSubType(.add)
+            }
+            return false
+        } else if view.editType == .background, let vc = backgroundViewController, vc.propertyController.isOriginalDataDictChanged() == true {
+            vc.propertyController.showSaveEditChangeAlert { response in
+                if response == NSApplication.ModalResponse.alertFirstButtonReturn {
+                    //OK
+                    vc.propertyController.saveDataEdit()
+                } else {
+                    //Cancel
+                    vc.propertyController.cancelDataEdit()
+                }
+                view.changeEditSubType(.add)
+            }
+            return false
+        } else if view.editType == .header_Footer, let vc = headerFooterViewController, vc.propertyController.isOriginalDataDictChanged() == true {
+            vc.propertyController.showSaveEditChangeAlert { response in
+                if response == NSApplication.ModalResponse.alertFirstButtonReturn {
+                    //OK
+                    vc.propertyController.saveDataEdit()
+                } else {
+                    //Cancel
+                    vc.propertyController.cancelDataEdit()
+                }
+                view.changeEditSubType(.add)
+            }
+            return false
+        } else if view.editType == .bates, let vc = batesViewController, vc.propertyController.isOriginalDataDictChanged() == true {
+            vc.propertyController.showSaveEditChangeAlert { response in
+                if response == NSApplication.ModalResponse.alertFirstButtonReturn {
+                    //OK
+                    vc.propertyController.saveDataEdit()
+                } else {
+                    //Cancel
+                    vc.propertyController.cancelDataEdit()
+                }
+                view.changeEditSubType(.add)
+            }
+            return false
+        }
+        return true
+    }
+    
     func kmEditToolbarViewDidUpdateMode(_ view: KMEditToolbarView) {
         if view.editType == .watermark {
             watermarkViewController?.editSubType = editToolbarView?.editSubType ?? .template