Preserve list of available TTS locales on rotation.

Bug: 13637881
Change-Id: I966005ec34b3f9f1a1354104cae119678c9b3fc4
This commit is contained in:
Przemyslaw Szczepaniak
2014-05-12 13:48:33 +01:00
parent 55638cb6c6
commit 1cb159a739

View File

@@ -52,6 +52,10 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
private static final String KEY_ENGINE_SETTINGS = "tts_engine_settings";
private static final String KEY_INSTALL_DATA = "tts_install_data";
private static final String STATE_KEY_LOCALE_ENTRIES = "locale_entries";
private static final String STATE_KEY_LOCALE_ENTRY_VALUES= "locale_entry_values";
private static final String STATE_KEY_LOCALE_VALUE = "locale_value";
private static final int VOICE_DATA_INTEGRITY_CHECK = 1977;
private TtsEngines mEnginesHelper;
@@ -120,10 +124,26 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
mEngineSettingsPreference.setEnabled(false);
}
mInstallVoicesPreference.setEnabled(false);
mLocalePreference.setEnabled(false);
mLocalePreference.setEntries(new CharSequence[0]);
mLocalePreference.setEntryValues(new CharSequence[0]);
if (savedInstanceState == null) {
mLocalePreference.setEnabled(false);
mLocalePreference.setEntries(new CharSequence[0]);
mLocalePreference.setEntryValues(new CharSequence[0]);
} else {
// Repopulate mLocalePreference with saved state. Will be updated later with
// up-to-date values when checkTtsData() calls back with results.
final CharSequence[] entries =
savedInstanceState.getCharSequenceArray(STATE_KEY_LOCALE_ENTRIES);
final CharSequence[] entryValues =
savedInstanceState.getCharSequenceArray(STATE_KEY_LOCALE_ENTRY_VALUES);
final CharSequence value =
savedInstanceState.getCharSequence(STATE_KEY_LOCALE_VALUE);
mLocalePreference.setEntries(entries);
mLocalePreference.setEntryValues(entryValues);
mLocalePreference.setValue(value.toString());
mLocalePreference.setEnabled(entries.length > 0);
}
mVoiceDataDetails = getArguments().getParcelable(TtsEnginePreference.FRAGMENT_ARGS_VOICES);
@@ -144,6 +164,19 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
super.onDestroy();
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// Save the mLocalePreference values, so we can repopulate it with entries.
outState.putCharSequenceArray(STATE_KEY_LOCALE_ENTRIES,
mLocalePreference.getEntries());
outState.putCharSequenceArray(STATE_KEY_LOCALE_ENTRY_VALUES,
mLocalePreference.getEntryValues());
outState.putCharSequence(STATE_KEY_LOCALE_VALUE,
mLocalePreference.getValue());
}
private final void checkTtsData() {
Intent intent = new Intent(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
intent.setPackage(getEngineName());