Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ccd80ec9 authored by Przemyslaw Szczepaniak's avatar Przemyslaw Szczepaniak Committed by Android (Google) Code Review
Browse files

Fix for setting TTS language to recently downloaded one

If user added new voice pack, then set it as a default language,
went level back and went to TTS settings again, it ended in crash.

This is because first updateVoiceDetails uses old voice data details
that settings retreived long time ago.

locales preference is hidden until TTs engine returns list of locales.

Change-Id: I33a81ff259c69adb4c051ee693b6c41b93f302d0
parent 1c7d15e8
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -19,16 +19,19 @@
        android:key="tts_default_lang"
        android:title="@string/tts_default_lang_title"
        android:summary="@string/tts_default_lang_summary"
        android:persistent="false" />
        android:persistent="false"
        android:order="100" />

    <Preference
        android:key="tts_engine_settings"
        android:persistent="false"
        android:title="@string/tts_engine_settings_title" />
        android:title="@string/tts_engine_settings_title"
        android:order="200" />

    <Preference
        android:key="tts_install_data"
        android:persistent="false"
        android:title="@string/tts_install_data_title"
        android:summary="@string/tts_install_data_summary" />
        android:summary="@string/tts_install_data_summary"
        android:order="300" />
</PreferenceScreen>
+8 −9
Original line number Diff line number Diff line
@@ -104,7 +104,8 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
        mInstallVoicesPreference.setOnPreferenceClickListener(this);
        // Remove this preference unless voices are indeed available to install.
        root.removePreference(mInstallVoicesPreference);

        // Remove this preference unless locales are indeed available.
        root.removePreference(mLocalePreference);

        root.setTitle(getEngineLabel());
        root.setKey(getEngineName());
@@ -121,8 +122,6 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem

        mVoiceDataDetails = getArguments().getParcelable(TtsEnginePreference.FRAGMENT_ARGS_VOICES);

        updateVoiceDetails();

        mTts = new TextToSpeech(getActivity().getApplicationContext(), mTtsInitListener,
                getEngineName());

@@ -169,9 +168,8 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem

        if (available == null){
            Log.e(TAG, "TTS data check failed (available == null).");
            final CharSequence[] empty = new CharSequence[0];
            mLocalePreference.setEntries(empty);
            mLocalePreference.setEntryValues(empty);
            mLocalePreference.setEnabled(false);
            getPreferenceScreen().removePreference(mLocalePreference);
            return;
        }

@@ -183,11 +181,12 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
        }

        if (available.size() > 0) {
            mLocalePreference.setEnabled(true);
            getPreferenceScreen().addPreference(mLocalePreference);
            updateDefaultLocalePref(available);
        } else {
            final CharSequence[] empty = new CharSequence[0];
            mLocalePreference.setEntries(empty);
            mLocalePreference.setEntryValues(empty);
            mLocalePreference.setEnabled(false);
            getPreferenceScreen().removePreference(mLocalePreference);
        }
    }