sort list of secondary locales and don't show main locale

This commit is contained in:
Helium 2022-03-22 22:31:09 +01:00
parent 623a8076b6
commit c7cab814ca

View file

@ -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<String> 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<String> getAvailableDictionaryLocales(String mainLocale, boolean asciiCapable) {
final Locale mainL = LocaleUtils.constructLocaleFromString(mainLocale);
final Set<String> locales = new HashSet<>();
final Set<String> locales = new TreeSet<>();
final int mainScript;
if (asciiCapable)
mainScript = ScriptUtils.SCRIPT_LATIN;