mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-19 13:03:36 +00:00
[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:
@@ -15,6 +15,7 @@ import java.util.Comparator;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class LanguagesFragment extends BaseMwmRecyclerFragment<LanguagesAdapter>
|
public class LanguagesFragment extends BaseMwmRecyclerFragment<LanguagesAdapter>
|
||||||
@@ -40,7 +41,9 @@ public class LanguagesFragment extends BaseMwmRecyclerFragment<LanguagesAdapter>
|
|||||||
LocaleListCompat systemLocales = ConfigurationCompat.getLocales(config);
|
LocaleListCompat systemLocales = ConfigurationCompat.getLocales(config);
|
||||||
|
|
||||||
List<Language> languages = new ArrayList<>();
|
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))
|
for (Language lang : Editor.nativeGetSupportedLanguages(false))
|
||||||
{
|
{
|
||||||
@@ -49,7 +52,10 @@ public class LanguagesFragment extends BaseMwmRecyclerFragment<LanguagesAdapter>
|
|||||||
{
|
{
|
||||||
Locale locale = systemLocales.get(i);
|
Locale locale = systemLocales.get(i);
|
||||||
if (locale != null && locale.getLanguage().equals(lang.code))
|
if (locale != null && locale.getLanguage().equals(lang.code))
|
||||||
systemLanguages.add(lang);
|
{
|
||||||
|
systemLanguages.add(i, lang);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (existingLanguages.contains(lang.code) || systemLanguages.contains(lang))
|
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));
|
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()]));
|
return new LanguagesAdapter(this, languages.toArray(new Language[languages.size()]));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user