diff --git a/Source/Modules/IMEModules/mgrPrefs.swift b/Source/Modules/IMEModules/mgrPrefs.swift index 56816979..e4b94b28 100644 --- a/Source/Modules/IMEModules/mgrPrefs.swift +++ b/Source/Modules/IMEModules/mgrPrefs.swift @@ -469,34 +469,44 @@ public enum mgrPrefs { } @UserDefault(key: UserDef.kChineseConversionEnabled.rawValue, defaultValue: false) - static var chineseConversionEnabled: Bool + static var chineseConversionEnabled: Bool { + didSet { + // 康熙轉換與 JIS 轉換不能同時開啟,否則會出現某些奇奇怪怪的情況 + if chineseConversionEnabled, shiftJISShinjitaiOutputEnabled { + toggleShiftJISShinjitaiOutputEnabled() + UserDefaults.standard.set( + shiftJISShinjitaiOutputEnabled, forKey: UserDef.kShiftJISShinjitaiOutputEnabled.rawValue + ) + } + UserDefaults.standard.set( + chineseConversionEnabled, forKey: UserDef.kChineseConversionEnabled.rawValue + ) + } + } @discardableResult static func toggleChineseConversionEnabled() -> Bool { chineseConversionEnabled = !chineseConversionEnabled - // 康熙轉換與 JIS 轉換不能同時開啟,否則會出現某些奇奇怪怪的情況 - if chineseConversionEnabled, shiftJISShinjitaiOutputEnabled { - toggleShiftJISShinjitaiOutputEnabled() - UserDefaults.standard.set( - shiftJISShinjitaiOutputEnabled, forKey: UserDef.kShiftJISShinjitaiOutputEnabled.rawValue - ) - } - UserDefaults.standard.set(chineseConversionEnabled, forKey: UserDef.kChineseConversionEnabled.rawValue) return chineseConversionEnabled } @UserDefault(key: UserDef.kShiftJISShinjitaiOutputEnabled.rawValue, defaultValue: false) - static var shiftJISShinjitaiOutputEnabled: Bool + static var shiftJISShinjitaiOutputEnabled: Bool { + didSet { + // 康熙轉換與 JIS 轉換不能同時開啟,否則會出現某些奇奇怪怪的情況 + if shiftJISShinjitaiOutputEnabled, chineseConversionEnabled { + toggleChineseConversionEnabled() + UserDefaults.standard.set( + chineseConversionEnabled, forKey: UserDef.kChineseConversionEnabled.rawValue + ) + } + UserDefaults.standard.set( + shiftJISShinjitaiOutputEnabled, forKey: UserDef.kShiftJISShinjitaiOutputEnabled.rawValue + ) + } + } @discardableResult static func toggleShiftJISShinjitaiOutputEnabled() -> Bool { shiftJISShinjitaiOutputEnabled = !shiftJISShinjitaiOutputEnabled - // 康熙轉換與 JIS 轉換不能同時開啟,否則會出現某些奇奇怪怪的情況 - if shiftJISShinjitaiOutputEnabled, chineseConversionEnabled { - toggleChineseConversionEnabled() - UserDefaults.standard.set(chineseConversionEnabled, forKey: UserDef.kChineseConversionEnabled.rawValue) - } - UserDefaults.standard.set( - shiftJISShinjitaiOutputEnabled, forKey: UserDef.kShiftJISShinjitaiOutputEnabled.rawValue - ) return shiftJISShinjitaiOutputEnabled } diff --git a/Source/Modules/UIModules/PrefUI/suiPrefPaneGeneral.swift b/Source/Modules/UIModules/PrefUI/suiPrefPaneGeneral.swift index 505ad520..ace615c3 100644 --- a/Source/Modules/UIModules/PrefUI/suiPrefPaneGeneral.swift +++ b/Source/Modules/UIModules/PrefUI/suiPrefPaneGeneral.swift @@ -133,20 +133,14 @@ struct suiPrefPaneGeneral: View { LocalizedStringKey("Auto-convert traditional Chinese glyphs to KangXi characters"), isOn: $selEnableKanjiConvToKangXi.onChange { mgrPrefs.chineseConversionEnabled = selEnableKanjiConvToKangXi - if selEnableKanjiConvToKangXi { - mgrPrefs.shiftJISShinjitaiOutputEnabled = !selEnableKanjiConvToKangXi - selEnableKanjiConvToJIS = !selEnableKanjiConvToKangXi - } + selEnableKanjiConvToJIS = mgrPrefs.shiftJISShinjitaiOutputEnabled } ) Toggle( LocalizedStringKey("Auto-convert traditional Chinese glyphs to JIS Shinjitai characters"), isOn: $selEnableKanjiConvToJIS.onChange { mgrPrefs.shiftJISShinjitaiOutputEnabled = selEnableKanjiConvToJIS - if selEnableKanjiConvToJIS { - mgrPrefs.chineseConversionEnabled = !selEnableKanjiConvToJIS - selEnableKanjiConvToKangXi = !selEnableKanjiConvToJIS - } + selEnableKanjiConvToKangXi = mgrPrefs.chineseConversionEnabled } ) Toggle(