Browse Source

【2025】【Edit】水印模块自测处理

niehaoyu 3 months ago
parent
commit
9a17c9dd85

+ 4 - 6
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Watermark/KMWatermarkController.swift

@@ -165,10 +165,8 @@ extension KMWatermarkController: KMNWatermarkPropertyControllerDelegate {
         
         currentWatermarkData = controller.watermarkData
         
-        DispatchQueue.main.async {
-            self.refreshPDFDocumentWaterMark()
-        }
-                
+        self.refreshPDFDocumentWaterMark()
+        
         delegate?.kmWatermarkControllerDidWatermarkUpdated?(self)
         
     }
@@ -232,10 +230,10 @@ extension KMWatermarkController: KMNWatermarkPropertyControllerDelegate {
 extension KMWatermarkController: KMNWatermarkTemplateControllerDelegate {
     func templateControllerDidAddWatermarkData(_ controller: KMNWatermarkTemplateController) {
         editSubType = .add
-        delegate?.kmWatermarkControllerDidUpdateMode?(self)
-       
         resetUI()
         
+        delegate?.kmWatermarkControllerDidUpdateMode?(self)
+       
         propertyController.watermarkData = KMPDFWatermarkData.defaultData()
         currentWatermarkData = propertyController.watermarkData
 

+ 113 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Watermark/Model/KMWatermarkManager.swift

@@ -577,4 +577,117 @@ class KMWatermarkManager: NSObject {
         return "\(watermark)\(availableIndex)"
     }
     
+    //MARK: - Compare
+    class func compareIsChangedModel(_ model: KMPDFWatermarkData, withDict dict: NSDictionary) -> Bool {
+        if let value = dict["fontName"] {
+            if model.fontName != (value as! String) {
+                return true
+            }
+        }
+        
+       if let value = dict.object(forKey: KMWatermarkKey.text.rawValue) {
+           if model.text != (value as! String) {
+               return true
+           }
+       }
+         
+        if let value = dict.object(forKey: KMWatermarkKey.textFontName.rawValue) {
+            if model.fontName != (value as! String) {
+                return true
+            }
+        }
+        
+        if let value = dict.object(forKey: KMWatermarkKey.textfontStyle.rawValue) {
+            if model.fontStyle != (value as! String) {
+                return true
+            }
+        }
+        
+        if let value = dict.object(forKey: KMWatermarkKey.textFontSize.rawValue) {
+            if model.fontSize != (value as! CGFloat) {
+                return true
+            }
+        }
+        
+        if let value = dict.object(forKey: KMWatermarkKey.imagePath.rawValue) {
+            if model.imagePath != (value as! String) {
+                return true
+            }
+        }
+  
+        
+        if let value = dict.object(forKey: KMWatermarkKey.isScale.rawValue) {
+            if model.isScale != (value as! Bool) {
+                return true
+            }
+        }
+        if let value = dict.object(forKey: KMWatermarkKey.scale.rawValue) {
+            if model.scale != (value as! CGFloat) {
+                return true
+            }
+        }
+        
+        if let value = dict.object(forKey: KMWatermarkKey.rotate.rawValue) {
+            if model.rotation != (value as! CGFloat) {
+                return true
+            }
+        }
+        
+        if let value = dict.object(forKey: KMWatermarkKey.opacity.rawValue) {
+            if model.opacity != (value as! CGFloat) {
+                return true
+            }
+        }
+        
+        if let value = dict.object(forKey: KMWatermarkKey.verticalMode.rawValue) {
+            if model.verticalPosition.rawValue != (value as! Int) {
+                return true
+            }
+        }
+        if let value = dict.object(forKey: KMWatermarkKey.verticalSpace.rawValue) {
+            if model.ty != (value as! CGFloat) {
+                return true
+            }
+        }
+        if let value = dict.object(forKey: KMWatermarkKey.horizontalMode.rawValue) {
+            if model.horizontalPosition.rawValue != (value as! Int) {
+                return true
+            }
+        }
+        
+        if let value = dict.object(forKey: KMWatermarkKey.horizontalSpace.rawValue) {
+            if model.tx != (value as! CGFloat) {
+                return true
+            }
+        }
+        
+        if let value = dict.object(forKey: KMWatermarkKey.textColor.rawValue) {
+            if model.textColor.colorToHexString() != (value as! String) {
+                return true
+            }
+        }
+        
+        if let value = dict.object(forKey: KMWatermarkKey.isFront.rawValue) {
+            if model.isFront != (value as! Bool) {
+                return true
+            }
+        }
+        if let value = dict.object(forKey: KMWatermarkKey.isTile.rawValue) {
+            if model.isTilePage != (value as! Bool) {
+                return true
+            }
+        }
+        if let value = dict.object(forKey: KMWatermarkKey.tileHorizontalSpace.rawValue) {
+            if model.horizontalSpacing != (value as! CGFloat) {
+                return true
+            }
+        }
+        if let value = dict.object(forKey: KMWatermarkKey.tileVerticalSpace.rawValue) {
+            if model.verticalSpacing != (value as! CGFloat) {
+                return true
+            }
+        }
+        
+        return false
+    }
 }

+ 40 - 26
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Watermark/Views/KMNWatermarkPropertyController.swift

@@ -88,8 +88,7 @@ class KMNWatermarkPropertyController: NSViewController {
     public var editSubType: KMPDFEditSubModeType = .add
     
     var originalDataDict: Dictionary<String, Any>?
-    var isEditModeChanged: Bool = false //修改水印时,记录是否有做过调整
-    
+ 
     weak open var delegate: KMNWatermarkPropertyControllerDelegate?
 
     //MARK: - func
@@ -145,6 +144,7 @@ class KMNWatermarkPropertyController: NSViewController {
                                                               state: .normal,
                                                               creatable: true,
                                                               text: "12 pt",
+                                                              textUnit: " pt",
                                                               regexString: "0123456789 pt")
         var sizeItemArr: [ComponentMenuitemProperty] = []
         for string in ["6","8","10","12","14",
@@ -197,6 +197,7 @@ class KMNWatermarkPropertyController: NSViewController {
                                                                        state: .normal,
                                                                        creatable: true,
                                                                        text: "0°",
+                                                                       textUnit: "°",
                                                                        regexString: "0123456789°-")
         var rotateItems: [ComponentMenuitemProperty] = []
         for string in ["0°", "45°", "-45°", "90°", "-90°"] {
@@ -210,6 +211,7 @@ class KMNWatermarkPropertyController: NSViewController {
                                                                         state: .normal,
                                                                         creatable: true,
                                                                         text: "100%",
+                                                                        textUnit: "%",
                                                                         regexString: "0123456789%")
         var opacityItems: [ComponentMenuitemProperty] = []
         for string in ["25%", "50%", "75%", "100%"] {
@@ -226,6 +228,7 @@ class KMNWatermarkPropertyController: NSViewController {
                                                                      state: .normal,
                                                                      creatable: true,
                                                                      text: "100%",
+                                                                     textUnit: "%",
                                                                      regexString: "0123456789%")
         var appearanceScaleItems: [ComponentMenuitemProperty] = []
         for string in ["25%", "50%", "75%", "100%", "125%", "150%","200%"] {
@@ -287,7 +290,7 @@ class KMNWatermarkPropertyController: NSViewController {
         saveTemplateBGView.layer?.backgroundColor = ComponentLibrary.shared.getComponentColorFromKey("colorBg/layout-middle").cgColor
         saveButton.properties = ComponentButtonProperty(type: .default_tertiary, size: .m, showLeftIcon: true, buttonText: KMLocalizedString("Save as Template"), icon: NSImage(named: "icon_wm_template_save"), keepPressState: false)
         saveButton.setTarget(self, action: #selector(saveButtonClicked(_:)))
-        
+         
     }
     
     func reloadData() {
@@ -352,6 +355,8 @@ class KMNWatermarkPropertyController: NSViewController {
             fontStyleSelect.reloadData()
         }
         
+        positionTileCheckbox.properties.isDisabled = false
+        
         let fontSizeStr = String(format: "%.0f", watermarkData.fontSize)
         if let index = KMWatermarkManager.getFontSize().firstIndex(of: fontSizeStr) {
             fontSizeSelect.selectItemAtIndex(index)
@@ -360,6 +365,8 @@ class KMNWatermarkPropertyController: NSViewController {
         fontSizeSelect.properties.isDisabled = false
         if watermarkData.isScale {
             fontSizeSelect.properties.isDisabled = true
+            positionTileCheckbox.properties.isDisabled = true
+            watermarkData.isTilePage = false
         }
         fontSizeSelect.reloadData()
         
@@ -410,7 +417,6 @@ class KMNWatermarkPropertyController: NSViewController {
             
             positionTileHoriInput.properties.isDisabled = false
             positionTileVertInput.properties.isDisabled = false
-            
         } else {
             positionTileHorImage.image = NSImage(named: "tile_spacing_horiz_dis")
             positionTileVertImage.image = NSImage(named: "tile_spacing_vert_dis")
@@ -423,7 +429,20 @@ class KMNWatermarkPropertyController: NSViewController {
         
         positionTileCheckbox.properties.checkboxType = watermarkData.isTilePage ? .selected : .normal
         positionTileCheckbox.reloadData()
-        
+     
+        saveButton.properties.isDisabled = true
+        if watermarkData.watermarkType == .text {
+            if watermarkData.text?.count == 0 {
+                saveButton.properties.isDisabled = false
+            }
+        } else if watermarkData.watermarkType == .image {
+            if let path = watermarkData.imagePath {
+                
+            } else {
+                saveButton.properties.isDisabled = false
+            }
+        }
+        saveButton.reloadData()
     }
     
     func clearData() {
@@ -435,7 +454,11 @@ class KMNWatermarkPropertyController: NSViewController {
     //MARK: - Action
     @objc func leftTopButtonClicked(_ sender: ComponentButton) {
         if sender == leftTopButton {
-            if isEditModeChanged == true {
+            var isChanged = false
+            if let dict = self.originalDataDict {
+                isChanged = KMWatermarkManager.compareIsChangedModel(watermarkData, withDict: dict as NSDictionary)
+            }
+            if isChanged == true {
                 let alert = NSAlert()
                 alert.alertStyle = .critical
                 alert.messageText = KMLocalizedString("Save template changes?")
@@ -451,14 +474,12 @@ class KMNWatermarkPropertyController: NSViewController {
                             let _ = KMWatermarkManager.defaultManager.updateWatermark(watermark: self.watermarkData)
                         }
                         self.delegate?.watermarkPropertyControllerCancelTemplateEdit?(self)
-                        
-                        self.isEditModeChanged = false
+                         
                     }
                 }
             } else {
                 delegate?.watermarkPropertyControllerCancelTemplateEdit?(self)
-
-                isEditModeChanged = false
+ 
             }
         }
     }
@@ -471,7 +492,6 @@ class KMNWatermarkPropertyController: NSViewController {
         } else {
             delegate?.watermarkPropertyControllerDidChangetoTemplate?(self)
         }
-        isEditModeChanged = false
     }
     
     @objc func checkBoxClicked(_ sender: ComponentCheckBox) {
@@ -481,8 +501,7 @@ class KMNWatermarkPropertyController: NSViewController {
             watermarkData.isTilePage = positionTileCheckbox.properties.checkboxType == .selected ? true : false
         }
         reloadData()
-        
-        isEditModeChanged = true
+         
         delegate?.watermarkPropertyControllerDidUpdate?(self)
     }
     
@@ -494,8 +513,7 @@ class KMNWatermarkPropertyController: NSViewController {
         }
         
         reloadData()
-        
-        isEditModeChanged = true
+         
         delegate?.watermarkPropertyControllerDidUpdate?(self)
     }
     
@@ -548,7 +566,6 @@ class KMNWatermarkPropertyController: NSViewController {
                             if FileManager.default.fileExists(atPath: outFolderPath) {
                                 self.watermarkData.imagePath = outFolderPath
                             }
-                            self.isEditModeChanged = true
                             self.delegate?.watermarkPropertyControllerDidUpdate?(self)
                             
                             self.reloadData()
@@ -574,7 +591,6 @@ class KMNWatermarkPropertyController: NSViewController {
                         self.watermarkData.imagePath = resultPath
                     }
                     
-                    self.isEditModeChanged = true
                     self.delegate?.watermarkPropertyControllerDidUpdate?(self)
                     
                     self.reloadData()
@@ -616,6 +632,13 @@ class KMNWatermarkPropertyController: NSViewController {
             return nil
         }
     }
+    
+    //MARK: - Mouse
+    override func mouseDown(with event: NSEvent) {
+        super.mouseDown(with: event)
+        
+        view.window?.makeFirstResponder(nil)
+    }
 }
 
 //MARK: - ComponentTabsDelegate
@@ -628,7 +651,6 @@ extension KMNWatermarkPropertyController: ComponentTabsDelegate {
         }
         reloadData()
         
-        isEditModeChanged = true
         delegate?.watermarkPropertyControllerDidUpdate?(self)
     }
 }
@@ -638,7 +660,6 @@ extension KMNWatermarkPropertyController: ComponentTextareaDelegate {
     func componentTextareaTextDidChange(_ view: ComponentTextarea) {
         watermarkData.text = view.properties.text
         
-        isEditModeChanged = true
         delegate?.watermarkPropertyControllerDidUpdate?(self)
 
     }
@@ -646,7 +667,6 @@ extension KMNWatermarkPropertyController: ComponentTextareaDelegate {
     func componentTextareaTextDidEndEditing(_ view: ComponentTextarea) {
         watermarkData.text = view.properties.text
         
-        isEditModeChanged = true
         delegate?.watermarkPropertyControllerDidUpdate?(self)
 
     }
@@ -660,7 +680,6 @@ extension KMNWatermarkPropertyController: ComponentCColorDelegate {
         }
         reloadData()
         
-        isEditModeChanged = true
         delegate?.watermarkPropertyControllerDidUpdate?(self)
     }
 }
@@ -697,7 +716,6 @@ extension KMNWatermarkPropertyController: ComponentSelectDelegate {
         
         reloadData()
         
-        isEditModeChanged = true
         delegate?.watermarkPropertyControllerDidUpdate?(self)
     }
     
@@ -707,7 +725,6 @@ extension KMNWatermarkPropertyController: ComponentSelectDelegate {
                 let size = string.stringToCGFloat()
                 watermarkData.fontSize = size
                 
-                isEditModeChanged = true
                 delegate?.watermarkPropertyControllerDidUpdate?(self)
             }
         }
@@ -740,7 +757,6 @@ extension KMNWatermarkPropertyController: ComponentSelectDelegate {
         }
         reloadData()
         
-        isEditModeChanged = true
         delegate?.watermarkPropertyControllerDidUpdate?(self)
         
     }
@@ -771,7 +787,6 @@ extension KMNWatermarkPropertyController: ComponentCPositionDelegate {
         }
         reloadData()
         
-        isEditModeChanged = true
         delegate?.watermarkPropertyControllerDidUpdate?(self)
     }
 }
@@ -798,7 +813,6 @@ extension KMNWatermarkPropertyController: ComponentInputNumberDelegate {
         }
         reloadData()
         
-        isEditModeChanged = true
         delegate?.watermarkPropertyControllerDidUpdate?(self)
     }
 }

+ 5 - 5
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Watermark/Views/Templates/KMNWatermarkTemplateController.swift

@@ -124,11 +124,11 @@ class KMNWatermarkTemplateController: NSViewController {
     //MARK: - action
     @objc func buttonClicked(_ sender: ComponentButton) {
         if sender == addButton {
-            
-            selectedWatermark = nil
-            reloadData()
-            delegate?.templateControllerDidSelectedChanged?(self)
-            
+            if selectedWatermark != nil {
+                selectedWatermark = nil
+                reloadData()
+                delegate?.templateControllerDidSelectedChanged?(self)
+            }
             delegate?.templateControllerDidAddWatermarkData?(self)
         }
     }

+ 96 - 0
PDF Office/PDF Reader Pro.xcodeproj/xcuserdata/kdanmobile.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -3971,5 +3971,101 @@
             landmarkType = "3">
          </BreakpointContent>
       </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "1DEB4845-A3B1-4DE5-9452-E297E8255CFE"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/KMClass/KMPDFViewController/EditTool/Watermark/Model/KMWatermarkManager.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "574"
+            endingLineNumber = "574"
+            landmarkName = "fetchAvailableName()"
+            landmarkType = "7">
+            <Locations>
+               <Location
+                  uuid = "1DEB4845-A3B1-4DE5-9452-E297E8255CFE - d497052f2c7236fe"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMWatermarkManager.fetchAvailableName() -&gt; Swift.String"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/EditTool/Watermark/Model/KMWatermarkManager.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "574"
+                  endingLineNumber = "574"
+                  offsetFromSymbolStart = "1024">
+               </Location>
+               <Location
+                  uuid = "1DEB4845-A3B1-4DE5-9452-E297E8255CFE - d497052f2c7236fe"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMWatermarkManager.fetchAvailableName() -&gt; Swift.String"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/EditTool/Watermark/Model/KMWatermarkManager.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "574"
+                  endingLineNumber = "574"
+                  offsetFromSymbolStart = "968">
+               </Location>
+            </Locations>
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "D8014D12-CD6F-472D-AE99-21FA6CD03432"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/KMClass/KMPDFViewController/EditTool/Watermark/Views/KMNWatermarkPropertyController.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "723"
+            endingLineNumber = "723"
+            landmarkName = "componentSelectTextDidChange(_:)"
+            landmarkType = "7">
+            <Locations>
+               <Location
+                  uuid = "D8014D12-CD6F-472D-AE99-21FA6CD03432 - 74ade3cf2999a6d9"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMNWatermarkPropertyController.componentSelectTextDidEndEditing(KMComponentLibrary.ComponentSelect) -&gt; ()"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/EditTool/Watermark/Views/KMNWatermarkPropertyController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "723"
+                  endingLineNumber = "723"
+                  offsetFromSymbolStart = "684">
+               </Location>
+               <Location
+                  uuid = "D8014D12-CD6F-472D-AE99-21FA6CD03432 - 46af61884a8882c4"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMNWatermarkPropertyController.componentSelectTextDidChange(KMComponentLibrary.ComponentSelect) -&gt; ()"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/EditTool/Watermark/Views/KMNWatermarkPropertyController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "723"
+                  endingLineNumber = "723"
+                  offsetFromSymbolStart = "100">
+               </Location>
+            </Locations>
+         </BreakpointContent>
+      </BreakpointProxy>
    </Breakpoints>
 </Bucket>