|
@@ -16,15 +16,12 @@ private let KMPreferenceInfoKey: String = "KMPreferenceInfoKey"
|
|
|
typealias KMPreferenceKey = String
|
|
|
/// general
|
|
|
/// files
|
|
|
- private let KMAutoSaveKey: KMPreferenceKey = "KMAutoSaveKey"
|
|
|
-private let KMAutoSavePerNumberMinuteKey: KMPreferenceKey = "KMAutoSavePerNumberMinuteKey"
|
|
|
private let KMCloseFilePromptTypeKey: KMPreferenceKey = "KMCloseFilePromptTypeKey"
|
|
|
/// open image file
|
|
|
private let KMOpenImageFileTypeKey: KMPreferenceKey = "KMOpenImageFileTypeKey"
|
|
|
-private let KMSetDefaultPDFReaderKey: KMPreferenceKey = "KMSetDefaultPDFReaderKey"
|
|
|
/// save password
|
|
|
- private let KMGeneralAuthorNameKey: KMPreferenceKey = "KMGeneralAuthorNameKey"
|
|
|
-
|
|
|
+private let KMGeneralAuthorNameKey: KMPreferenceKey = "KMGeneralAuthorNameKey"
|
|
|
+
|
|
|
/// 偏好设置已改变
|
|
|
private let KMPreferenceDidChangeNotificationName = "KMPreferenceDidChangeNotificationName"
|
|
|
|
|
@@ -50,42 +47,22 @@ typealias KMPreference = KMPreferenceManager
|
|
|
|
|
|
/// general
|
|
|
/// files
|
|
|
- public static let autoSaveKey = KMAutoSaveKey
|
|
|
- public static let autoSavePerNumberMinuteKey = KMAutoSavePerNumberMinuteKey
|
|
|
public static let closeFilePromptTypeKey = KMCloseFilePromptTypeKey
|
|
|
/// open image file
|
|
|
public static let openImageFileTypeKey = KMOpenImageFileTypeKey
|
|
|
- public static let setDefaultPDFReaderKey = KMSetDefaultPDFReaderKey
|
|
|
/// save password
|
|
|
- public static let generalAuthorNameKey = KMGeneralAuthorNameKey
|
|
|
-
|
|
|
-
|
|
|
- override init() {
|
|
|
- super.init()
|
|
|
-
|
|
|
- }
|
|
|
+ public static let generalAuthorNameKey = KMGeneralAuthorNameKey
|
|
|
|
|
|
- // MARK: 保存/获取数据
|
|
|
- public func setData(data: Any,forKey key: KMPreferenceKey) -> Bool {
|
|
|
- return self.setData(data: data, forKey: key, in: findGroup(forKey: key))
|
|
|
- }
|
|
|
|
|
|
- public func setData(data: Any,forKey key: KMPreferenceKey, in group: KMPreferenceGroup) -> Bool {
|
|
|
-
|
|
|
- return true
|
|
|
- }
|
|
|
-
|
|
|
- public func getData(forKey key: KMPreferenceKey) -> Any {
|
|
|
- var info: [String : Any]?
|
|
|
+ override init() {
|
|
|
+ super.init()
|
|
|
|
|
|
- let groupInfo: [String : Any] = info?[findGroup(forKey: key).rawValue] as? [String : Any] ?? [:]
|
|
|
- return groupInfo[key] as Any
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
public func resetData(_ group: KMPreferenceGroup) {
|
|
|
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// MARK: 注册 key
|
|
|
public func register(_ key: KMPreferenceKey, to group: KMPreferenceGroup) -> Bool {
|
|
|
if (group == .general) {
|
|
@@ -96,16 +73,7 @@ typealias KMPreference = KMPreferenceManager
|
|
|
}
|
|
|
return true
|
|
|
}
|
|
|
-
|
|
|
- // MARK: -
|
|
|
- // MARK: 发布通知
|
|
|
-
|
|
|
- private func postNotification(object: [KMPreferenceGroup]?, userInfo: [KMPreferenceKey : Any]?) {
|
|
|
- DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) {
|
|
|
- NotificationCenter.default.post(name: KMPreferenceManager.didChangeNotification, object: object, userInfo: userInfo)
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
+
|
|
|
// MARK: 获取信息
|
|
|
private func findGroup(forKey key: KMPreferenceKey) -> KMPreferenceGroup {
|
|
|
if (self.generalGroupKeys.contains(key)) {
|
|
@@ -130,51 +98,29 @@ extension KMPreferenceManager {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// MARK: 扩展 General
|
|
|
extension KMPreferenceManager {
|
|
|
-
|
|
|
- var autoSave: Bool {
|
|
|
- get {
|
|
|
- return self.getData(forKey: KMAutoSaveKey) as? Bool ?? true
|
|
|
- }
|
|
|
- set {
|
|
|
- let _ = self.setData(data: newValue, forKey: KMAutoSaveKey)
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- var autoSavePerNumberMinute: Int {
|
|
|
- get {
|
|
|
- return self.getData(forKey: KMAutoSavePerNumberMinuteKey) as? Int ?? 5
|
|
|
- }
|
|
|
- set {
|
|
|
- let _ = self.setData(data: newValue, forKey: KMAutoSavePerNumberMinuteKey)
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
var closeFilePromptType: KMPreferenceCloseFilePromptType {
|
|
|
get {
|
|
|
- if let type = self.getData(forKey: KMCloseFilePromptTypeKey) as? Int {
|
|
|
- if type == 1 { // 无提示,直接保存
|
|
|
- return .noPromp
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- return .promp
|
|
|
+ return .noPromp
|
|
|
+
|
|
|
}
|
|
|
set {
|
|
|
if (newValue == .promp || newValue == .noPromp) {
|
|
|
- let _ = self.setData(data: newValue.rawValue, forKey: KMCloseFilePromptTypeKey)
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
var openImageFileType: Int {
|
|
|
get {
|
|
|
- return self.getData(forKey: KMOpenImageFileTypeKey) as? Int ?? 0
|
|
|
+ return 0
|
|
|
}
|
|
|
set {
|
|
|
- let _ = self.setData(data: newValue, forKey: KMOpenImageFileTypeKey)
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -183,22 +129,10 @@ extension KMPreferenceManager {
|
|
|
return KMDataManager.ud_string(forKey: KMUserNameKey) ?? NSFullUserName()
|
|
|
}
|
|
|
set {
|
|
|
- let _ = self.setData(data: newValue, forKey: KMGeneralAuthorNameKey)
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- var setDefaultPDFReader: Bool {
|
|
|
- get {
|
|
|
- return self.getData(forKey: KMSetDefaultPDFReaderKey) as? Bool ?? true
|
|
|
- }
|
|
|
- set {
|
|
|
- let result = KMTools.setDefaultPDFReader(newValue)
|
|
|
- if (result) {
|
|
|
- let _ = self.setData(data: newValue, forKey: KMSetDefaultPDFReaderKey)
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
var openDocumentType: KMPreferenceOpenDocumentType { // KMOpenDocumentInTab
|
|
|
get {
|
|
|
guard let num = KMDataManager.ud_object(forKey: KMOpenDocumentInTabKey) as? NSNumber else {
|
|
@@ -211,27 +145,9 @@ extension KMPreferenceManager {
|
|
|
}
|
|
|
set {
|
|
|
if (newValue == .inSameWindow || newValue == .newWindow) {
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- var openFileType: KMPreferenceOpenFileType {
|
|
|
- get {
|
|
|
- // 数据兼容
|
|
|
- let value = KMDataManager.ud_integer(forKey: KMInitialWindowSizeOptionKey)
|
|
|
- if let type = KMPreferenceOpenFileType(rawValue: value) {
|
|
|
- return type
|
|
|
}
|
|
|
-
|
|
|
- return .default
|
|
|
- }
|
|
|
- set {
|
|
|
- if (newValue == .default || newValue == .maxim || newValue == .fit) {
|
|
|
- // 数据兼容
|
|
|
- }
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
|
|
|
var keepSnapshotWindowToTop: Bool {
|
|
|
get {
|
|
@@ -239,11 +155,11 @@ extension KMPreferenceManager {
|
|
|
}
|
|
|
set {
|
|
|
// 数据兼容
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
// MARK: UserDefaults
|
|
|
|
|
|
fileprivate let kKMLastOpenFilepathKey = "lastOpenFilepath"
|
|
@@ -272,7 +188,7 @@ extension KMPreferenceManager {
|
|
|
UserDefaults.standard.synchronize()
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
func setPageNumber(_ number: Int, forKey key: String) {
|
|
|
UserDefaults.standard.set(number, forKey: "\(key)+\(kKMPageNumberKey)")
|
|
|
UserDefaults.standard.synchronize()
|
|
@@ -291,28 +207,14 @@ extension KMPreferenceManager {
|
|
|
return UserDefaults.standard.value(forKey: "\(key)+\(kKMPageScaleKey)") as? Float
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
// MARK: Qiuck
|
|
|
|
|
|
extension KMPreferenceManager {
|
|
|
internal func closeFileIsPrompt() -> Bool {
|
|
|
return self.closeFilePromptType == .promp
|
|
|
}
|
|
|
-
|
|
|
- // 单位: 秒
|
|
|
- var autoSaveTimeInterval: TimeInterval {
|
|
|
- get {
|
|
|
- var minute = KMPreferenceManager.shared.autoSavePerNumberMinute
|
|
|
- if (minute < 5) {
|
|
|
- minute = 5
|
|
|
- } else if (minute > 99) {
|
|
|
- minute = 99
|
|
|
- }
|
|
|
-
|
|
|
- let interval: TimeInterval = Double(minute) * 60.0
|
|
|
- return interval
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
// MARK: - Grouping
|
|
@@ -368,8 +270,7 @@ extension KMPreferenceManager {
|
|
|
for data in self._grouping_objects {
|
|
|
objects.append(data)
|
|
|
}
|
|
|
- self.postNotification(object: objects, userInfo: self._grouping_infos)
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
self._grouping_objects = []
|
|
|
self._grouping_infos = [:]
|