diff options
-rw-r--r-- | res/values/strings.xml | 2 | ||||
-rw-r--r-- | src/com/android/settings/tts/TtsEngineSettingsFragment.java | 43 |
2 files changed, 23 insertions, 22 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml index 06f89bf..fd3922c 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -3887,6 +3887,8 @@ <!-- On main TTS Settings screen, in default settings section, setting default language for synthesized voice --> <string name="tts_default_lang_title">Language</string> + <!-- Entry in the TTS engine language/locale picker, when selected will try to default to the system language [CHAR LIMIT=50] --> + <string name="tts_lang_use_system">Use system language</string> <!-- On main TTS Settings screen, language summary if it can't default to system language [CHAR LIMIT=50] --> <string name="tts_lang_not_selected">Language not selected</string> <!-- On main TTS Settings screen, summary for default language for synthesized voice --> diff --git a/src/com/android/settings/tts/TtsEngineSettingsFragment.java b/src/com/android/settings/tts/TtsEngineSettingsFragment.java index f6314dd..47493fb 100644 --- a/src/com/android/settings/tts/TtsEngineSettingsFragment.java +++ b/src/com/android/settings/tts/TtsEngineSettingsFragment.java @@ -68,7 +68,6 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem private TextToSpeech mTts; private int mSelectedLocaleIndex = -1; - private int mSystemLocaleIndex = -1; private final TextToSpeech.OnInitListener mTtsInitListener = new TextToSpeech.OnInitListener() { @Override @@ -234,8 +233,10 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem mLocalePreference.setEnabled(false); return; } - String currentLocale = mEnginesHelper.getLocalePrefForEngine( - getEngineName()); + String currentLocale = ""; + if (!mEnginesHelper.isLocaleSetToDefaultForEngine(getEngineName())) { + currentLocale = mEnginesHelper.getLocalePrefForEngine(getEngineName()); + } ArrayList<Pair<String, String>> entryPairs = new ArrayList<Pair<String, String>>(availableLangs.size()); @@ -264,21 +265,19 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem } }); - String defaultLocaleStr = mEnginesHelper.getDefaultLocale(); - // Get two arrays out of one of pairs - mSelectedLocaleIndex = -1; - mSystemLocaleIndex = -1; - CharSequence[] entries = new CharSequence[availableLangs.size()]; - CharSequence[] entryValues = new CharSequence[availableLangs.size()]; - int i = 0; + mSelectedLocaleIndex = 0; // Will point to the R.string.tts_lang_use_system value + CharSequence[] entries = new CharSequence[availableLangs.size()+1]; + CharSequence[] entryValues = new CharSequence[availableLangs.size()+1]; + + entries[0] = getActivity().getString(R.string.tts_lang_use_system); + entryValues[0] = ""; + + int i = 1; for (Pair<String, String> entry : entryPairs) { if (entry.second.equalsIgnoreCase(currentLocale)) { mSelectedLocaleIndex = i; } - if (entry.second.equalsIgnoreCase(defaultLocaleStr)) { - mSystemLocaleIndex = i; - } entries[i] = entry.first; entryValues[i++] = entry.second; } @@ -355,17 +354,17 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem mLocalePreference.setSummary(mLocalePreference.getEntries()[selectedLocaleIndex]); mSelectedLocaleIndex = selectedLocaleIndex; - if (mSelectedLocaleIndex == mSystemLocaleIndex) { - // Use empty locale, it will default to the system language - mEnginesHelper.updateLocalePrefForEngine(getEngineName(), ""); - } else { - mEnginesHelper.updateLocalePrefForEngine(getEngineName(), locale); - } + mEnginesHelper.updateLocalePrefForEngine(getEngineName(), locale); if (getEngineName().equals(mTts.getCurrentEngine())) { - String[] localeArray = TtsEngines.parseLocalePref(locale); - if (localeArray != null) { - mTts.setLanguage(new Locale(localeArray[0], localeArray[1], localeArray[2])); + if (!locale.isEmpty()) { + String[] localeArray = TtsEngines.parseLocalePref(locale); + if (localeArray != null) { + mTts.setLanguage(new Locale(localeArray[0], localeArray[1], localeArray[2])); + } + } else { + // Empty locale means "use system default" + mTts.setLanguage(Locale.getDefault()); } } } |