Merge "Add explicit "use system language" TTS language."

This commit is contained in:
Przemyslaw Szczepaniak
2014-05-13 09:53:16 +00:00
committed by Android (Google) Code Review
2 changed files with 23 additions and 22 deletions

View File

@@ -3887,6 +3887,8 @@
<!-- On main TTS Settings screen, in default settings section, setting default language for synthesized voice --> <!-- On main TTS Settings screen, in default settings section, setting default language for synthesized voice -->
<string name="tts_default_lang_title">Language</string> <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] --> <!-- 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> <string name="tts_lang_not_selected">Language not selected</string>
<!-- On main TTS Settings screen, summary for default language for synthesized voice --> <!-- On main TTS Settings screen, summary for default language for synthesized voice -->

View File

@@ -68,7 +68,6 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
private TextToSpeech mTts; private TextToSpeech mTts;
private int mSelectedLocaleIndex = -1; private int mSelectedLocaleIndex = -1;
private int mSystemLocaleIndex = -1;
private final TextToSpeech.OnInitListener mTtsInitListener = new TextToSpeech.OnInitListener() { private final TextToSpeech.OnInitListener mTtsInitListener = new TextToSpeech.OnInitListener() {
@Override @Override
@@ -234,8 +233,10 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
mLocalePreference.setEnabled(false); mLocalePreference.setEnabled(false);
return; return;
} }
String currentLocale = mEnginesHelper.getLocalePrefForEngine( String currentLocale = "";
getEngineName()); if (!mEnginesHelper.isLocaleSetToDefaultForEngine(getEngineName())) {
currentLocale = mEnginesHelper.getLocalePrefForEngine(getEngineName());
}
ArrayList<Pair<String, String>> entryPairs = ArrayList<Pair<String, String>> entryPairs =
new ArrayList<Pair<String, String>>(availableLangs.size()); 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 // Get two arrays out of one of pairs
mSelectedLocaleIndex = -1; mSelectedLocaleIndex = 0; // Will point to the R.string.tts_lang_use_system value
mSystemLocaleIndex = -1; CharSequence[] entries = new CharSequence[availableLangs.size()+1];
CharSequence[] entries = new CharSequence[availableLangs.size()]; CharSequence[] entryValues = new CharSequence[availableLangs.size()+1];
CharSequence[] entryValues = new CharSequence[availableLangs.size()];
int i = 0; entries[0] = getActivity().getString(R.string.tts_lang_use_system);
entryValues[0] = "";
int i = 1;
for (Pair<String, String> entry : entryPairs) { for (Pair<String, String> entry : entryPairs) {
if (entry.second.equalsIgnoreCase(currentLocale)) { if (entry.second.equalsIgnoreCase(currentLocale)) {
mSelectedLocaleIndex = i; mSelectedLocaleIndex = i;
} }
if (entry.second.equalsIgnoreCase(defaultLocaleStr)) {
mSystemLocaleIndex = i;
}
entries[i] = entry.first; entries[i] = entry.first;
entryValues[i++] = entry.second; entryValues[i++] = entry.second;
} }
@@ -355,17 +354,17 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
mLocalePreference.setSummary(mLocalePreference.getEntries()[selectedLocaleIndex]); mLocalePreference.setSummary(mLocalePreference.getEntries()[selectedLocaleIndex]);
mSelectedLocaleIndex = selectedLocaleIndex; mSelectedLocaleIndex = selectedLocaleIndex;
if (mSelectedLocaleIndex == mSystemLocaleIndex) { mEnginesHelper.updateLocalePrefForEngine(getEngineName(), locale);
// Use empty locale, it will default to the system language
mEnginesHelper.updateLocalePrefForEngine(getEngineName(), "");
} else {
mEnginesHelper.updateLocalePrefForEngine(getEngineName(), locale);
}
if (getEngineName().equals(mTts.getCurrentEngine())) { if (getEngineName().equals(mTts.getCurrentEngine())) {
String[] localeArray = TtsEngines.parseLocalePref(locale); if (!locale.isEmpty()) {
if (localeArray != null) { String[] localeArray = TtsEngines.parseLocalePref(locale);
mTts.setLanguage(new Locale(localeArray[0], localeArray[1], localeArray[2])); if (localeArray != null) {
mTts.setLanguage(new Locale(localeArray[0], localeArray[1], localeArray[2]));
}
} else {
// Empty locale means "use system default"
mTts.setLanguage(Locale.getDefault());
} }
} }
} }