Pārlūkot izejas kodu

【2025】【综合】自动保存逻辑完善

niehaoyu 3 nedēļas atpakaļ
vecāks
revīzija
eaece0c133

+ 18 - 60
PDF Office/PDF Master/Class/AutoSave/Tools/AutoSaveManager.swift

@@ -12,17 +12,14 @@ public let KAutoSaveTimeValueChangedNoti = "KAutoSaveTimeValueChangedNoti"
 @objcMembers class AutoSaveManager: NSObject {
     public static let kTimeValueChangedNotificationName = Notification.Name(KAutoSaveTimeValueChangedNoti)
     
-    //APP是否允许进行自动缓存
-    var autoSaveEnabled = false {
-        didSet {
-            UserDefaults.standard.setValue(self.autoSaveEnabled, forKey: "ComAutoSaveKey")
-            UserDefaults.standard.synchronize()
-        }
-    }
-    var timeInterval: CGFloat = 15 {
-        didSet {
-            UserDefaults.standard.setValue(Float(self.timeInterval), forKey: "AutoSaveTimeIntervalKey")
-            UserDefaults.standard.synchronize()
+    var timeInterval: CGFloat {
+        get {
+            let timeInterval = UserDefaults.standard.float(forKey: "AutoSaveTimeIntervalKey")
+            if timeInterval > 0 {
+                return timeInterval.cgFloat
+            } else {
+                return 15
+            }
         }
     }
     
@@ -65,15 +62,7 @@ public let KAutoSaveTimeValueChangedNoti = "KAutoSaveTimeValueChangedNoti"
     
     static let manager: AutoSaveManager = {
         let man = AutoSaveManager()
-        man.autoSaveEnabled = UserDefaults.standard.bool(forKey: "ComAutoSaveKey")
-
-        let timeInterval = UserDefaults.standard.float(forKey: "AutoSaveTimeIntervalKey")
-        if timeInterval > 0 {
-            man.timeInterval = timeInterval.cgFloat
-        } else {
-            man.timeInterval = 15
-        }
-
+ 
         man._loadData()
 
         man.autoSaveDidEndAction = true
@@ -82,6 +71,10 @@ public let KAutoSaveTimeValueChangedNoti = "KAutoSaveTimeValueChangedNoti"
     
     // MARK: - Public Method
     
+    func updateTimeInterval () {
+        
+    }
+    
     func clearCache() {
         if FileManager.default.fileExists(atPath: self.autoSaveFolder) {
             try?FileManager.default.removeItem(atPath: self.autoSaveFolder)
@@ -98,14 +91,14 @@ public let KAutoSaveTimeValueChangedNoti = "KAutoSaveTimeValueChangedNoti"
         var savePath = String(format: "%@/%@_%@.%@", autoSaveFolder, filePath.deletingPathExtension.lastPathComponent, "recovered", filePath.customPathExtension)
 
         if FileManager.default.fileExists(atPath: plistPath) {
-            var dict = NSMutableDictionary(contentsOfFile: plistPath)
+            let dict = NSMutableDictionary(contentsOfFile: plistPath)
             if let keys = dict?.allKeys as? [String], keys.contains(filePath) {
                 savePath = dict?.value(forKey: filePath) as? String ?? ""
             }
             if savePath.isEmpty == false && filePath.isEmpty == false {
                 if let values = dict?.allValues as? [String], values.contains(savePath) {
                     //不同路径下同名文件的保存覆盖的情况处理
-                    var values = NSArray(array: values)
+                    let values = NSArray(array: values)
 
                     for key in dict?.allKeys ?? [] {
                         guard let _key = key as? String else {
@@ -126,7 +119,7 @@ public let KAutoSaveTimeValueChangedNoti = "KAutoSaveTimeValueChangedNoti"
             }
             try?dict?.write(to: URL(fileURLWithPath: plistPath))
         } else {
-            var dict = NSMutableDictionary()
+            let dict = NSMutableDictionary()
             if savePath.isEmpty == false && filePath.isEmpty == false {
                 dict.setValue(savePath, forKey: filePath)
             }
@@ -140,7 +133,7 @@ public let KAutoSaveTimeValueChangedNoti = "KAutoSaveTimeValueChangedNoti"
 
         let plistPath = String(format: "%@/autoSaveInfo.plist", autoSaveFolder)
         if FileManager.default.fileExists(atPath: plistPath) {
-            var dict = NSMutableDictionary(contentsOfFile: plistPath)
+            let dict = NSMutableDictionary(contentsOfFile: plistPath)
             if let savePath =  dict?.value(forKey: filePath) as? String {
                 if FileManager.default.fileExists(atPath: savePath) {
                     try?FileManager.default.removeItem(atPath: savePath)
@@ -195,7 +188,7 @@ public let KAutoSaveTimeValueChangedNoti = "KAutoSaveTimeValueChangedNoti"
 
         self._opendPaths = NSMutableArray()
 
-        var arr = (try?FileManager.default.contentsOfDirectory(atPath: self.autoSaveFolder)) ?? []
+        let arr = (try?FileManager.default.contentsOfDirectory(atPath: self.autoSaveFolder)) ?? []
 
         for fileName in arr {
             let savedKey = "\(self.autoSaveFolder)/\(fileName)"
@@ -213,40 +206,5 @@ public let KAutoSaveTimeValueChangedNoti = "KAutoSaveTimeValueChangedNoti"
             }
         }
     }
-    
-    /*
-
-     - (NSString *)URLEncodedString:(NSString *)string {
-         CFStringRef stringRef = CFBridgingRetain(string);
-     #pragma clang diagnostic push
-     #pragma clang diagnostic ignored "-Wdeprecated-declarations"
-         CFStringRef encoded = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
-                                                                       stringRef,
-                                                                       NULL,
-                                                                       CFSTR("!*'\"();:@&=+$,/?%#[]% "),
-                                                                       kCFStringEncodingUTF8);
-     #pragma clang diagnostic pop
-         CFRelease(stringRef);
-         return CFBridgingRelease(encoded);
-     }
-
-     - (NSString *)getValidFilePath:(NSString *)oldPath {
-         NSFileManager *fileManager = [NSFileManager defaultManager];
-         NSDictionary  *fileDic     = [fileManager attributesOfItemAtPath:oldPath error:nil];
-         NSString      *fileType    = [fileDic objectForKey:NSFileType];
-         int i =1;
-         NSString *newPath = oldPath;
-         while ([fileManager fileExistsAtPath:newPath]) {
-             if ([fileType isEqualToString:NSFileTypeDirectory]) {
-                 newPath = [oldPath stringByAppendingFormat:@"(%d)",i];
-             } else {
-                 NSString *fileExtension = [oldPath pathExtension];
-                 newPath = [[oldPath stringByDeletingPathExtension] stringByAppendingFormat:@"(%d).%@",i,fileExtension];
-             }
-             i++;
-         }
-         return newPath;
-     }
-     */
 
 }

+ 14 - 8
PDF Office/PDF Master/KMClass/KMPDFViewController/KMMainViewController.swift

@@ -141,6 +141,8 @@ struct KMNMWCFlags {
     
     var componentMessageView: ComponentMessage = ComponentMessage()
     
+    var blockSaveWindow = AutoSavePopController()
+    
     private var _needSave = false
     var needSave: Bool {
         set {
@@ -325,6 +327,10 @@ struct KMNMWCFlags {
         }
         
         newMwcFlags.settingUpWindow = true
+        
+        Task {
+            self.addAutoSaveEvent()
+        }
     }
     
     @objc  func editFontColorItemPanelAction(_ sender: Any) {
@@ -7945,8 +7951,8 @@ extension KMMainViewController {
             self.autoSaveTimer = nil
         }
         
-        if self.document != nil {
-            self.autoSaveTimer = Timer.scheduledTimer(withTimeInterval: AutoSaveManager.manager.timeInterval * 60, repeats: true, block: { [weak self] timer in
+        if self.document != nil, SettingsManager.sharedInstance.autoSaveFile == true {
+            self.autoSaveTimer = Timer.scheduledTimer(withTimeInterval: 1 * 60, repeats: true, block: { [weak self] timer in
                 self?.autoSaveTimerAction(timer)
             })
         }
@@ -7963,8 +7969,7 @@ extension KMMainViewController {
         
         AutoSaveManager.manager.autoSaveDidEndAction = false
         AutoSaveManager.manager.autoSaveAlertShow = true
-        
-        let blockSaveWindow = AutoSavePopController()
+         
         blockSaveWindow.cancelHandle = { [weak self] windowController in
             AutoSaveManager.manager.autoSaveDidEndAction = true
             AutoSaveManager.manager.clearCache()
@@ -7972,10 +7977,11 @@ extension KMMainViewController {
         }
         
         blockSaveWindow.confirmHandle = { [weak self] windowController in
-            self?.km_quick_endSheet()
+            self?.view.window?.endSheet(windowController.window!)
+            
             self?.saveAutoSaveInfo()
         }
-        self.km_beginSheet(windowC: blockSaveWindow)
+        self.view.window?.beginSheet(blockSaveWindow.window!)
     }
     
     func saveAutoSaveInfo() {
@@ -8016,7 +8022,7 @@ extension KMMainViewController {
             return
         }
         
-        if AutoSaveManager.manager.autoSaveEnabled == false {
+        if SettingsManager.sharedInstance.autoSaveFile == false {
             return
         }
         
@@ -8052,7 +8058,7 @@ extension KMMainViewController {
             //防止提示弹窗出现后,未进行任何操作又进入自动保存的机制
             return
         }
-        if AutoSaveManager.manager.autoSaveEnabled == false {
+        if SettingsManager.sharedInstance.autoSaveFile == false {
             return
         }
         

+ 9 - 1
PDF Office/PDF Master/KMClass/KMPDFViewController/Toolbar/KMPDFToolbarController.swift

@@ -983,7 +983,9 @@ extension KMPDFToolbarController: ComponentSelectZoomDelegate {
             scale -= 1
         }
         pdfView?.scaleFactor = scale
-        
+        if let pdfView = self.pdfView {
+            pdfView.delegate.pdfViewScaleDidChanged?(pdfView)
+        }
     }
     
     func componentSelectZoomDidSelect(view: ComponentSelectZoom?, menuItemProperty: ComponentMenuitemProperty?) {
@@ -1027,6 +1029,9 @@ extension KMPDFToolbarController: ComponentSelectZoomDelegate {
             pdfView?.scaleFactor = 8.0
             
         }
+        if let pdfView = self.pdfView {
+            pdfView.delegate.pdfViewScaleDidChanged?(pdfView)
+        }
     }
     
     func componentSelectZoomDidAdd(view: ComponentSelectZoom) {
@@ -1045,6 +1050,9 @@ extension KMPDFToolbarController: ComponentSelectZoomDelegate {
             scale += 1
         }
         pdfView?.scaleFactor = scale
+        if let pdfView = self.pdfView {
+            pdfView.delegate.pdfViewScaleDidChanged?(pdfView)
+        }
     }
     
 }

+ 1 - 1
PDF Office/PDF Master/KMClass/Settings/SettingsManager.swift

@@ -98,7 +98,7 @@ let settingsAuthorKey           = "settingsAuthorKey"
 let settingsDefaultPDFViewerKey = "settingsDefaultPDFViewerKey"
 var settingsReopenFileKey       = "settingsReopenFileKey"
 var settingsAutoSaveFileKey     = "settingsAutoSaveFileKey"
-var settingsAutoSaveMinutesKey  = "settingsAutoSaveMinutesKey"
+var settingsAutoSaveMinutesKey  = "AutoSaveTimeIntervalKey"
 var settingsFileListCountKey    = "settingsFileListCountKey"
 var settingsLanguageTypeKey       = "settingsLanguageTypeKey"
 var settingsKeychainTypeKey       = "settingsKeychainTypeKey"