From d507129d2443c798066edec5f6f7addc46b17d5b Mon Sep 17 00:00:00 2001 From: vegeta1k95 <32207817+vegeta1k95@users.noreply.github.com> Date: Sun, 5 Feb 2023 08:29:59 +0100 Subject: [PATCH] LanguagePickerScreen sorting: English > system lang > percent complete (#8584) Co-authored-by: tunerzinc@gmail.com --- core/src/com/unciv/ui/utils/LanguageTable.kt | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/core/src/com/unciv/ui/utils/LanguageTable.kt b/core/src/com/unciv/ui/utils/LanguageTable.kt index a905238615..9446124dbd 100644 --- a/core/src/com/unciv/ui/utils/LanguageTable.kt +++ b/core/src/com/unciv/ui/utils/LanguageTable.kt @@ -9,6 +9,10 @@ import com.unciv.ui.civilopedia.MarkupRenderer import com.unciv.ui.images.ImageGetter import com.unciv.ui.utils.extensions.darken import com.unciv.ui.utils.extensions.toLabel +import com.unciv.utils.Log +import java.util.* +import kotlin.Comparator +import kotlin.collections.ArrayList /** Represents a row in the Language picker, used both in OptionsPopup and in LanguagePickerScreen */ internal class LanguageTable(val language:String, val percentComplete: Int): Table(){ @@ -56,11 +60,23 @@ internal class LanguageTable(val language:String, val percentComplete: Int): Tab tableLanguages.defaults().pad(10.0f) tableLanguages.defaults().fillX() + val systemLanguage = Locale.getDefault().getDisplayLanguage(Locale.ENGLISH) + val languageCompletionPercentage = UncivGame.Current.translations .percentCompleteOfLanguages languageTables.addAll(languageCompletionPercentage .map { LanguageTable(it.key, if (it.key == Constants.english) 100 else it.value) } - .sortedByDescending { it.percentComplete} ) + .sortedWith { p0, p1 -> + when { + p0.language == Constants.english -> -1 + p1.language == Constants.english -> 1 + p0.language == systemLanguage -> -1 + p1.language == systemLanguage -> 1 + p0.percentComplete > p1.percentComplete -> -1 + p0.percentComplete == p1.percentComplete -> 0 + else -> 1 + } + }) languageTables.forEach { tableLanguages.add(it).row()