Fix a bug in the TTS settings.
Non system engines that are explicitly enabled should show up in the "default engine" dropdown list. bug:4608012 Change-Id: Ic805ef6199319e44037a84ba43fc549de91d291d
This commit is contained in:
@@ -683,6 +683,8 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements
|
|||||||
|
|
||||||
private void loadEngines() {
|
private void loadEngines() {
|
||||||
List<EngineInfo> engines = mEnginesHelper.getEngines();
|
List<EngineInfo> engines = mEnginesHelper.getEngines();
|
||||||
|
updateUserEnabledEngines(engines);
|
||||||
|
|
||||||
ArrayList<CharSequence> entries = new ArrayList<CharSequence>();
|
ArrayList<CharSequence> entries = new ArrayList<CharSequence>();
|
||||||
ArrayList<CharSequence> values = new ArrayList<CharSequence>();
|
ArrayList<CharSequence> values = new ArrayList<CharSequence>();
|
||||||
StringBuilder enabledEngines = new StringBuilder();
|
StringBuilder enabledEngines = new StringBuilder();
|
||||||
@@ -692,12 +694,9 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements
|
|||||||
if (mEnginesHelper.isEngineEnabled(engine.name)) {
|
if (mEnginesHelper.isEngineEnabled(engine.name)) {
|
||||||
entries.add(engine.label);
|
entries.add(engine.label);
|
||||||
values.add(engine.name);
|
values.add(engine.name);
|
||||||
if (enabledEngines.length() > 0) enabledEngines.append(' ');
|
|
||||||
enabledEngines.append(engine.name);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ContentResolver resolver = getContentResolver();
|
|
||||||
Settings.Secure.putString(resolver, TTS_ENABLED_PLUGINS, enabledEngines.toString());
|
|
||||||
|
|
||||||
CharSequence entriesArray[] = new CharSequence[entries.size()];
|
CharSequence entriesArray[] = new CharSequence[entries.size()];
|
||||||
CharSequence valuesArray[] = new CharSequence[values.size()];
|
CharSequence valuesArray[] = new CharSequence[values.size()];
|
||||||
@@ -717,4 +716,26 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Write out the list of engines enabled by the user to a
|
||||||
|
* shared preference.
|
||||||
|
*/
|
||||||
|
private void updateUserEnabledEngines(List<EngineInfo> engines) {
|
||||||
|
StringBuilder enginesList = new StringBuilder();
|
||||||
|
for (EngineInfo engine : engines) {
|
||||||
|
if (isEngineUserEnabled(engine.name)) {
|
||||||
|
if (enginesList.length() > 0) enginesList.append(' ');
|
||||||
|
enginesList.append(engine.name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ContentResolver resolver = getContentResolver();
|
||||||
|
Settings.Secure.putString(resolver, TTS_ENABLED_PLUGINS, enginesList.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isEngineUserEnabled(String engineName) {
|
||||||
|
String enginePref = KEY_PLUGIN_ENABLED_PREFIX + engineName;
|
||||||
|
return getPreferenceManager().getSharedPreferences().getBoolean(enginePref, false);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user