mgrPrefs // Simplify the way of synchronizing default values.

This commit is contained in:
ShikiSuen 2022-04-08 17:09:55 +08:00
parent 080429b99d
commit 9647249c19
1 changed files with 39 additions and 116 deletions

View File

@ -77,7 +77,17 @@ private let kMaxComposingBufferSize = 30
private let kDefaultKeys = "123456789" private let kDefaultKeys = "123456789"
// MARK: Property wrappers // MARK: - UserDefaults extension.
@objc extension UserDefaults {
func setDefault(_ value: Any?, forKey defaultName: String) {
if self.object(forKey: defaultName) == nil {
self.set(value, forKey: defaultName)
}
}
}
// MARK: - Property wrappers
@propertyWrapper @propertyWrapper
struct UserDefault<Value> { struct UserDefault<Value> {
@ -225,122 +235,35 @@ struct ComposingBufferSize {
] ]
} }
// MARK: - Preferences Module plist
@objc public static func setMissingDefaults() { @objc public static func setMissingDefaults() {
// Preferences Module plist private UserDefaults.standard.setDefault(mgrPrefs.isDebugModeEnabled, forKey: UserDef.kIsDebugModeEnabled)
UserDefaults.standard.setDefault(mgrPrefs.checkUpdateAutomatically, forKey: UserDef.kCheckUpdateAutomatically)
// UserDefaults.standard.setDefault(
if UserDefaults.standard.object(forKey: UserDef.kIsDebugModeEnabled) == nil { mgrPrefs.showPageButtonsInCandidateWindow, forKey: UserDef.kShowPageButtonsInCandidateWindow)
UserDefaults.standard.set(mgrPrefs.isDebugModeEnabled, forKey: UserDef.kIsDebugModeEnabled) UserDefaults.standard.setDefault(mgrPrefs.symbolInputEnabled, forKey: UserDef.kSymbolInputEnabled)
} UserDefaults.standard.setDefault(mgrPrefs.candidateListTextSize, forKey: UserDef.kCandidateListTextSize)
UserDefaults.standard.setDefault(mgrPrefs.chooseCandidateUsingSpace, forKey: UserDef.kChooseCandidateUsingSpace)
// UserDefaults.standard.setDefault(
if UserDefaults.standard.object(forKey: UserDef.kCheckUpdateAutomatically) == nil { mgrPrefs.shouldAutoReloadUserDataFiles, forKey: UserDef.kShouldAutoReloadUserDataFiles)
UserDefaults.standard.set(false, forKey: UserDef.kCheckUpdateAutomatically) UserDefaults.standard.setDefault(
} mgrPrefs.specifyShiftTabKeyBehavior, forKey: UserDef.kSpecifyShiftTabKeyBehavior)
UserDefaults.standard.setDefault(
// mgrPrefs.specifyShiftSpaceKeyBehavior, forKey: UserDef.kSpecifyShiftSpaceKeyBehavior)
if UserDefaults.standard.object(forKey: UserDef.kShowPageButtonsInCandidateWindow) == nil { UserDefaults.standard.setDefault(mgrPrefs.useSCPCTypingMode, forKey: UserDef.kUseSCPCTypingMode)
UserDefaults.standard.set( UserDefaults.standard.setDefault(mgrPrefs.associatedPhrasesEnabled, forKey: UserDef.kAssociatedPhrasesEnabled)
mgrPrefs.showPageButtonsInCandidateWindow, forKey: UserDef.kShowPageButtonsInCandidateWindow UserDefaults.standard.setDefault(
) mgrPrefs.selectPhraseAfterCursorAsCandidate, forKey: UserDef.kSelectPhraseAfterCursorAsCandidate)
} UserDefaults.standard.setDefault(
mgrPrefs.moveCursorAfterSelectingCandidate, forKey: UserDef.kMoveCursorAfterSelectingCandidate)
// UserDefaults.standard.setDefault(
if UserDefaults.standard.object(forKey: UserDef.kSymbolInputEnabled) == nil { mgrPrefs.useHorizontalCandidateList, forKey: UserDef.kUseHorizontalCandidateList)
UserDefaults.standard.set(mgrPrefs.symbolInputEnabled, forKey: UserDef.kSymbolInputEnabled) UserDefaults.standard.setDefault(mgrPrefs.cns11643Enabled, forKey: UserDef.kCNS11643Enabled)
} UserDefaults.standard.setDefault(mgrPrefs.chineseConversionEnabled, forKey: UserDef.kChineseConversionEnabled)
UserDefaults.standard.setDefault(
// 18 mgrPrefs.shiftJISShinjitaiOutputEnabled, forKey: UserDef.kShiftJISShinjitaiOutputEnabled)
if UserDefaults.standard.object(forKey: UserDef.kCandidateListTextSize) == nil { UserDefaults.standard.setDefault(mgrPrefs.phraseReplacementEnabled, forKey: UserDef.kPhraseReplacementEnabled)
UserDefaults.standard.set( UserDefaults.standard.setDefault(mgrPrefs.shouldNotFartInLieuOfBeep, forKey: UserDef.kShouldNotFartInLieuOfBeep)
mgrPrefs.candidateListTextSize, forKey: UserDef.kCandidateListTextSize)
}
// true
if UserDefaults.standard.object(forKey: UserDef.kChooseCandidateUsingSpace) == nil {
UserDefaults.standard.set(
mgrPrefs.chooseCandidateUsingSpace, forKey: UserDef.kChooseCandidateUsingSpace)
}
// 使
if UserDefaults.standard.object(forKey: UserDef.kShouldAutoReloadUserDataFiles) == nil {
UserDefaults.standard.set(
mgrPrefs.shouldAutoReloadUserDataFiles, forKey: UserDef.kShouldAutoReloadUserDataFiles)
}
// Tab
if UserDefaults.standard.object(forKey: UserDef.kSpecifyShiftTabKeyBehavior) == nil {
UserDefaults.standard.set(
mgrPrefs.specifyShiftTabKeyBehavior, forKey: UserDef.kSpecifyShiftTabKeyBehavior)
}
// Space
if UserDefaults.standard.object(forKey: UserDef.kSpecifyShiftSpaceKeyBehavior) == nil {
UserDefaults.standard.set(
mgrPrefs.specifyShiftSpaceKeyBehavior, forKey: UserDef.kSpecifyShiftSpaceKeyBehavior)
}
// false
if UserDefaults.standard.object(forKey: UserDef.kUseSCPCTypingMode) == nil {
UserDefaults.standard.set(mgrPrefs.useSCPCTypingMode, forKey: UserDef.kUseSCPCTypingMode)
}
// false
if UserDefaults.standard.object(forKey: UserDef.kAssociatedPhrasesEnabled) == nil {
UserDefaults.standard.set(
mgrPrefs.associatedPhrasesEnabled, forKey: UserDef.kAssociatedPhrasesEnabled)
}
// 0
if UserDefaults.standard.object(forKey: UserDef.kSelectPhraseAfterCursorAsCandidate)
== nil
{
UserDefaults.standard.set(
mgrPrefs.selectPhraseAfterCursorAsCandidate,
forKey: UserDef.kSelectPhraseAfterCursorAsCandidate)
}
//
if UserDefaults.standard.object(forKey: UserDef.kMoveCursorAfterSelectingCandidate) == nil {
UserDefaults.standard.set(
mgrPrefs.moveCursorAfterSelectingCandidate,
forKey: UserDef.kMoveCursorAfterSelectingCandidate)
}
//
if UserDefaults.standard.object(forKey: UserDef.kUseHorizontalCandidateList) == nil {
UserDefaults.standard.set(
mgrPrefs.useHorizontalCandidateList, forKey: UserDef.kUseHorizontalCandidateList)
}
//
if UserDefaults.standard.object(forKey: UserDef.kCNS11643Enabled) == nil {
UserDefaults.standard.set(mgrPrefs.cns11643Enabled, forKey: UserDef.kCNS11643Enabled)
}
//
if UserDefaults.standard.object(forKey: UserDef.kChineseConversionEnabled) == nil {
UserDefaults.standard.set(
mgrPrefs.chineseConversionEnabled, forKey: UserDef.kChineseConversionEnabled)
}
// JIS
if UserDefaults.standard.object(forKey: UserDef.kShiftJISShinjitaiOutputEnabled) == nil {
UserDefaults.standard.set(
mgrPrefs.shiftJISShinjitaiOutputEnabled, forKey: UserDef.kShiftJISShinjitaiOutputEnabled)
}
//
if UserDefaults.standard.object(forKey: UserDef.kPhraseReplacementEnabled) == nil {
UserDefaults.standard.set(
mgrPrefs.phraseReplacementEnabled, forKey: UserDef.kPhraseReplacementEnabled)
}
//
if UserDefaults.standard.object(forKey: UserDef.kShouldNotFartInLieuOfBeep) == nil {
UserDefaults.standard.set(
mgrPrefs.shouldNotFartInLieuOfBeep, forKey: UserDef.kShouldNotFartInLieuOfBeep)
}
UserDefaults.standard.synchronize() UserDefaults.standard.synchronize()
} }