From 9561db50a82b0eeed07fe6541bc29a37f85b7caa Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Sat, 18 Nov 2023 04:55:19 +0100 Subject: [PATCH] feat(YouTube - Settings): Sort preference screens below other types of preference --- .../settings/util/AbstractPreferenceScreen.kt | 36 +++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/src/main/kotlin/app/revanced/patches/shared/settings/util/AbstractPreferenceScreen.kt b/src/main/kotlin/app/revanced/patches/shared/settings/util/AbstractPreferenceScreen.kt index 1c38980b..c1148841 100644 --- a/src/main/kotlin/app/revanced/patches/shared/settings/util/AbstractPreferenceScreen.kt +++ b/src/main/kotlin/app/revanced/patches/shared/settings/util/AbstractPreferenceScreen.kt @@ -32,21 +32,29 @@ abstract class AbstractPreferenceScreen( preferences: MutableList = mutableListOf(), val categories: MutableList = mutableListOf() ) : BasePreferenceCollection(key, title, preferences) { - override fun transform(): PreferenceScreen { - return PreferenceScreen( - key, - StringResource("${key}_title", title), - preferences.sortedBy { it.title.value.removePunctuation().lowercase() } + - categories.sortedBy { it.title.removePunctuation().lowercase() }.map { it.transform() }, - summary?.let { summary -> - StringResource("${key}_summary", summary) - } - ) - } + override fun transform() = PreferenceScreen( + key, + StringResource( + "${key}_title", title + ), + preferences.sortedWith( + compareBy( + { it is PreferenceScreen }, + { it.title.value.removePunctuation().lowercase() } + ) + ) + categories.sortedBy { + it.title.removePunctuation().lowercase() + }.map { + it.transform() + }, + summary?.let { summary -> + StringResource("${key}_summary", summary) + } + ) private fun ensureScreenInserted() { // Add to screens if not yet done - if(!this@AbstractPreferenceScreen.root.contains(this)) + if (!this@AbstractPreferenceScreen.root.contains(this)) this@AbstractPreferenceScreen.root.add(this) } @@ -59,7 +67,7 @@ abstract class AbstractPreferenceScreen( key: String, title: String, preferences: MutableList = mutableListOf() - ): BasePreferenceCollection(key, title, preferences) { + ) : BasePreferenceCollection(key, title, preferences) { override fun transform(): PreferenceCategory { return PreferenceCategory( key, @@ -72,7 +80,7 @@ abstract class AbstractPreferenceScreen( ensureScreenInserted() // Add to categories if not yet done - if(!this@Screen.categories.contains(this)) + if (!this@Screen.categories.contains(this)) this@Screen.categories.add(this) this.preferences.addAll(preferences)