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

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