[android] Ensure correct system language order in map lang selection

Signed-off-by: gekeleda <git@davidgekeler.eu>
Co-authored-by: gekeleda <git@davidgekeler.eu>
Co-committed-by: gekeleda <git@davidgekeler.eu>
This commit is contained in:
gekeleda
2025-11-25 10:27:10 +01:00
committed by x7z4w
parent 2954b3b871
commit 2c37e22f5c

View File

@@ -15,6 +15,7 @@ import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Objects;
import java.util.Set;
public class LanguagesFragment extends BaseMwmRecyclerFragment<LanguagesAdapter>
@@ -40,7 +41,9 @@ public class LanguagesFragment extends BaseMwmRecyclerFragment<LanguagesAdapter>
LocaleListCompat systemLocales = ConfigurationCompat.getLocales(config);
List<Language> languages = new ArrayList<>();
List<Language> systemLanguages = new ArrayList<>();
List<Language> systemLanguages = new ArrayList<>(systemLocales.size());
for (int i = 0; i < systemLocales.size(); i++)
systemLanguages.add(null);
for (Language lang : Editor.nativeGetSupportedLanguages(false))
{
@@ -49,7 +52,10 @@ public class LanguagesFragment extends BaseMwmRecyclerFragment<LanguagesAdapter>
{
Locale locale = systemLocales.get(i);
if (locale != null && locale.getLanguage().equals(lang.code))
systemLanguages.add(lang);
{
systemLanguages.add(i, lang);
break;
}
}
if (existingLanguages.contains(lang.code) || systemLanguages.contains(lang))
@@ -60,7 +66,7 @@ public class LanguagesFragment extends BaseMwmRecyclerFragment<LanguagesAdapter>
Collections.sort(languages, Comparator.comparing(lhs -> lhs.name));
languages.addAll(0, systemLanguages);
languages.addAll(0, systemLanguages.stream().filter(Objects::nonNull).toList());
return new LanguagesAdapter(this, languages.toArray(new Language[languages.size()]));
}