Add functionality to the spinner.
With this, the word is actually inserted with the right locale inside the user dictionary. Step 8. Bug: 5306641 Change-Id: Idf6cf3dd807e86c29faf8a701c03c1e6ea39ec68
This commit is contained in:
@@ -27,17 +27,20 @@ import java.util.Set;
|
|||||||
|
|
||||||
import android.animation.LayoutTransition;
|
import android.animation.LayoutTransition;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.provider.UserDictionary;
|
import android.provider.UserDictionary;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.AdapterView;
|
||||||
import android.widget.ArrayAdapter;
|
import android.widget.ArrayAdapter;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.Spinner;
|
import android.widget.Spinner;
|
||||||
|
|
||||||
public class UserDictionaryAddWordActivity extends Activity {
|
public class UserDictionaryAddWordActivity extends Activity
|
||||||
|
implements AdapterView.OnItemSelectedListener {
|
||||||
public static final String EXTRA_WORD = "word";
|
public static final String EXTRA_WORD = "word";
|
||||||
public static final String EXTRA_LOCALE = "locale";
|
public static final String EXTRA_LOCALE = "locale";
|
||||||
private static final int FREQUENCY_FOR_USER_DICTIONARY_ADDS = 250;
|
private static final int FREQUENCY_FOR_USER_DICTIONARY_ADDS = 250;
|
||||||
@@ -124,9 +127,30 @@ public class UserDictionaryAddWordActivity extends Activity {
|
|||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addLocaleDisplayNameToList(final List<String> list, final String locale) {
|
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 ("".equals(localeString)) {
|
||||||
|
mDescription = context.getString(R.string.user_dict_settings_all_languages);
|
||||||
|
} else {
|
||||||
|
mDescription = Utils.createLocaleFromString(localeString).getDisplayName();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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) {
|
if (null != locale) {
|
||||||
list.add(Utils.createLocaleFromString(locale).getDisplayName());
|
list.add(new LocaleRenderer(context, locale));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -147,21 +171,36 @@ public class UserDictionaryAddWordActivity extends Activity {
|
|||||||
// The system locale should be inside. We want it at the 2nd spot.
|
// The system locale should be inside. We want it at the 2nd spot.
|
||||||
locales.remove(systemLocale);
|
locales.remove(systemLocale);
|
||||||
}
|
}
|
||||||
final ArrayList<String> localesList = new ArrayList<String>();
|
final ArrayList<LocaleRenderer> localesList = new ArrayList<LocaleRenderer>();
|
||||||
// Add the passed locale, then the system locale at the top of the list. Add an
|
// 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.
|
// "all languages" entry at the bottom of the list.
|
||||||
addLocaleDisplayNameToList(localesList, mLocale);
|
addLocaleDisplayNameToList(this, localesList, mLocale);
|
||||||
addLocaleDisplayNameToList(localesList, systemLocale);
|
addLocaleDisplayNameToList(this, localesList, systemLocale);
|
||||||
for (final String l : locales) {
|
for (final String l : locales) {
|
||||||
// TODO: sort in unicode order
|
// TODO: sort in unicode order
|
||||||
addLocaleDisplayNameToList(localesList, l);
|
addLocaleDisplayNameToList(this, localesList, l);
|
||||||
}
|
}
|
||||||
localesList.add(getString(R.string.user_dict_settings_all_languages));
|
localesList.add(new LocaleRenderer(this, ""));
|
||||||
|
//TODO: Do we need an option "more..." to show all locales in the world?
|
||||||
final Spinner localeSpinner =
|
final Spinner localeSpinner =
|
||||||
(Spinner)findViewById(R.id.user_dictionary_settings_add_dialog_locale);
|
(Spinner)findViewById(R.id.user_dictionary_settings_add_dialog_locale);
|
||||||
final ArrayAdapter<String> adapter =
|
final ArrayAdapter<LocaleRenderer> adapter = new ArrayAdapter<LocaleRenderer>(this,
|
||||||
new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, localesList);
|
android.R.layout.simple_spinner_item, localesList);
|
||||||
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||||
localeSpinner.setAdapter(adapter);
|
localeSpinner.setAdapter(adapter);
|
||||||
|
localeSpinner.setOnItemSelectedListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onItemSelected(final AdapterView<?> parent, final View view, final int pos,
|
||||||
|
final long id) {
|
||||||
|
final LocaleRenderer locale = (LocaleRenderer)parent.getItemAtPosition(pos);
|
||||||
|
mLocale = locale.getLocaleString();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNothingSelected(AdapterView<?> parent) {
|
||||||
|
// I'm not sure we can come here, but if we do, that's the right thing to do.
|
||||||
|
mLocale = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user