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 -->
<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 -->

View File

@@ -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());
}
}
}