diff --git a/src/com/android/settings/inputmethod/UserDictionaryAddWordActivity.java b/src/com/android/settings/inputmethod/UserDictionaryAddWordActivity.java index c5270820ced..3a05380a667 100644 --- a/src/com/android/settings/inputmethod/UserDictionaryAddWordActivity.java +++ b/src/com/android/settings/inputmethod/UserDictionaryAddWordActivity.java @@ -20,7 +20,10 @@ import com.android.settings.R; import com.android.settings.UserDictionarySettings; import com.android.settings.Utils; +import java.util.ArrayList; +import java.util.List; import java.util.Locale; +import java.util.Set; import android.animation.LayoutTransition; import android.app.Activity; @@ -30,7 +33,9 @@ import android.provider.UserDictionary; import android.text.TextUtils; import android.view.View; import android.view.ViewGroup; +import android.widget.ArrayAdapter; import android.widget.EditText; +import android.widget.Spinner; public class UserDictionaryAddWordActivity extends Activity { public static final String EXTRA_WORD = "word"; @@ -78,12 +83,45 @@ public class UserDictionaryAddWordActivity extends Activity { finish(); } + private static void addLocaleDisplayNameToList(final List list, final String locale) { + if (null != locale) { + list.add(Utils.createLocaleFromString(locale).getDisplayName()); + } + } + public void onClickOptions(final View v) { final View moreOptionsView = findViewById(R.id.user_dict_settings_add_dialog_shortcut_interface); moreOptionsView.setVisibility(View.VISIBLE); findViewById(R.id.user_dictionary_settings_add_dialog_options).setVisibility(View.GONE); findViewById(R.id.user_dictionary_settings_add_dialog_manage).setVisibility(View.VISIBLE); + + final Set locales = UserDictionaryList.getUserDictionaryLocalesList(this); + if (null != mLocale && locales.contains(mLocale)) { + // Remove our locale if it's in, because we're always gonna put it at the top + locales.remove(mLocale); + } + final String systemLocale = Locale.getDefault().toString(); + if (null != systemLocale && locales.contains(systemLocale)) { + // The system locale should be inside. We want it at the 2nd spot. + locales.remove(systemLocale); + } + final ArrayList localesList = new ArrayList(); + // 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(localesList, mLocale); + addLocaleDisplayNameToList(localesList, systemLocale); + for (final String l : locales) { + // TODO: sort in unicode order + addLocaleDisplayNameToList(localesList, l); + } + localesList.add(getString(R.string.user_dict_settings_all_languages)); + final Spinner localeSpinner = + (Spinner)findViewById(R.id.user_dictionary_settings_add_dialog_locale); + final ArrayAdapter adapter = + new ArrayAdapter(this, android.R.layout.simple_spinner_item, localesList); + adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + localeSpinner.setAdapter(adapter); } public void onClickManage(final View v) {