From fd6bc6ec36a93d54ca659dbd52c19974875f7c91 Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Thu, 6 Mar 2025 21:15:29 +0200 Subject: [PATCH] refactor(YouTube): Sort no title preference group by first sub preference title --- .../preference/NoTitlePreferenceCategory.java | 22 ++++++++++++++++++- .../spoofappversion/SpoofAppVersionPatch.kt | 4 +--- .../youtube/layout/theme/ThemePatch.kt | 3 +-- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/NoTitlePreferenceCategory.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/NoTitlePreferenceCategory.java index 2c94c54a3..73255b028 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/NoTitlePreferenceCategory.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/settings/preference/NoTitlePreferenceCategory.java @@ -12,6 +12,7 @@ import android.view.ViewGroup; */ @SuppressWarnings({"unused", "deprecation"}) public class NoTitlePreferenceCategory extends PreferenceCategory { + public NoTitlePreferenceCategory(Context context, AttributeSet attrs) { super(context, attrs); } @@ -27,8 +28,27 @@ public class NoTitlePreferenceCategory extends PreferenceCategory { @Override @SuppressLint("MissingSuperCall") protected View onCreateView(ViewGroup parent) { - // Return an empty, zero-height view to eliminate spacing + // Return an zero-height view to eliminate empty title space. return new View(getContext()); } + + @Override + public CharSequence getTitle() { + // Title can be used for sorting. Return the first sub preference title. + if (getPreferenceCount() > 0) { + return getPreference(0).getTitle(); + } + + return super.getTitle(); + } + + @Override + public int getTitleRes() { + if (getPreferenceCount() > 0) { + return getPreference(0).getTitleRes(); + } + + return super.getTitleRes(); + } } diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/spoofappversion/SpoofAppVersionPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/spoofappversion/SpoofAppVersionPatch.kt index 6ce2982a1..0deffb506 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/spoofappversion/SpoofAppVersionPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/spoofappversion/SpoofAppVersionPatch.kt @@ -76,9 +76,7 @@ val spoofAppVersionPatch = bytecodePatch( // Group the switch and list preference together, since General menu is sorted by name // and the preferences can be scattered apart with non English langauges. PreferenceCategory( - key = null, - // The title does not show, but is used for sorting the group. - titleKey = "revanced_spoof_app_version_title", + titleKey = null, sorting = Sorting.UNSORTED, tag = "app.revanced.extension.shared.settings.preference.NoTitlePreferenceCategory", preferences = setOf( diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/theme/ThemePatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/theme/ThemePatch.kt index f99053c80..8945bc5e1 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/theme/ThemePatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/theme/ThemePatch.kt @@ -101,8 +101,7 @@ val themePatch = bytecodePatch( PreferenceScreen.SEEKBAR.addPreferences( PreferenceCategory( - // Title is hidden, but is used for sorting the group. - titleKey = "revanced_seekbar_custom_color_title", + titleKey = null, sorting = Sorting.UNSORTED, tag = "app.revanced.extension.shared.settings.preference.NoTitlePreferenceCategory", preferences = preferences