From 53c72f40929dcd7d3a6bc6bad15d9df20795c558 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Sat, 25 Jun 2022 08:45:40 +0800 Subject: [PATCH] mgrPrefs // Add Snapshot extension. --- Source/Modules/IMEModules/mgrPrefs.swift | 46 ++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/Source/Modules/IMEModules/mgrPrefs.swift b/Source/Modules/IMEModules/mgrPrefs.swift index 21ee8a22..d62688d9 100644 --- a/Source/Modules/IMEModules/mgrPrefs.swift +++ b/Source/Modules/IMEModules/mgrPrefs.swift @@ -562,3 +562,49 @@ public enum mgrPrefs { @UserDefault(key: UserDef.kUsingHotKeyHalfWidthASCII, defaultValue: true) static var usingHotKeyHalfWidthASCII: Bool } + +// MARK: Snapshot Extension + +var snapshot: [String: Any]? + +extension mgrPrefs { + static var allKeys: [String] { + [ + UserDef.kIsDebugModeEnabled, UserDef.kMostRecentInputMode, UserDef.kUserDataFolderSpecified, + UserDef.kCheckUpdateAutomatically, UserDef.kMandarinParser, UserDef.kBasicKeyboardLayout, + UserDef.kShowPageButtonsInCandidateWindow, UserDef.kCandidateListTextSize, UserDef.kAppleLanguages, + UserDef.kShouldAutoReloadUserDataFiles, UserDef.kuseRearCursorMode, UserDef.kUseHorizontalCandidateList, + UserDef.kComposingBufferSize, UserDef.kChooseCandidateUsingSpace, UserDef.kCNS11643Enabled, + UserDef.kSymbolInputEnabled, UserDef.kChineseConversionEnabled, UserDef.kShiftJISShinjitaiOutputEnabled, + UserDef.kHalfWidthPunctuationEnabled, UserDef.kMoveCursorAfterSelectingCandidate, UserDef.kEscToCleanInputBuffer, + UserDef.kSpecifyShiftTabKeyBehavior, UserDef.kSpecifyShiftSpaceKeyBehavior, + UserDef.kAllowBoostingSingleKanjiAsUserPhrase, UserDef.kUseSCPCTypingMode, UserDef.kMaxCandidateLength, + UserDef.kShouldNotFartInLieuOfBeep, UserDef.kShowHanyuPinyinInCompositionBuffer, + UserDef.kInlineDumpPinyinInLieuOfZhuyin, UserDef.kFetchSuggestionsFromUserOverrideModel, + UserDef.kCandidateTextFontName, UserDef.kCandidateKeyLabelFontName, UserDef.kCandidateKeys, + UserDef.kAssociatedPhrasesEnabled, UserDef.kPhraseReplacementEnabled, UserDef.kUsingHotKeySCPC, + UserDef.kUsingHotKeyAssociates, UserDef.kUsingHotKeyCNS, UserDef.kUsingHotKeyKangXi, UserDef.kUsingHotKeyJIS, + UserDef.kUsingHotKeyHalfWidthASCII, + ] + } + + func reset() { + mgrPrefs.allKeys.forEach { + UserDefaults.standard.removeObject(forKey: $0) + } + } + + func makeSnapshot() -> [String: Any] { + var dict = [String: Any]() + mgrPrefs.allKeys.forEach { + dict[$0] = UserDefaults.standard.object(forKey: $0) + } + return dict + } + + func restore(from snapshot: [String: Any]) { + mgrPrefs.allKeys.forEach { + UserDefaults.standard.set(snapshot[$0], forKey: $0) + } + } +}