diff options
author | Jean Chalard <jchalard@google.com> | 2012-05-08 19:59:15 +0900 |
---|---|---|
committer | Jean Chalard <jchalard@google.com> | 2012-05-09 17:49:59 +0900 |
commit | f54622e46c9164e4ab46c09c9c3ff173828d5940 (patch) | |
tree | e8ab2244c9ab327d7e950da312e41f66e8e70ac9 /src/com/android/settings/inputmethod | |
parent | 821a4d8c34e9a60f2f349ff63436c2ea0379ce9c (diff) | |
download | packages_apps_settings-f54622e46c9164e4ab46c09c9c3ff173828d5940.zip packages_apps_settings-f54622e46c9164e4ab46c09c9c3ff173828d5940.tar.gz packages_apps_settings-f54622e46c9164e4ab46c09c9c3ff173828d5940.tar.bz2 |
Cut a helper method to increase encapsulation.
Change-Id: Ie47503a99d455f7266e281914e92ed680b993551
Diffstat (limited to 'src/com/android/settings/inputmethod')
4 files changed, 69 insertions, 60 deletions
diff --git a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java index cb350b2..6448a97 100644 --- a/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java +++ b/src/com/android/settings/inputmethod/InputMethodAndLanguageSettings.java @@ -49,7 +49,7 @@ import android.view.inputmethod.InputMethodManager; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.Set; +import java.util.TreeSet; public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment implements Preference.OnPreferenceChangeListener, InputManager.InputDeviceListener { @@ -190,7 +190,7 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment private void updateUserDictionaryPreference(Preference userDictionaryPreference) { final Activity activity = getActivity(); - final Set<String> localeList = UserDictionaryList.getUserDictionaryLocalesList(activity); + final TreeSet<String> localeList = UserDictionaryList.getUserDictionaryLocalesSet(activity); if (null == localeList) { // The locale list is null if and only if the user dictionary service is // not present or disabled. In this case we need to remove the preference. @@ -205,9 +205,9 @@ public class InputMethodAndLanguageSettings extends SettingsPreferenceFragment // 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() + // Note that with the current code for UserDictionaryList#getUserDictionaryLocalesSet() // the locale list always has at least one element, since it always includes the current - // locale explicitly. @see UserDictionaryList.getUserDictionaryLocalesList(). + // locale explicitly. @see UserDictionaryList.getUserDictionaryLocalesSet(). if (localeList.size() == 1) { final String locale = (String)localeList.toArray()[0]; userDictionaryPreference.getExtras().putString("locale", locale); diff --git a/src/com/android/settings/inputmethod/UserDictionaryAddWordActivity.java b/src/com/android/settings/inputmethod/UserDictionaryAddWordActivity.java index f741d19..087574e 100644 --- a/src/com/android/settings/inputmethod/UserDictionaryAddWordActivity.java +++ b/src/com/android/settings/inputmethod/UserDictionaryAddWordActivity.java @@ -19,11 +19,10 @@ package com.android.settings.inputmethod; import com.android.settings.R; import com.android.settings.UserDictionarySettings; import com.android.settings.Utils; +import com.android.settings.inputmethod.UserDictionaryAddWordContents.LocaleRenderer; import java.util.ArrayList; -import java.util.List; import java.util.Locale; -import java.util.Set; import android.animation.LayoutTransition; import android.app.Activity; @@ -120,36 +119,6 @@ public class UserDictionaryAddWordActivity extends Activity finish(); } - private static class LocaleRenderer { - private final String mLocaleString; - private final String mDescription; - // LocaleString may NOT be null. - public LocaleRenderer(final Context context, final String localeString) { - mLocaleString = localeString; - if (null == localeString) { - mDescription = context.getString(R.string.user_dict_settings_more_languages); - } else if ("".equals(localeString)) { - mDescription = context.getString(R.string.user_dict_settings_all_languages); - } else { - mDescription = Utils.createLocaleFromString(localeString).getDisplayName(); - } - } - @Override - public String toString() { - return mDescription; - } - public String getLocaleString() { - return mLocaleString; - } - } - - private static void addLocaleDisplayNameToList(final Context context, - final List<LocaleRenderer> list, final String locale) { - if (null != locale) { - list.add(new LocaleRenderer(context, locale)); - } - } - public void onClickMoreOptions(final View v) { for (final int idToShow : IDS_SHOWN_ONLY_IN_MORE_OPTIONS_MODE) { final View viewToShow = findViewById(idToShow); @@ -160,26 +129,8 @@ public class UserDictionaryAddWordActivity extends Activity findViewById(R.id.user_dictionary_settings_add_dialog_less_options) .setVisibility(View.VISIBLE); - final Set<String> locales = UserDictionaryList.getUserDictionaryLocalesList(this); - // Remove our locale if it's in, because we're always gonna put it at the top - locales.remove(mContents.mLocale); // mLocale may not be null - final String systemLocale = Locale.getDefault().toString(); - // The system locale should be inside. We want it at the 2nd spot. - locales.remove(systemLocale); // system locale may not be null - locales.remove(""); // Remove the empty string if it's there - final ArrayList<LocaleRenderer> localesList = new ArrayList<LocaleRenderer>(); - // Add the passed locale, then the system locale at the top of the list. Add an - // "all languages" entry at the bottom of the list. - addLocaleDisplayNameToList(this, localesList, mContents.mLocale); - if (!systemLocale.equals(mContents.mLocale)) { - addLocaleDisplayNameToList(this, localesList, systemLocale); - } - for (final String l : locales) { - // TODO: sort in unicode order - addLocaleDisplayNameToList(this, localesList, l); - } - localesList.add(new LocaleRenderer(this, "")); // meaning: all languages - localesList.add(new LocaleRenderer(this, null)); // meaning: select another locale + final ArrayList<LocaleRenderer> localesList = mContents.getLocalesList(this); + final Spinner localeSpinner = (Spinner)findViewById(R.id.user_dictionary_settings_add_dialog_locale); final ArrayAdapter<LocaleRenderer> adapter = new ArrayAdapter<LocaleRenderer>(this, diff --git a/src/com/android/settings/inputmethod/UserDictionaryAddWordContents.java b/src/com/android/settings/inputmethod/UserDictionaryAddWordContents.java index 5de6f03..2540323 100644 --- a/src/com/android/settings/inputmethod/UserDictionaryAddWordContents.java +++ b/src/com/android/settings/inputmethod/UserDictionaryAddWordContents.java @@ -16,6 +16,7 @@ package com.android.settings.inputmethod; +import android.app.Activity; import android.content.ContentResolver; import android.content.Context; import android.os.Bundle; @@ -28,7 +29,9 @@ import com.android.settings.R; import com.android.settings.UserDictionarySettings; import com.android.settings.Utils; +import java.util.ArrayList; import java.util.Locale; +import java.util.TreeSet; /** * A container class to factor common code to UserDictionaryAddWordFragment @@ -87,4 +90,59 @@ public class UserDictionaryAddWordContents { FREQUENCY_FOR_USER_DICTIONARY_ADDS, null /* shortcut */, TextUtils.isEmpty(mLocale) ? null : Utils.createLocaleFromString(mLocale)); } + + public static class LocaleRenderer { + private final String mLocaleString; + private final String mDescription; + // LocaleString may NOT be null. + public LocaleRenderer(final Context context, final String localeString) { + mLocaleString = localeString; + if (null == localeString) { + mDescription = context.getString(R.string.user_dict_settings_more_languages); + } else if ("".equals(localeString)) { + mDescription = context.getString(R.string.user_dict_settings_all_languages); + } else { + mDescription = Utils.createLocaleFromString(localeString).getDisplayName(); + } + } + @Override + public String toString() { + return mDescription; + } + public String getLocaleString() { + return mLocaleString; + } + } + + private static void addLocaleDisplayNameToList(final Context context, + final ArrayList<LocaleRenderer> list, final String locale) { + if (null != locale) { + list.add(new LocaleRenderer(context, locale)); + } + } + + // Helper method to get the list of locales to display for this word + public ArrayList<LocaleRenderer> getLocalesList(final Activity activity) { + final TreeSet<String> locales = UserDictionaryList.getUserDictionaryLocalesSet(activity); + // Remove our locale if it's in, because we're always gonna put it at the top + locales.remove(mLocale); // mLocale may not be null + final String systemLocale = Locale.getDefault().toString(); + // The system locale should be inside. We want it at the 2nd spot. + locales.remove(systemLocale); // system locale may not be null + locales.remove(""); // Remove the empty string if it's there + final ArrayList<LocaleRenderer> localesList = new ArrayList<LocaleRenderer>(); + // Add the passed locale, then the system locale at the top of the list. Add an + // "all languages" entry at the bottom of the list. + addLocaleDisplayNameToList(activity, localesList, mLocale); + if (!systemLocale.equals(mLocale)) { + addLocaleDisplayNameToList(activity, localesList, systemLocale); + } + for (final String l : locales) { + // TODO: sort in unicode order + addLocaleDisplayNameToList(activity, localesList, l); + } + localesList.add(new LocaleRenderer(activity, "")); // meaning: all languages + localesList.add(new LocaleRenderer(activity, null)); // meaning: select another locale + return localesList; + } } diff --git a/src/com/android/settings/inputmethod/UserDictionaryList.java b/src/com/android/settings/inputmethod/UserDictionaryList.java index ff82a30..5390be6 100644 --- a/src/com/android/settings/inputmethod/UserDictionaryList.java +++ b/src/com/android/settings/inputmethod/UserDictionaryList.java @@ -29,7 +29,6 @@ import android.preference.PreferenceGroup; import android.provider.UserDictionary; import java.util.Locale; -import java.util.Set; import java.util.TreeSet; public class UserDictionaryList extends SettingsPreferenceFragment { @@ -43,12 +42,12 @@ public class UserDictionaryList extends SettingsPreferenceFragment { setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getActivity())); } - static Set<String> getUserDictionaryLocalesList(Activity activity) { + static TreeSet<String> getUserDictionaryLocalesSet(Activity activity) { @SuppressWarnings("deprecation") final Cursor cursor = activity.managedQuery(UserDictionary.Words.CONTENT_URI, new String[] { UserDictionary.Words.LOCALE }, null, null, null); - final Set<String> localeList = new TreeSet<String>(); + final TreeSet<String> localeList = new TreeSet<String>(); if (null == cursor) { // The user dictionary service is not present or disabled. Return null. return null; @@ -70,7 +69,8 @@ public class UserDictionaryList extends SettingsPreferenceFragment { protected void createUserDictSettings(PreferenceGroup userDictGroup) { final Activity activity = getActivity(); userDictGroup.removeAll(); - final Set<String> localeList = UserDictionaryList.getUserDictionaryLocalesList(activity); + final TreeSet<String> localeList = + UserDictionaryList.getUserDictionaryLocalesSet(activity); if (localeList.isEmpty()) { userDictGroup.addPreference(createUserDictionaryPreference(null, activity)); |