From 39f96f95c3ee5e6c2f2e96f2bdf4ba29d18840fe Mon Sep 17 00:00:00 2001 From: Benjamin Poiesz Date: Thu, 4 Apr 2013 16:07:33 -0700 Subject: [PATCH] Adding LocalePicker support for the zz_ZZ pseudolocale Bug #8556677 Change-Id: I47244765b240f1ba66eadbef4ac712cf4367566e --- .../android/internal/app/LocalePicker.java | 45 ++++++++++++++++--- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/core/java/com/android/internal/app/LocalePicker.java b/core/java/com/android/internal/app/LocalePicker.java index f173327fe69f5..043964f56a7fa 100644 --- a/core/java/com/android/internal/app/LocalePicker.java +++ b/core/java/com/android/internal/app/LocalePicker.java @@ -38,6 +38,7 @@ import android.widget.TextView; import java.text.Collator; import java.util.Arrays; import java.util.Locale; +import java.util.ArrayList; public class LocalePicker extends ListFragment { private static final String TAG = "LocalePicker"; @@ -48,6 +49,10 @@ public class LocalePicker extends ListFragment { public void onLocaleSelected(Locale locale); } + protected boolean isInDeveloperMode() { + return false; + } + LocaleSelectionListener mListener; // default to null public static class LocaleInfo implements Comparable { @@ -85,13 +90,39 @@ public class LocalePicker extends ListFragment { * {@link LocaleInfo#label}. */ public static ArrayAdapter constructAdapter(Context context) { - return constructAdapter(context, R.layout.locale_picker_item, R.id.locale); + return constructAdapter(context, false /* disable pesudolocales */); + } + + public static ArrayAdapter constructAdapter(Context context, + final boolean isInDeveloperMode) { + return constructAdapter(context, R.layout.locale_picker_item, R.id.locale, + isInDeveloperMode); } public static ArrayAdapter constructAdapter(Context context, final int layoutId, final int fieldId) { + return constructAdapter(context, layoutId, fieldId, false /* disable pseudolocales */); + } + + public static ArrayAdapter constructAdapter(Context context, + final int layoutId, final int fieldId, final boolean isInDeveloperMode) { final Resources resources = context.getResources(); - final String[] locales = Resources.getSystem().getAssets().getLocales(); + + ArrayList localeList = new ArrayList(Arrays.asList( + Resources.getSystem().getAssets().getLocales())); + if (isInDeveloperMode) { + if (!localeList.contains("zz_ZZ")) { + localeList.add("zz_ZZ"); + } + /** - TODO: Enable when zz_ZY Pseudolocale is complete + * if (!localeList.contains("zz_ZY")) { + * localeList.add("zz_ZY"); + * } + */ + } + String[] locales = new String[localeList.size()]; + locales = localeList.toArray(locales); + final String[] specialLocaleCodes = resources.getStringArray(R.array.special_locale_codes); final String[] specialLocaleNames = resources.getStringArray(R.array.special_locale_names); Arrays.sort(locales); @@ -118,7 +149,8 @@ public class LocalePicker extends ListFragment { // insert ours with full name // diff lang -> insert ours with lang-only name if (preprocess[finalSize-1].locale.getLanguage().equals( - language)) { + language) && + !preprocess[finalSize-1].locale.getLanguage().equals("zz")) { if (DEBUG) { Log.v(TAG, "backing up and fixing "+ preprocess[finalSize-1].label+" to "+ @@ -139,7 +171,9 @@ public class LocalePicker extends ListFragment { } else { String displayName; if (s.equals("zz_ZZ")) { - displayName = "Pseudo..."; + displayName = "[Developer] Accented English"; + } else if (s.equals("zz_ZY")) { + displayName = "[Developer] Fake Bi-Directional"; } else { displayName = toTitleCase(l.getDisplayLanguage(l)); } @@ -206,7 +240,8 @@ public class LocalePicker extends ListFragment { @Override public void onActivityCreated(final Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - final ArrayAdapter adapter = constructAdapter(getActivity()); + final ArrayAdapter adapter = constructAdapter(getActivity(), + isInDeveloperMode()); setListAdapter(adapter); }