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

Commit eb306b4c authored by Przemyslaw Szczepaniak's avatar Przemyslaw Szczepaniak
Browse files

Fix for empty "Listen to an example" string.

Because of bug in previous TTS related change (bugfix for hiding
"Play TTS sample" if default language is not supported), settings
stopped to call getSampleText() when it was established that current
default language is supported.

This change makes sure that getSampleText() is always called if language
is supported.

Bug: 10672535
Change-Id: I83bf7056e12ddbe2322b6a3f04552802037626aa
parent c184ed76
Loading
Loading
Loading
Loading
+28 −10
Original line number Diff line number Diff line
@@ -104,7 +104,17 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements
    private TtsEngines mEnginesHelper = null;

    private String mSampleText = "";

    /**
     * Default locale used by selected TTS engine, null if not connected to any engine.
     */
    private Locale mCurrentDefaultLocale;

    /**
     * List of available locals of selected TTS engine, as returned by
     * {@link TextToSpeech.Engine#ACTION_CHECK_TTS_DATA} activity. If empty, then activity
     * was not yet called.
     */
    private List<String> mAvailableStrLocals;

    /**
@@ -263,7 +273,9 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements
    }

    private boolean evaluateDefaultLocale() {
        if (mCurrentDefaultLocale == null) {
        // Check if we are connected to the engine, and CHECK_VOICE_DATA returned list
        // of available languages.
        if (mCurrentDefaultLocale == null || mAvailableStrLocals == null) {
            return false;
        }
        int defaultAvailable = mTts.setLanguage(mCurrentDefaultLocale);
@@ -277,18 +289,17 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements
        if (!TextUtils.isEmpty(mCurrentDefaultLocale.getVariant())) {
            defaultLocaleStr += "-" + mCurrentDefaultLocale.getVariant();
        }
        if (mAvailableStrLocals != null) {

        for (String loc : mAvailableStrLocals) {
            if (loc.equalsIgnoreCase(defaultLocaleStr)) {
              notInAvailableLangauges = false;
              break;
            }
        }
        }

        if (defaultAvailable == TextToSpeech.LANG_NOT_SUPPORTED ||
                defaultAvailable == TextToSpeech.LANG_MISSING_DATA ||
                mAvailableStrLocals == null || notInAvailableLangauges) {
                notInAvailableLangauges) {
            if (DBG) Log.d(TAG, "Default locale for this TTS engine is not supported.");
            updateEngineStatus(R.string.tts_status_not_supported);
            updateWidgetState(false);
@@ -558,7 +569,14 @@ public class TextToSpeechSettings extends SettingsPreferenceFragment implements

        mAvailableStrLocals = data.getStringArrayListExtra(
            TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES);
        evaluateDefaultLocale();
        if (mAvailableStrLocals == null) {
            Log.e(TAG, "Voice data check complete, but no available voices found");
            // Set mAvailableStrLocals to empty list
            mAvailableStrLocals = new ArrayList<String>();
        }
        if (evaluateDefaultLocale()) {
            getSampleText();
        }

        final int engineCount = mEnginePreferenceCategory.getPreferenceCount();
        for (int i = 0; i < engineCount; ++i) {