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 16:35:21 +0900
committerTadashi G. Takaoka <takaoka@google.com>2013-01-08 17:48:47 +0900
commitff0735ada807239abeb4c6105b7d01d2bcea0aed (patch)
tree5d2c8b94321f5888976dccd1d73bae6411ca1384 /java/src/com/android/inputmethod/latin/Settings.java
parent8873b5ae31a5541913af40af6862542055e39ef8 (diff)
downloadlatinime-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.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;
+ }
}