Browse Source

【偏好设置】通用模块原始数据兼容

tangchao 1 year ago
parent
commit
34f13a17b3

+ 6 - 16
PDF Office/PDF Master/Class/Preference/Controller/KMGeneralPreferences.swift

@@ -41,9 +41,7 @@ class KMGeneralPreferences: NSViewController {
     @IBOutlet weak var fullScreenButton: NSButton!
     
     @IBOutlet weak var autoSaveLabel: NSTextField!
-
     @IBOutlet weak var autoSaveNotesBackupButton: NSButton!
-    
     @IBOutlet weak var keepSnapshotOnTopButton: NSButton!
     
     @IBOutlet var savePwdKeychainLabel: NSTextField!
@@ -63,15 +61,6 @@ class KMGeneralPreferences: NSViewController {
         }
     }
     
-    /*
-     @interface KMGeneralPreferences : NSViewController <SKPreferencePane> {
-         NSInteger updateInterval;
-     }
-
-     - (IBAction)revertPDFViewSettings:(id)sender;
-     - (IBAction)revertFullScreenPDFViewSettings:(id)sender;
-     */
-    
     /*
      static char KMGeneralPreferencesDefaultsObservationContext;
      static char KMGeneralPreferencesUpdaterObservationContext;
@@ -199,13 +188,13 @@ class KMGeneralPreferences: NSViewController {
     }
     
     @IBAction func revertPDFViewSettings(_ sender: AnyObject?) {
-        NSUserDefaultsController.shared.revertToInitialValue(forKey: SKDefaultPDFDisplaySettingsKey)
-        KMPreference.shared.revertInitPDFViewSettingType = .normal
+        NSUserDefaultsController.shared.revertToInitialValue(forKey: KMDefaultPDFDisplaySettingsKey)
+//        KMPreference.shared.revertInitPDFViewSettingType = .normal
     }
     
     @IBAction func revertFullScreenPDFViewSettings(_ sender: AnyObject?) {
-        NSUserDefaultsController.shared.revertToInitialValue(forKey: SKDefaultFullScreenPDFDisplaySettingsKey)
-        KMPreference.shared.revertInitPDFViewSettingType = .fullScreen
+        NSUserDefaultsController.shared.revertToInitialValue(forKey: KMDefaultFullScreenPDFDisplaySettingsKey)
+//        KMPreference.shared.revertInitPDFViewSettingType = .fullScreen
     }
     
     @IBAction func defaultOpenButtonAction(_ sender: AnyObject?) {
@@ -217,15 +206,16 @@ class KMGeneralPreferences: NSViewController {
         if (self.openTabButton.indexOfSelectedItem == 0) {
 #if VERSION_FREE
             if IAPProductsManager.default().isAvailableAllFunction() == false {
-                //    //                [[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"KMOpenDocumentInTab"];
                 KMPreference.shared.openDocumentType = .newWindow
                 KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
                 return
             }
 #endif
             tabbingMode = .preferred
+            KMPreference.shared.openDocumentType = .inSameWindow
         } else if (self.openTabButton.indexOfSelectedItem == 1) {
             tabbingMode = .disallowed
+            KMPreference.shared.openDocumentType = .newWindow
         }
         for document in NSDocumentController.shared.documents {
             guard let _doc = document as? KMMainDocument else {

+ 65 - 0
PDF Office/PDF Master/Class/Preference/Tools/KMPreferenceCommon.swift

@@ -7,6 +7,21 @@
 
 import Foundation
 
+public let KMUserNameKey                                        = "SKUserName"
+public let KMReopenLastOpenFilesKey                             = "SKReopenLastOpenFilesKey"
+public let KMOpenDocumentInTabKey                               = "KMOpenDocumentInTab"
+public let KMInitialWindowSizeOptionKey                         = "SKInitialWindowSizeOptionKey"
+public let KMOpenContentsPaneOnlyForTOCKey                      = "SKOpenContentsPaneOnlyForTOCKey"
+public let KMRememberSnapshotsKey                               = "SKRememberSnapshotsKey"
+public let KMDefaultPDFDisplaySettingsKey                       = "SKDefaultPDFDisplaySettingsKey"
+public let KMDefaultFullScreenPDFDisplaySettingsKey             = "SKDefaultFullScreenPDFDisplaySettings"
+public let KMAutoSaveSkimNotesKey                               = "SKAutoSaveSkimNotesKey"
+public let KMSnapshotsOnTopKey                                  = "SKSnapshotsOnTopKey"
+public let KMSavePasswordOptionKey                              = "SKSavePasswordOptionKey"
+
+
+
+
 func KMPreferenceKeyToCKey(pKey: KMPreferenceKey) -> String? {
     // freeText
     if pKey == KMPreference.freeTextNoteLineWidthKey {
@@ -54,3 +69,53 @@ func KMPreferenceKeyToCKey(pKey: KMPreferenceKey) -> String? {
     }
     return nil
 }
+
+// MARK: - NSUserDefault key 与 偏好设置 key 相互转换
+
+func KMPreferenceKeyToUDKey(pKey: KMPreferenceKey) -> String? {
+    // general
+    if pKey == KMPreference.generalAuthorNameKey {
+        return KMUserNameKey
+    } else if pKey == KMPreference.openLastUnclosedDocumentWhenAppStartKey {
+        return KMReopenLastOpenFilesKey
+    } else if pKey == KMPreference.openDocumentTypeKey {
+        return KMOpenDocumentInTabKey
+    } else if pKey == KMPreference.openFileTypeKey {
+        return KMInitialWindowSizeOptionKey
+    } else if pKey == KMPreference.showLeftSideBarKey {
+        return KMOpenContentsPaneOnlyForTOCKey
+    } else if pKey == KMPreference.rememberSnapshotKey {
+        return KMRememberSnapshotsKey
+    } else if pKey == KMPreference.autoSaveNoteBackupKey {
+        return KMAutoSaveSkimNotesKey
+    } else if pKey == KMPreference.keepSnapshotWindowToTopKey {
+        return KMSnapshotsOnTopKey
+    } else if pKey == KMPreference.savePasswordTypeKey {
+        return KMSavePasswordOptionKey
+    }
+    return nil
+}
+
+func KMPreferenceKeyFromUDKey(udKey: String) -> KMPreferenceKey? {
+    // general
+    if udKey == KMUserNameKey {
+        return KMPreference.generalAuthorNameKey
+    } else if udKey == KMReopenLastOpenFilesKey {
+        return KMPreference.openLastUnclosedDocumentWhenAppStartKey
+    } else if udKey == KMOpenDocumentInTabKey {
+        return KMPreference.openDocumentTypeKey
+    } else if udKey == KMInitialWindowSizeOptionKey {
+        return KMPreference.openFileTypeKey
+    } else if udKey == KMOpenContentsPaneOnlyForTOCKey {
+        return KMPreference.showLeftSideBarKey
+    } else if udKey == KMRememberSnapshotsKey {
+        return KMPreference.rememberSnapshotKey
+    } else if udKey == KMAutoSaveSkimNotesKey {
+        return KMPreference.autoSaveNoteBackupKey
+    } else if udKey == KMSnapshotsOnTopKey {
+        return KMPreference.keepSnapshotWindowToTopKey
+    } else if udKey == KMSavePasswordOptionKey {
+        return KMPreference.savePasswordTypeKey
+    }
+    return nil
+}

+ 67 - 32
PDF Office/PDF Master/Class/Preference/Tools/KMPreferenceManager.swift

@@ -764,10 +764,13 @@ extension KMPreferenceManager {
 extension KMPreferenceManager {
     var openLastUnclosedDocumentWhenAppStart: Bool { // SKReopenLastOpenFilesKey
         get {
-            return self.getData(forKey: KMOpenLastUnclosedDocumentWhenAppStartKey) as! Bool
+            return KMDataManager.ud_bool(forKey: KMReopenLastOpenFilesKey)
+//            return self.getData(forKey: KMOpenLastUnclosedDocumentWhenAppStartKey) as! Bool
         }
         set {
             let _ = self.setData(data: newValue, forKey: KMOpenLastUnclosedDocumentWhenAppStartKey)
+            
+            self._syncDataToUserDefault(newValue, forKey: KMOpenLastUnclosedDocumentWhenAppStartKey)
         }
     }
     
@@ -834,10 +837,13 @@ extension KMPreferenceManager {
     
     var author: String {
         get {
-            return self.getData(forKey: KMGeneralAuthorNameKey) as! String
+            return KMDataManager.ud_string(forKey: KMUserNameKey) ?? NSFullUserName()
+//            return self.getData(forKey: KMGeneralAuthorNameKey) as! String
         }
         set {
             let _ = self.setData(data: newValue, forKey: KMGeneralAuthorNameKey)
+            
+            self._syncDataToUserDefault(newValue, forKey: KMGeneralAuthorNameKey)
         }
     }
     
@@ -855,31 +861,55 @@ extension KMPreferenceManager {
     
     var savePasswordType: KMPreferenceSavePasswordType {
         get {
-            let type: Int? = self.getData(forKey: KMSavePasswordTypeKey) as? Int
-            if (type == nil || type! == 2) {
+//            let type: Int? = self.getData(forKey: KMSavePasswordTypeKey) as? Int
+//            if (type == nil || type! == 2) {
+//                return .ask
+//            }
+//            if (type! == 0) {
+//                return .always
+//            } else if (type! == 1) {
+//                return .never
+//            }
+//
+//            return .ask
+            
+            let type = KMDataManager.ud_integer(forKey: KMSavePasswordOptionKey)
+            if type == -1 {
                 return .ask
-            }
-            if (type! == 0) {
+            } else if type == 1 {
                 return .always
-            } else if (type! == 1) {
-                return .never
             }
-            
-            return .ask
+            return .never
         }
         set {
             if (newValue == .always || newValue == .never || newValue == .ask) {
                 let _ = self.setData(data: newValue.rawValue, forKey: KMSavePasswordTypeKey)
+                
+                var data: Int = 0
+                if newValue == .always {
+                    data = 1
+                } else if newValue == .ask {
+                    data = -1
+                }
+                self._syncDataToUserDefault(data, forKey: KMSavePasswordTypeKey)
             }
         }
     }
     
     var openDocumentType: KMPreferenceOpenDocumentType { // KMOpenDocumentInTab
         get {
-            guard let type = self.getData(forKey: KMOpenDocumentTypeKey) as? Int else {
+//            guard let type = self.getData(forKey: KMOpenDocumentTypeKey) as? Int else {
+//                return self.openDocumentTypeDefaultValue
+//            }
+//            if type == 1 {
+//                return .newWindow
+//            }
+//            return .inSameWindow
+            
+            guard let num = KMDataManager.ud_object(forKey: KMOpenDocumentInTabKey) as? NSNumber else {
                 return self.openDocumentTypeDefaultValue
             }
-            if type == 1 {
+            if num.intValue == 1 {
                 return .newWindow
             }
             return .inSameWindow
@@ -887,6 +917,8 @@ extension KMPreferenceManager {
         set {
             if (newValue == .inSameWindow || newValue == .newWindow) {
                 let _ = self.setData(data: newValue.rawValue, forKey: KMOpenDocumentTypeKey)
+                
+                self._syncDataToUserDefault(NSNumber(value: newValue.rawValue), forKey: KMOpenDocumentTypeKey)
             }
         }
     }
@@ -903,20 +935,20 @@ extension KMPreferenceManager {
     var openFileType: KMPreferenceOpenFileType {
         get {
             // 数据兼容
-            let value = KMDataManager.ud_integer(forKey: SKInitialWindowSizeOptionKey)
+            let value = KMDataManager.ud_integer(forKey: KMInitialWindowSizeOptionKey)
             if let type = KMPreferenceOpenFileType(rawValue: value) {
                 return type
             }
             
-            guard let type = self.getData(forKey: KMOpenFileTypeKey) as? Int else {
-                return .default
-            }
-            
-            if type == 1 {
-                return .maxim
-            } else if type == 2 {
-                return .fit
-            }
+//            guard let type = self.getData(forKey: KMOpenFileTypeKey) as? Int else {
+//                return .default
+//            }
+//
+//            if type == 1 {
+//                return .maxim
+//            } else if type == 2 {
+//                return .fit
+//            }
             return .default
         }
         set {
@@ -931,16 +963,19 @@ extension KMPreferenceManager {
     
     var showLeftSideBar: Bool {
         get {
-            return self.getData(forKey: KMShowLeftSideBarKey) as? Bool ?? self.showLeftSideBarDefaultValue
+            return KMDataManager.ud_bool(forKey: KMOpenContentsPaneOnlyForTOCKey)
+//            return self.getData(forKey: KMShowLeftSideBarKey) as? Bool ?? self.showLeftSideBarDefaultValue
         }
         set {
             _ = self.setData(data: newValue, forKey: KMShowLeftSideBarKey)
+            
+            self._syncDataToUserDefault(newValue, forKey: KMShowLeftSideBarKey)
         }
     }
     
     var rememberSnapshot: Bool {
         get {
-            return KMDataManager.ud_bool(forKey: SKRememberSnapshotsKey)
+            return KMDataManager.ud_bool(forKey: KMRememberSnapshotKey)
 //            return self.getData(forKey: KMRememberSnapshotKey) as? Bool ?? self.rememberSnapshotDefaultValue
         }
         set {
@@ -970,16 +1005,19 @@ extension KMPreferenceManager {
     
     var autoSaveNoteBackup: Bool {
         get {
-            return self.getData(forKey: KMAutoSaveNoteBackupKey) as? Bool ?? self.autoSaveNoteBackupDefaultValue
+            return KMDataManager.ud_bool(forKey: KMAutoSaveSkimNotesKey)
+//            return self.getData(forKey: KMAutoSaveNoteBackupKey) as? Bool ?? self.autoSaveNoteBackupDefaultValue
         }
         set {
             _ = self.setData(data: newValue, forKey: KMAutoSaveNoteBackupKey)
+            
+            self._syncDataToUserDefault(newValue, forKey: KMAutoSaveNoteBackupKey)
         }
     }
     
     var keepSnapshotWindowToTop: Bool {
         get {
-            return KMDataManager.ud_bool(forKey: SKSnapshotsOnTopKey)
+            return KMDataManager.ud_bool(forKey: KMSnapshotsOnTopKey)
 //            return self.getData(forKey: KMKeepSnapshotWindowToTopKey) as? Bool ?? self.keepSnapshotWindowToTopDefaultValue()
         }
         set {
@@ -1709,12 +1747,9 @@ extension KMPreferenceManager {
     }
     
     private func _syncDataToUserDefault(_ data: Any, forKey key: KMPreferenceKey) {
-        if key == KMOpenFileTypeKey {
-            KMDataManager.ud_set(data, forKey: SKInitialWindowSizeOptionKey)
-        } else if key == KMRememberSnapshotKey {
-            KMDataManager.ud_set(data, forKey: SKRememberSnapshotsKey)
-        } else if key == KMKeepSnapshotWindowToTopKey {
-            KMDataManager.ud_set(data, forKey: SKSnapshotsOnTopKey)
+        // general
+        if let udKey = KMPreferenceKeyToUDKey(pKey: key) {
+            KMDataManager.ud_set(data, forKey: udKey)
         }
     }