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
diff --git a/src/com/android/settings/TextToSpeechSettings.java b/src/com/android/settings/TextToSpeechSettings.java
index 93613b7..34ce251 100644
--- a/src/com/android/settings/TextToSpeechSettings.java
+++ b/src/com/android/settings/TextToSpeechSettings.java
@@ -683,6 +683,8 @@
 
     private void loadEngines() {
         List<EngineInfo> engines = mEnginesHelper.getEngines();
+        updateUserEnabledEngines(engines);
+
         ArrayList<CharSequence> entries = new ArrayList<CharSequence>();
         ArrayList<CharSequence> values = new ArrayList<CharSequence>();
         StringBuilder enabledEngines = new StringBuilder();
@@ -692,12 +694,9 @@
             if (mEnginesHelper.isEngineEnabled(engine.name)) {
                 entries.add(engine.label);
                 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 valuesArray[] = new CharSequence[values.size()];
@@ -717,4 +716,26 @@
         }
     }
 
+    /*
+     * 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);
+    }
+
 }