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

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

Merge "Add explicit "use system language" TTS language."

parents eab58139 098b4a7e
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -3887,6 +3887,8 @@

    <!-- On main TTS Settings screen, in default settings section, setting default language for synthesized voice -->
    <string name="tts_default_lang_title">Language</string>
    <!-- Entry in the TTS engine language/locale picker, when selected will try to default to the system language [CHAR LIMIT=50] -->
    <string name="tts_lang_use_system">Use system language</string>
    <!-- On main TTS Settings screen, language summary if it can't default to system language [CHAR LIMIT=50] -->
    <string name="tts_lang_not_selected">Language not selected</string>
    <!-- On main TTS Settings screen, summary for default language for synthesized voice -->
+21 −22
Original line number Diff line number Diff line
@@ -68,7 +68,6 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
    private TextToSpeech mTts;

    private int mSelectedLocaleIndex = -1;
    private int mSystemLocaleIndex = -1;

    private final TextToSpeech.OnInitListener mTtsInitListener = new TextToSpeech.OnInitListener() {
        @Override
@@ -234,8 +233,10 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
            mLocalePreference.setEnabled(false);
            return;
        }
        String currentLocale = mEnginesHelper.getLocalePrefForEngine(
                getEngineName());
        String currentLocale = "";
        if (!mEnginesHelper.isLocaleSetToDefaultForEngine(getEngineName())) {
            currentLocale = mEnginesHelper.getLocalePrefForEngine(getEngineName());
        }

        ArrayList<Pair<String, String>> entryPairs =
                new ArrayList<Pair<String, String>>(availableLangs.size());
@@ -264,21 +265,19 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
            }
        });

        String defaultLocaleStr = mEnginesHelper.getDefaultLocale();

        // Get two arrays out of one of pairs
        mSelectedLocaleIndex = -1;
        mSystemLocaleIndex = -1;
        CharSequence[] entries = new CharSequence[availableLangs.size()];
        CharSequence[] entryValues = new CharSequence[availableLangs.size()];
        int i = 0;
        mSelectedLocaleIndex = 0; // Will point to the R.string.tts_lang_use_system value
        CharSequence[] entries = new CharSequence[availableLangs.size()+1];
        CharSequence[] entryValues = new CharSequence[availableLangs.size()+1];

        entries[0] = getActivity().getString(R.string.tts_lang_use_system);
        entryValues[0] = "";

        int i = 1;
        for (Pair<String, String> entry : entryPairs) {
            if (entry.second.equalsIgnoreCase(currentLocale)) {
                mSelectedLocaleIndex = i;
            }
            if (entry.second.equalsIgnoreCase(defaultLocaleStr)) {
                mSystemLocaleIndex = i;
            }
            entries[i] = entry.first;
            entryValues[i++] = entry.second;
        }
@@ -355,18 +354,18 @@ public class TtsEngineSettingsFragment extends SettingsPreferenceFragment implem
        mLocalePreference.setSummary(mLocalePreference.getEntries()[selectedLocaleIndex]);
        mSelectedLocaleIndex = selectedLocaleIndex;

        if (mSelectedLocaleIndex == mSystemLocaleIndex) {
            // Use empty locale, it will default to the system language
            mEnginesHelper.updateLocalePrefForEngine(getEngineName(), "");
        } else {
        mEnginesHelper.updateLocalePrefForEngine(getEngineName(), locale);
        }

        if (getEngineName().equals(mTts.getCurrentEngine())) {
            if (!locale.isEmpty()) {
                String[] localeArray = TtsEngines.parseLocalePref(locale);
                if (localeArray != null) {
                    mTts.setLanguage(new Locale(localeArray[0], localeArray[1], localeArray[2]));
                }
            } else {
                // Empty locale means "use system default"
                mTts.setLanguage(Locale.getDefault());
            }
        }
    }