aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/Settings.java
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2013-01-08 00:57:45 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-01-08 00:57:46 -0800
commit0015ce8feafba31d441c49268f0d333604c0b945 (patch)
treeb930e74a919cf11992d8320d0d1deaf0b8cd1792 /java/src/com/android/inputmethod/latin/Settings.java
parenta10b1a88443a16bb1b5af1af63d0ed501b25f55d (diff)
parentff0735ada807239abeb4c6105b7d01d2bcea0aed (diff)
downloadlatinime-0015ce8feafba31d441c49268f0d333604c0b945.tar.gz
latinime-0015ce8feafba31d441c49268f0d333604c0b945.tar.xz
latinime-0015ce8feafba31d441c49268f0d333604c0b945.zip
Merge "Make Settings class singleton to manage SettingsValues"
Diffstat (limited to 'java/src/com/android/inputmethod/latin/Settings.java')
-rw-r--r--java/src/com/android/inputmethod/latin/Settings.java62
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;
+ }
}