diff options
Diffstat (limited to 'src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java')
-rw-r--r-- | src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java | 73 |
1 files changed, 22 insertions, 51 deletions
diff --git a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java index 31c6879..c72f0ba 100644 --- a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java +++ b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java @@ -18,25 +18,21 @@ package com.android.settings.inputmethod; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; +import com.android.settings.UserDictionarySettings; import com.android.settings.Utils; import com.android.settings.VoiceInputOutputSettings; import android.app.Activity; import android.content.Context; -import android.content.Intent; import android.content.res.Configuration; -import android.database.Cursor; import android.os.Bundle; import android.preference.ListPreference; import android.preference.Preference; -import android.preference.PreferenceGroup; import android.preference.PreferenceScreen; import android.provider.Settings; import android.view.inputmethod.InputMethodManager; -import android.provider.UserDictionary; -import java.util.Locale; -import java.util.TreeMap; +import java.util.Set; public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment implements Preference.OnPreferenceChangeListener{ @@ -45,8 +41,8 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment private static final String KEY_CURRENT_INPUT_METHOD = "current_input_method"; private static final String KEY_INPUT_METHOD_SELECTOR = "input_method_selector"; private static final String KEY_LANGUAGE_SETTINGS_CATEGORY = "language_settings_category"; - private static final String USER_DICTIONARY_SETTINGS_INTENT_ACTION = - "android.settings.USER_DICTIONARY_SETTINGS"; + private static final String KEY_USER_DICTIONARY_SETTINGS = "key_user_dictionary_settings"; + private int mDefaultInputMethodSelectorVisibility = 0; private ListPreference mShowInputMethodSelectorPref; @@ -70,9 +66,6 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment } else { mLanguagePref = findPreference(KEY_PHONE_LANGUAGE); } - - createUserDictSettings((PreferenceGroup) findPreference(KEY_LANGUAGE_SETTINGS_CATEGORY)); - mShowInputMethodSelectorPref = (ListPreference)findPreference( KEY_INPUT_METHOD_SELECTOR); mShowInputMethodSelectorPref.setOnPreferenceChangeListener(this); @@ -91,49 +84,26 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment } } - /** - * Creates the entries that allow the user to go into the user dictionary for each locale. - * @param userDictGroup The group to put the settings in. - */ - protected void createUserDictSettings(PreferenceGroup userDictGroup) { + private void updateUserDictionaryPreference(Preference userDictionaryPreference) { final Activity activity = getActivity(); - final Cursor locales = activity.managedQuery(UserDictionary.Words.CONTENT_URI, - new String[] { UserDictionary.Words.LOCALE }, - null, null, null); - final TreeMap<String, Preference> prefs = new TreeMap<String, Preference>(); - int order = findPreference(KEY_PHONE_LANGUAGE).getOrder(); - if (!locales.moveToFirst()) { - prefs.put("", createUserDictionaryPreference(null, activity, ++order)); + final Set<String> localeList = UserDictionaryList.getUserDictionaryLocalesList(activity); + if (localeList.size() <= 1) { + userDictionaryPreference.setTitle(R.string.user_dict_single_settings_title); + userDictionaryPreference.setFragment(UserDictionarySettings.class.getName()); + // If the size of localeList is 0, we don't set the locale parameter in the + // extras. This will be interpreted by the UserDictionarySettings class as + // meaning "the current locale". + // Note that with the current code for UserDictionaryList#getUserDictionaryLocalesList() + // the locale list always has at least one element, since it always includes the current + // locale explicitly. @see UserDictionaryList.getUserDictionaryLocalesList(). + if (localeList.size() == 1) { + final String locale = (String)localeList.toArray()[0]; + userDictionaryPreference.getExtras().putString("locale", locale); + } } else { - final int columnIndex = locales.getColumnIndex(UserDictionary.Words.LOCALE); - do { - final String locale = locales.getString(columnIndex); - if (locale != null && !prefs.containsKey(locale)) - prefs.put(locale, createUserDictionaryPreference(locale, activity, ++order)); - } while (locales.moveToNext()); - } - for (final Preference p : prefs.values()) { - userDictGroup.addPreference(p); - } - } - - /** - * Create a single User Dictionary Preference object, with its parameters set. - * @param locale The locale for which this user dictionary is for. - * @return The corresponding preference. - */ - protected Preference createUserDictionaryPreference(String locale, Activity activity, - int order) { - final Preference newPref = new Preference(getActivity()); - newPref.setOrder(order); - newPref.setTitle(activity.getString(R.string.user_dict_settings_title)); - final Intent intent = new Intent(USER_DICTIONARY_SETTINGS_INTENT_ACTION); - if (null != locale) { - newPref.setSummary(new Locale(locale).getDisplayName()); - intent.putExtra("locale", locale); + userDictionaryPreference.setTitle(R.string.user_dict_multiple_settings_title); + userDictionaryPreference.setFragment(UserDictionaryList.class.getName()); } - newPref.setIntent(intent); - return newPref; } @Override @@ -148,6 +118,7 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment } } + updateUserDictionaryPreference(findPreference(KEY_USER_DICTIONARY_SETTINGS)); mShowInputMethodSelectorPref.setOnPreferenceChangeListener(this); } |