mirror of
https://github.com/inotia00/revanced-patches.git
synced 2025-06-12 21:27:43 +02:00
refactor(music/settings): improve UI
This commit is contained in:
@ -1,7 +1,11 @@
|
||||
package app.revanced.util.enum
|
||||
|
||||
internal enum class CategoryType(val value: String) {
|
||||
ADS("ads"),
|
||||
LAYOUT("layout"),
|
||||
MISC("misc")
|
||||
internal enum class CategoryType(val value: String, var added: Boolean) {
|
||||
ADS("ads", false),
|
||||
BUTTON_CONTAINER("button_container", false),
|
||||
FLYOUT("flyout", false),
|
||||
GENERAL("general", false),
|
||||
MISC("misc", false),
|
||||
NAVIGATION("navigation", false),
|
||||
PLAYER("player", false)
|
||||
}
|
@ -6,7 +6,6 @@ internal object Constants {
|
||||
|
||||
const val ADS_PATH = "$PATCHES_PATH/ads"
|
||||
const val SWIPE_PATH = "$PATCHES_PATH/swipe"
|
||||
const val BOTTOM_PLAYER = "$PATCHES_PATH/layout/BottomPlayerPatch;"
|
||||
const val FLYOUT_PANEL = "$PATCHES_PATH/layout/FlyoutPanelPatch;"
|
||||
const val FULLSCREEN = "$PATCHES_PATH/layout/FullscreenPatch;"
|
||||
const val GENERAL = "$PATCHES_PATH/layout/GeneralPatch;"
|
||||
@ -23,7 +22,11 @@ internal object Constants {
|
||||
private const val MUSIC_PATCHES_PATH = "$MUSIC_INTEGRATIONS_PATH/patches"
|
||||
|
||||
const val MUSIC_ADS_PATH = "$MUSIC_PATCHES_PATH/ads"
|
||||
const val MUSIC_LAYOUT = "$MUSIC_PATCHES_PATH/layout/LayoutPatch;"
|
||||
const val MUSIC_BUTTON_CONTAINER = "$MUSIC_PATCHES_PATH/buttoncontainer/ButtonContainerPatch;"
|
||||
const val MUSIC_FLYOUT = "$MUSIC_PATCHES_PATH/flyout/FlyoutPatch;"
|
||||
const val MUSIC_GENERAL = "$MUSIC_PATCHES_PATH/general/GeneralPatch;"
|
||||
const val MUSIC_MISC_PATH = "$MUSIC_PATCHES_PATH/misc"
|
||||
const val MUSIC_NAVIGATION = "$MUSIC_PATCHES_PATH/navigation/NavigationPatch;"
|
||||
const val MUSIC_PLAYER = "$MUSIC_PATCHES_PATH/player/PlayerPatch;"
|
||||
const val MUSIC_UTILS_PATH = "$MUSIC_PATCHES_PATH/utils"
|
||||
}
|
@ -2,6 +2,7 @@ package app.revanced.util.resources
|
||||
|
||||
import app.revanced.extensions.doRecursively
|
||||
import app.revanced.patcher.data.ResourceContext
|
||||
import app.revanced.util.enum.CategoryType
|
||||
import org.w3c.dom.Element
|
||||
import org.w3c.dom.Node
|
||||
|
||||
@ -26,12 +27,12 @@ private fun Node.insertNode(tagName: String, targetNode: Node, block: Element.()
|
||||
|
||||
internal object MusicResourceHelper {
|
||||
|
||||
private const val YOUTUBE_MUSIC_SETTINGS_PATH = "res/xml/settings_headers.xml"
|
||||
internal const val YOUTUBE_MUSIC_SETTINGS_PATH = "res/xml/settings_headers.xml"
|
||||
|
||||
private const val YOUTUBE_MUSIC_SETTINGS_KEY = "revanced_extended_settings"
|
||||
internal const val YOUTUBE_MUSIC_SETTINGS_KEY = "revanced_extended_settings"
|
||||
|
||||
private const val YOUTUBE_MUSIC_CATEGORY_TAG_NAME =
|
||||
"com.google.android.apps.youtube.music.ui.preference.PreferenceCategoryCompat"
|
||||
private const val YOUTUBE_MUSIC_PREFERENCE_SCREEN_TAG_NAME =
|
||||
"PreferenceScreen"
|
||||
|
||||
private const val YOUTUBE_MUSIC_PREFERENCE_TAG_NAME =
|
||||
"com.google.android.apps.youtube.music.ui.preference.SwitchCompatPreference"
|
||||
@ -39,8 +40,6 @@ internal object MusicResourceHelper {
|
||||
private const val YOUTUBE_MUSIC_PREFERENCE_TARGET_CLASS =
|
||||
"com.google.android.libraries.strictmode.penalties.notification.FullStackTraceActivity"
|
||||
|
||||
private var currentMusicPreferenceCategory = emptyArray<String>()
|
||||
|
||||
private var targetPackage = "com.google.android.apps.youtube.music"
|
||||
|
||||
internal fun ResourceContext.setMicroG(newPackage: String) {
|
||||
@ -49,7 +48,18 @@ internal object MusicResourceHelper {
|
||||
}
|
||||
|
||||
private fun setMusicPreferenceCategory(newCategory: String) {
|
||||
currentMusicPreferenceCategory += listOf(newCategory)
|
||||
CategoryType.entries.forEach { preference ->
|
||||
if (newCategory == preference.value)
|
||||
preference.added = true
|
||||
}
|
||||
}
|
||||
|
||||
private fun included(category: String): Boolean {
|
||||
CategoryType.entries.forEach { preference ->
|
||||
if (category == preference.value)
|
||||
return preference.added
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
internal fun ResourceContext.addMusicPreferenceCategory(
|
||||
@ -60,8 +70,8 @@ internal object MusicResourceHelper {
|
||||
List(tags.length) { tags.item(it) as Element }
|
||||
.filter { it.getAttribute("android:key").contains(YOUTUBE_MUSIC_SETTINGS_KEY) }
|
||||
.forEach {
|
||||
if (!currentMusicPreferenceCategory.contains(category)) {
|
||||
it.adoptChild(YOUTUBE_MUSIC_CATEGORY_TAG_NAME) {
|
||||
if (!included(category)) {
|
||||
it.adoptChild(YOUTUBE_MUSIC_PREFERENCE_SCREEN_TAG_NAME) {
|
||||
setAttribute("android:title", "@string/revanced_category_$category")
|
||||
setAttribute("android:key", "revanced_settings_$category")
|
||||
}
|
||||
@ -101,7 +111,7 @@ internal object MusicResourceHelper {
|
||||
defaultValue: String
|
||||
) {
|
||||
this.xmlEditor[YOUTUBE_MUSIC_SETTINGS_PATH].use { editor ->
|
||||
val tags = editor.file.getElementsByTagName(YOUTUBE_MUSIC_CATEGORY_TAG_NAME)
|
||||
val tags = editor.file.getElementsByTagName(YOUTUBE_MUSIC_PREFERENCE_SCREEN_TAG_NAME)
|
||||
List(tags.length) { tags.item(it) as Element }
|
||||
.filter { it.getAttribute("android:key").contains("revanced_settings_$category") }
|
||||
.forEach {
|
||||
@ -121,7 +131,7 @@ internal object MusicResourceHelper {
|
||||
dependencyKey: String
|
||||
) {
|
||||
this.xmlEditor[YOUTUBE_MUSIC_SETTINGS_PATH].use { editor ->
|
||||
val tags = editor.file.getElementsByTagName(YOUTUBE_MUSIC_CATEGORY_TAG_NAME)
|
||||
val tags = editor.file.getElementsByTagName(YOUTUBE_MUSIC_PREFERENCE_SCREEN_TAG_NAME)
|
||||
List(tags.length) { tags.item(it) as Element }
|
||||
.filter { it.getAttribute("android:key").contains("revanced_settings_$category") }
|
||||
.forEach {
|
||||
@ -143,7 +153,28 @@ internal object MusicResourceHelper {
|
||||
}
|
||||
}
|
||||
|
||||
internal fun ResourceContext.addReVancedMusicPreference() {
|
||||
internal fun ResourceContext.addMusicPreferenceWithoutSummary(
|
||||
category: String,
|
||||
key: String,
|
||||
defaultValue: String
|
||||
) {
|
||||
this.xmlEditor[YOUTUBE_MUSIC_SETTINGS_PATH].use { editor ->
|
||||
val tags = editor.file.getElementsByTagName(YOUTUBE_MUSIC_PREFERENCE_SCREEN_TAG_NAME)
|
||||
List(tags.length) { tags.item(it) as Element }
|
||||
.filter { it.getAttribute("android:key").contains("revanced_settings_$category") }
|
||||
.forEach {
|
||||
it.adoptChild(YOUTUBE_MUSIC_PREFERENCE_TAG_NAME) {
|
||||
setAttribute("android:title", "@string/$key" + "_title")
|
||||
setAttribute("android:key", key)
|
||||
setAttribute("android:defaultValue", defaultValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal fun ResourceContext.addReVancedMusicPreference(
|
||||
key: String
|
||||
) {
|
||||
this.xmlEditor[YOUTUBE_MUSIC_SETTINGS_PATH].use { editor ->
|
||||
with(editor.file) {
|
||||
doRecursively loop@{
|
||||
@ -156,9 +187,11 @@ internal object MusicResourceHelper {
|
||||
it.insertNode("PreferenceScreen", it) {
|
||||
setAttribute(
|
||||
"android:title",
|
||||
"@string/" + YOUTUBE_MUSIC_SETTINGS_KEY + "_title"
|
||||
"@string/" + key + "_title"
|
||||
)
|
||||
setAttribute("android:key", YOUTUBE_MUSIC_SETTINGS_KEY)
|
||||
setAttribute("android:key", key)
|
||||
setAttribute("app:allowDividerAbove", "false")
|
||||
setAttribute("app:allowDividerAbove", "false")
|
||||
}
|
||||
it.getAttributeNode("app:allowDividerBelow").textContent = "true"
|
||||
return@loop
|
||||
|
Reference in New Issue
Block a user