diff options
author | 2013-01-08 16:35:21 +0900 | |
---|---|---|
committer | 2013-01-08 17:48:47 +0900 | |
commit | ff0735ada807239abeb4c6105b7d01d2bcea0aed (patch) | |
tree | 5d2c8b94321f5888976dccd1d73bae6411ca1384 /java/src/com/android/inputmethod/latin/Settings.java | |
parent | 8873b5ae31a5541913af40af6862542055e39ef8 (diff) | |
download | latinime-ff0735ada807239abeb4c6105b7d01d2bcea0aed.tar.gz latinime-ff0735ada807239abeb4c6105b7d01d2bcea0aed.tar.xz latinime-ff0735ada807239abeb4c6105b7d01d2bcea0aed.zip |
Make Settings class singleton to manage SettingsValues
Change-Id: Id30828a141de86d9bcf8bce586d2adb468cc59e1
Diffstat (limited to 'java/src/com/android/inputmethod/latin/Settings.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/Settings.java | 62 |
1 files changed, 61 insertions, 1 deletions
diff --git a/java/src/com/android/inputmethod/latin/Settings.java b/java/src/com/android/inputmethod/latin/Settings.java index 962851ca6..1d9d85b47 100644 --- a/java/src/com/android/inputmethod/latin/Settings.java +++ b/java/src/com/android/inputmethod/latin/Settings.java @@ -16,7 +16,16 @@ package com.android.inputmethod.latin; -public final class Settings { +import android.content.Context; +import android.content.SharedPreferences; +import android.content.res.Resources; +import android.preference.PreferenceManager; + +import com.android.inputmethod.latin.LocaleUtils.RunInLocale; + +import java.util.Locale; + +public final class Settings implements SharedPreferences.OnSharedPreferenceChangeListener { // In the same order as xml/prefs.xml public static final String PREF_GENERAL_SETTINGS = "general_settings"; public static final String PREF_AUTO_CAP = "auto_cap"; @@ -56,4 +65,55 @@ public final class Settings { public static final String PREF_INPUT_LANGUAGE = "input_language"; public static final String PREF_SELECTED_LANGUAGES = "selected_languages"; public static final String PREF_DEBUG_SETTINGS = "debug_settings"; + + private Resources mRes; + private SharedPreferences mPrefs; + private Locale mCurrentLocale; + private SettingsValues mSettingsValues; + + private static final Settings sInstance = new Settings(); + + public static Settings getInstance() { + return sInstance; + } + + public static void init(final Context context) { + sInstance.onCreate(context); + } + + private Settings() { + // Intentional empty constructor for singleton. + } + + private void onCreate(final Context context) { + mRes = context.getResources(); + mPrefs = PreferenceManager.getDefaultSharedPreferences(context); + mPrefs.registerOnSharedPreferenceChangeListener(this); + } + + public void onDestroy() { + mPrefs.unregisterOnSharedPreferenceChangeListener(this); + } + + @Override + public void onSharedPreferenceChanged(final SharedPreferences prefs, final String key) { + loadSettings(mCurrentLocale, mSettingsValues.mInputAttributes); + } + + public void loadSettings(final Locale locale, final InputAttributes inputAttributes) { + mCurrentLocale = locale; + final SharedPreferences prefs = mPrefs; + final RunInLocale<SettingsValues> job = new RunInLocale<SettingsValues>() { + @Override + protected SettingsValues job(final Resources res) { + return new SettingsValues(prefs, res, inputAttributes); + } + }; + mSettingsValues = job.runInLocale(mRes, locale); + } + + // TODO: Remove this method and add proxy method to SettingsValues. + public SettingsValues getCurrent() { + return mSettingsValues; + } } |