From ccd80ec95f035cb9db9775e6f86fea1f7809f168 Mon Sep 17 00:00:00 2001 From: Przemyslaw Szczepaniak Date: Mon, 13 Aug 2012 16:56:02 +0100 Subject: [PATCH] Fix for setting TTS language to recently downloaded one If user added new voice pack, then set it as a default language, went level back and went to TTS settings again, it ended in crash. This is because first updateVoiceDetails uses old voice data details that settings retreived long time ago. locales preference is hidden until TTs engine returns list of locales. Change-Id: I33a81ff259c69adb4c051ee693b6c41b93f302d0 --- res/xml/tts_engine_settings.xml | 9 ++++++--- .../settings/tts/TtsEngineSettingsFragment.java | 17 ++++++++--------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/res/xml/tts_engine_settings.xml b/res/xml/tts_engine_settings.xml index 03414e838f7..176bdbcb057 100644 --- a/res/xml/tts_engine_settings.xml +++ b/res/xml/tts_engine_settings.xml @@ -19,16 +19,19 @@ android:key="tts_default_lang" android:title="@string/tts_default_lang_title" android:summary="@string/tts_default_lang_summary" - android:persistent="false" /> + android:persistent="false" + android:order="100" /> + android:title="@string/tts_engine_settings_title" + android:order="200" /> + android:summary="@string/tts_install_data_summary" + android:order="300" /> diff --git a/src/com/android/settings/tts/TtsEngineSettingsFragment.java b/src/com/android/settings/tts/TtsEngineSettingsFragment.java index 267b8e1a1c9..d8e32aac792 100644 --- a/src/com/android/settings/tts/TtsEngineSettingsFragment.java +++ b/src/com/android/settings/tts/TtsEngineSettingsFragment.java @@ -104,7 +104,8 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem mInstallVoicesPreference.setOnPreferenceClickListener(this); // Remove this preference unless voices are indeed available to install. root.removePreference(mInstallVoicesPreference); - + // Remove this preference unless locales are indeed available. + root.removePreference(mLocalePreference); root.setTitle(getEngineLabel()); root.setKey(getEngineName()); @@ -121,8 +122,6 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem mVoiceDataDetails = getArguments().getParcelable(TtsEnginePreference.FRAGMENT_ARGS_VOICES); - updateVoiceDetails(); - mTts = new TextToSpeech(getActivity().getApplicationContext(), mTtsInitListener, getEngineName()); @@ -169,9 +168,8 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem if (available == null){ Log.e(TAG, "TTS data check failed (available == null)."); - final CharSequence[] empty = new CharSequence[0]; - mLocalePreference.setEntries(empty); - mLocalePreference.setEntryValues(empty); + mLocalePreference.setEnabled(false); + getPreferenceScreen().removePreference(mLocalePreference); return; } @@ -183,11 +181,12 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem } if (available.size() > 0) { + mLocalePreference.setEnabled(true); + getPreferenceScreen().addPreference(mLocalePreference); updateDefaultLocalePref(available); } else { - final CharSequence[] empty = new CharSequence[0]; - mLocalePreference.setEntries(empty); - mLocalePreference.setEntryValues(empty); + mLocalePreference.setEnabled(false); + getPreferenceScreen().removePreference(mLocalePreference); } }