Preserve list of available TTS locales on rotation.
Bug: 13637881 Change-Id: I966005ec34b3f9f1a1354104cae119678c9b3fc4
This commit is contained in:
@@ -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_ENGINE_SETTINGS = "tts_engine_settings";
|
||||||
private static final String KEY_INSTALL_DATA = "tts_install_data";
|
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 static final int VOICE_DATA_INTEGRITY_CHECK = 1977;
|
||||||
|
|
||||||
private TtsEngines mEnginesHelper;
|
private TtsEngines mEnginesHelper;
|
||||||
@@ -120,10 +124,26 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
|
|||||||
mEngineSettingsPreference.setEnabled(false);
|
mEngineSettingsPreference.setEnabled(false);
|
||||||
}
|
}
|
||||||
mInstallVoicesPreference.setEnabled(false);
|
mInstallVoicesPreference.setEnabled(false);
|
||||||
mLocalePreference.setEnabled(false);
|
|
||||||
|
|
||||||
mLocalePreference.setEntries(new CharSequence[0]);
|
if (savedInstanceState == null) {
|
||||||
mLocalePreference.setEntryValues(new CharSequence[0]);
|
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);
|
mVoiceDataDetails = getArguments().getParcelable(TtsEnginePreference.FRAGMENT_ARGS_VOICES);
|
||||||
|
|
||||||
@@ -144,6 +164,19 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
|
|||||||
super.onDestroy();
|
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() {
|
private final void checkTtsData() {
|
||||||
Intent intent = new Intent(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
|
Intent intent = new Intent(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
|
||||||
intent.setPackage(getEngineName());
|
intent.setPackage(getEngineName());
|
||||||
|
Reference in New Issue
Block a user