summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPrzemyslaw Szczepaniak <pszczepaniak@google.com>2014-05-12 16:13:14 +0100
committerPrzemyslaw Szczepaniak <pszczepaniak@google.com>2014-05-12 16:13:14 +0100
commit098b4a7eb795e403c2ccb7c1b585105c525761fc (patch)
tree7ed1f3787257129775444a8b5c5c9f2465dbb19e
parent55638cb6c6730104ec04287e7566eae7f3e57385 (diff)
downloadpackages_apps_Settings-098b4a7eb795e403c2ccb7c1b585105c525761fc.zip
packages_apps_Settings-098b4a7eb795e403c2ccb7c1b585105c525761fc.tar.gz
packages_apps_Settings-098b4a7eb795e403c2ccb7c1b585105c525761fc.tar.bz2
Add explicit "use system language" TTS language.
Previously, if user set the TTS engine default language to the system language, Settings app would save its value as empty string - which is interpreted as "use system language", and makes it follow the change of the device locale. This change introduces explicit "Use system language" as an entry in the TTS default engine picker. This makes it consistent with other pickers, like ones for keyboard and spellchecker. Change-Id: Ibb4189be30bb9691ef2bd10e7fff883318eceae7
-rw-r--r--res/values/strings.xml2
-rw-r--r--src/com/android/settings/tts/TtsEngineSettingsFragment.java43
2 files changed, 23 insertions, 22 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 4c605a4..bebc51b 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -3895,6 +3895,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 25ec1fd..ada6085 100644
--- a/src/com/android/settings/tts/TtsEngineSettingsFragment.java
+++ b/src/com/android/settings/tts/TtsEngineSettingsFragment.java
@@ -64,7 +64,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
@@ -201,8 +200,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());
@@ -231,21 +232,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;
}
@@ -322,17 +321,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());
}
}
}