Expose "default tts locale" to the TTS V2 API.
Accommodate for the changes in frameworks/base. TtsEngines now uses Locale objects for setting/getting the default locale for TTS engines. Change-Id: I518ace8d16d17b2c36a62e4e9d14a3568a38f68e
This commit is contained in:
@@ -233,34 +233,25 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
|
|||||||
mLocalePreference.setEnabled(false);
|
mLocalePreference.setEnabled(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String currentLocale = "";
|
Locale currentLocale = null;
|
||||||
if (!mEnginesHelper.isLocaleSetToDefaultForEngine(getEngineName())) {
|
if (!mEnginesHelper.isLocaleSetToDefaultForEngine(getEngineName())) {
|
||||||
currentLocale = mEnginesHelper.getLocalePrefForEngine(getEngineName());
|
currentLocale = mEnginesHelper.getLocalePrefForEngine(getEngineName());
|
||||||
}
|
}
|
||||||
|
|
||||||
ArrayList<Pair<String, String>> entryPairs =
|
ArrayList<Pair<String, Locale>> entryPairs =
|
||||||
new ArrayList<Pair<String, String>>(availableLangs.size());
|
new ArrayList<Pair<String, Locale>>(availableLangs.size());
|
||||||
for (int i = 0; i < availableLangs.size(); i++) {
|
for (int i = 0; i < availableLangs.size(); i++) {
|
||||||
String[] langCountryVariant = availableLangs.get(i).split("-");
|
Locale locale = mEnginesHelper.parseLocaleString(availableLangs.get(i));
|
||||||
Locale loc = null;
|
if (locale != null){
|
||||||
if (langCountryVariant.length == 1){
|
entryPairs.add(new Pair<String, Locale>(
|
||||||
loc = new Locale(langCountryVariant[0]);
|
locale.getDisplayName(), locale));
|
||||||
} else if (langCountryVariant.length == 2){
|
|
||||||
loc = new Locale(langCountryVariant[0], langCountryVariant[1]);
|
|
||||||
} else if (langCountryVariant.length == 3){
|
|
||||||
loc = new Locale(langCountryVariant[0], langCountryVariant[1],
|
|
||||||
langCountryVariant[2]);
|
|
||||||
}
|
|
||||||
if (loc != null){
|
|
||||||
entryPairs.add(new Pair<String, String>(
|
|
||||||
loc.getDisplayName(), availableLangs.get(i)));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sort it
|
// Sort it
|
||||||
Collections.sort(entryPairs, new Comparator<Pair<String, String>>() {
|
Collections.sort(entryPairs, new Comparator<Pair<String, Locale>>() {
|
||||||
@Override
|
@Override
|
||||||
public int compare(Pair<String, String> lhs, Pair<String, String> rhs) {
|
public int compare(Pair<String, Locale> lhs, Pair<String, Locale> rhs) {
|
||||||
return lhs.first.compareToIgnoreCase(rhs.first);
|
return lhs.first.compareToIgnoreCase(rhs.first);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -274,12 +265,12 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
|
|||||||
entryValues[0] = "";
|
entryValues[0] = "";
|
||||||
|
|
||||||
int i = 1;
|
int i = 1;
|
||||||
for (Pair<String, String> entry : entryPairs) {
|
for (Pair<String, Locale> entry : entryPairs) {
|
||||||
if (entry.second.equalsIgnoreCase(currentLocale)) {
|
if (entry.second.equals(currentLocale)) {
|
||||||
mSelectedLocaleIndex = i;
|
mSelectedLocaleIndex = i;
|
||||||
}
|
}
|
||||||
entries[i] = entry.first;
|
entries[i] = entry.first;
|
||||||
entryValues[i++] = entry.second;
|
entryValues[i++] = entry.second.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
mLocalePreference.setEntries(entries);
|
mLocalePreference.setEntries(entries);
|
||||||
@@ -332,16 +323,19 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
|
|||||||
@Override
|
@Override
|
||||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||||
if (preference == mLocalePreference) {
|
if (preference == mLocalePreference) {
|
||||||
updateLanguageTo((String) newValue);
|
String localeString = (String) newValue;
|
||||||
|
updateLanguageTo((!TextUtils.isEmpty(localeString) ?
|
||||||
|
mEnginesHelper.parseLocaleString(localeString) : null));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateLanguageTo(String locale) {
|
private void updateLanguageTo(Locale locale) {
|
||||||
int selectedLocaleIndex = -1;
|
int selectedLocaleIndex = -1;
|
||||||
|
String localeString = (locale != null) ? locale.toString() : "";
|
||||||
for (int i=0; i < mLocalePreference.getEntryValues().length; i++) {
|
for (int i=0; i < mLocalePreference.getEntryValues().length; i++) {
|
||||||
if (locale.equalsIgnoreCase(mLocalePreference.getEntryValues()[i].toString())) {
|
if (localeString.equalsIgnoreCase(mLocalePreference.getEntryValues()[i].toString())) {
|
||||||
selectedLocaleIndex = i;
|
selectedLocaleIndex = i;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -357,15 +351,8 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
|
|||||||
mEnginesHelper.updateLocalePrefForEngine(getEngineName(), locale);
|
mEnginesHelper.updateLocalePrefForEngine(getEngineName(), locale);
|
||||||
|
|
||||||
if (getEngineName().equals(mTts.getCurrentEngine())) {
|
if (getEngineName().equals(mTts.getCurrentEngine())) {
|
||||||
if (!locale.isEmpty()) {
|
// Null locale means "use system default"
|
||||||
String[] localeArray = TtsEngines.parseLocalePref(locale);
|
mTts.setLanguage((locale != null) ? locale : Locale.getDefault());
|
||||||
if (localeArray != null) {
|
|
||||||
mTts.setLanguage(new Locale(localeArray[0], localeArray[1], localeArray[2]));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Empty locale means "use system default"
|
|
||||||
mTts.setLanguage(Locale.getDefault());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user