From c7cab814ca27056fd25fd23e1d6f72b6f4d9adcd Mon Sep 17 00:00:00 2001 From: Helium Date: Tue, 22 Mar 2022 22:31:09 +0100 Subject: [PATCH] sort list of secondary locales and don't show main locale --- .../settings/SecondaryLocaleSettingsFragment.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SecondaryLocaleSettingsFragment.java b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SecondaryLocaleSettingsFragment.java index 7faf0cdb3..14e5ea81c 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SecondaryLocaleSettingsFragment.java +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/settings/SecondaryLocaleSettingsFragment.java @@ -38,6 +38,7 @@ import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Set; +import java.util.TreeSet; public final class SecondaryLocaleSettingsFragment extends SubScreenFragment { private RichInputMethodManager mRichImm; @@ -78,6 +79,14 @@ public final class SecondaryLocaleSettingsFragment extends SubScreenFragment { private void showSecondaryLocaleDialog(String mainLocale, boolean asciiCapable) { final List locales = new ArrayList<>(getAvailableDictionaryLocales(mainLocale, asciiCapable)); + + // we don't want to offer mainLocale as a choice, same goes for the language (e.g. en for en_GB) + locales.remove(mainLocale); + if (mainLocale.contains("_")) { + final String mainLanguage = LocaleUtils.constructLocaleFromString(mainLocale).getLanguage(); + locales.remove(mainLanguage); + } + final AlertDialog.Builder builder = new AlertDialog.Builder( DialogUtils.getPlatformDialogThemeContext(getActivity())) .setTitle(R.string.language_selection_title) @@ -96,7 +105,7 @@ public final class SecondaryLocaleSettingsFragment extends SubScreenFragment { final CharSequence[] titles = locales.toArray(new CharSequence[0]); for (int i = 0; i < titles.length - 1 ; i++) { final Locale loc = LocaleUtils.constructLocaleFromString(titles[i].toString()); - titles[i] = loc.getDisplayLanguage(displayLocale); + titles[i] = loc.getDisplayName(displayLocale); } Locale currentSecondaryLocale = Settings.getSecondaryLocale(getSharedPreferences(), mainLocale); @@ -136,7 +145,7 @@ public final class SecondaryLocaleSettingsFragment extends SubScreenFragment { // get locales with same script as main locale, but different language private Set getAvailableDictionaryLocales(String mainLocale, boolean asciiCapable) { final Locale mainL = LocaleUtils.constructLocaleFromString(mainLocale); - final Set locales = new HashSet<>(); + final Set locales = new TreeSet<>(); final int mainScript; if (asciiCapable) mainScript = ScriptUtils.SCRIPT_LATIN;