diff options
author | Przemyslaw Szczepaniak <pszczepaniak@google.com> | 2012-09-03 14:53:10 +0100 |
---|---|---|
committer | Przemyslaw Szczepaniak <pszczepaniak@google.com> | 2012-09-03 15:51:34 +0100 |
commit | 22dc1fe2bae886b385ddc22ee4f2819e5764c71a (patch) | |
tree | 055840121a1cdea6ddf651dd7c37a5482d9b9049 | |
parent | c888555f8907328a8625cb2301e081fcd143f2c5 (diff) | |
download | packages_apps_settings-22dc1fe2bae886b385ddc22ee4f2819e5764c71a.zip packages_apps_settings-22dc1fe2bae886b385ddc22ee4f2819e5764c71a.tar.gz packages_apps_settings-22dc1fe2bae886b385ddc22ee4f2819e5764c71a.tar.bz2 |
Make TTS languages list sorted.
Also makes sure that languages list always have underlying array after onCreate.
Bug: 5640782
Change-Id: Id85d0099efccc9a64458d24853b5c98a35307b38
-rw-r--r-- | src/com/android/settings/tts/TtsEngineSettingsFragment.java | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/src/com/android/settings/tts/TtsEngineSettingsFragment.java b/src/com/android/settings/tts/TtsEngineSettingsFragment.java index d8e32aa..0c98819 100644 --- a/src/com/android/settings/tts/TtsEngineSettingsFragment.java +++ b/src/com/android/settings/tts/TtsEngineSettingsFragment.java @@ -31,11 +31,15 @@ import android.speech.tts.TextToSpeech; import android.speech.tts.TtsEngines; import android.text.TextUtils; import android.util.Log; +import android.util.Pair; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; +import com.google.common.collect.Lists; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.Locale; @@ -119,12 +123,15 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem mInstallVoicesPreference.setEnabled(false); mLocalePreference.setEnabled(false); + mLocalePreference.setEntries(new CharSequence[0]); + mLocalePreference.setEntryValues(new CharSequence[0]); mVoiceDataDetails = getArguments().getParcelable(TtsEnginePreference.FRAGMENT_ARGS_VOICES); mTts = new TextToSpeech(getActivity().getApplicationContext(), mTtsInitListener, getEngineName()); + // Check if data packs changed checkTtsData(); @@ -194,10 +201,8 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem String currentLocale = mEnginesHelper.getLocalePrefForEngine( getEngineName()); - CharSequence[] entries = new CharSequence[availableLangs.size()]; - CharSequence[] entryValues = new CharSequence[availableLangs.size()]; - - int selectedLanguageIndex = -1; + ArrayList<Pair<String, String>> entryPairs = + Lists.newArrayListWithCapacity(availableLangs.size()); for (int i = 0; i < availableLangs.size(); i++) { String[] langCountryVariant = availableLangs.get(i).split("-"); Locale loc = null; @@ -210,12 +215,30 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem langCountryVariant[2]); } if (loc != null){ - entries[i] = loc.getDisplayName(); - entryValues[i] = availableLangs.get(i); - if (availableLangs.get(i).equalsIgnoreCase(currentLocale)) { - selectedLanguageIndex = i; - } + entryPairs.add(new Pair<String, String>( + loc.getDisplayName(), availableLangs.get(i))); + } + } + + // Sort it + Collections.sort(entryPairs, new Comparator<Pair<String, String>>() { + @Override + public int compare(Pair<String, String> lhs, Pair<String, String> rhs) { + return lhs.first.compareToIgnoreCase(rhs.first); + } + }); + + // Get two arrays out of one of pairs + int selectedLanguageIndex = -1; + CharSequence[] entries = new CharSequence[availableLangs.size()]; + CharSequence[] entryValues = new CharSequence[availableLangs.size()]; + int i = 0; + for (Pair<String, String> entry : entryPairs) { + if (entry.second.equalsIgnoreCase(currentLocale)) { + selectedLanguageIndex = i; } + entries[i] = entry.first; + entryValues[i++] = entry.second; } mLocalePreference.setEntries(entries); |