From ae412c337b4ce58e6bdc202f6998da08de8691a5 Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Tue, 19 Dec 2023 17:27:44 +0900 Subject: [PATCH] feat(YouTube Music/Hide action bar component): add `Hide add to playlist button`, `Hide comment button`, `Hide download button`, `Hide share button` settings --- .../component/ActionBarComponentPatch.kt | 169 ++++++++++++++++++ .../ActionBarComponentFingerprint.kt | 21 +++ .../DownloadButtonHookPatch.kt | 40 ----- .../actionbar/label/ActionBarLabelPatch.kt | 77 -------- .../fingerprints/ActionBarLabelFingerprint.kt | 19 -- .../actionbar/radio/HideRadioButtonPatch.kt | 31 ---- .../utils/actionbarhook/ActionBarHookPatch.kt | 42 ----- .../fingerprints/ActionBarHookFingerprint.kt | 22 --- .../ActionsBarParentFingerprint.kt | 13 -- .../utils/resourceid/SharedResourceIdPatch.kt | 2 - .../music/settings/host/values/strings.xml | 20 ++- 11 files changed, 204 insertions(+), 252 deletions(-) create mode 100644 src/main/kotlin/app/revanced/patches/music/actionbar/component/ActionBarComponentPatch.kt create mode 100644 src/main/kotlin/app/revanced/patches/music/actionbar/component/fingerprints/ActionBarComponentFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/music/actionbar/downloadbuttonhook/DownloadButtonHookPatch.kt delete mode 100644 src/main/kotlin/app/revanced/patches/music/actionbar/label/ActionBarLabelPatch.kt delete mode 100644 src/main/kotlin/app/revanced/patches/music/actionbar/label/fingerprints/ActionBarLabelFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/music/actionbar/radio/HideRadioButtonPatch.kt delete mode 100644 src/main/kotlin/app/revanced/patches/music/utils/actionbarhook/ActionBarHookPatch.kt delete mode 100644 src/main/kotlin/app/revanced/patches/music/utils/actionbarhook/fingerprints/ActionBarHookFingerprint.kt delete mode 100644 src/main/kotlin/app/revanced/patches/music/utils/fingerprints/ActionsBarParentFingerprint.kt diff --git a/src/main/kotlin/app/revanced/patches/music/actionbar/component/ActionBarComponentPatch.kt b/src/main/kotlin/app/revanced/patches/music/actionbar/component/ActionBarComponentPatch.kt new file mode 100644 index 000000000..70aa12673 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/music/actionbar/component/ActionBarComponentPatch.kt @@ -0,0 +1,169 @@ +package app.revanced.patches.music.actionbar.component + +import app.revanced.patcher.data.BytecodeContext +import app.revanced.patcher.extensions.InstructionExtensions.addInstruction +import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels +import app.revanced.patcher.extensions.InstructionExtensions.getInstruction +import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction +import app.revanced.patcher.patch.BytecodePatch +import app.revanced.patcher.patch.annotation.CompatiblePackage +import app.revanced.patcher.patch.annotation.Patch +import app.revanced.patcher.util.smali.ExternalLabel +import app.revanced.patches.music.actionbar.component.fingerprints.ActionBarComponentFingerprint +import app.revanced.patches.music.utils.integrations.Constants.ACTIONBAR +import app.revanced.patches.music.utils.intenthook.IntentHookPatch +import app.revanced.patches.music.utils.settings.CategoryType +import app.revanced.patches.music.utils.settings.SettingsPatch +import app.revanced.patches.music.video.information.VideoInformationPatch +import app.revanced.util.exception +import com.android.tools.smali.dexlib2.Opcode +import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction +import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction +import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction +import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction +import com.android.tools.smali.dexlib2.iface.reference.MethodReference +import kotlin.math.min + +@Patch( + name = "Hide action bar component", + description = "Hides action bar components or replaces the offline download button with an external download button.", + dependencies = [ + IntentHookPatch::class, + SettingsPatch::class, + VideoInformationPatch::class + ], + compatiblePackages = [CompatiblePackage("com.google.android.apps.youtube.music")] +) +@Suppress("unused") +object ActionBarComponentPatch : BytecodePatch( + setOf(ActionBarComponentFingerprint) +) { + private var spannedReference = "" + + override fun execute(context: BytecodeContext) { + ActionBarComponentFingerprint.result?.let { + it.mutableMethod.apply { + val instructions = implementation!!.instructions + + // hook download button + val addViewIndex = instructions.indexOfLast { instruction -> + ((instruction as? ReferenceInstruction)?.reference as? MethodReference)?.name == "addView" + } + val addViewRegister = getInstruction(addViewIndex).registerD + + addInstruction( + addViewIndex + 1, + "invoke-static {v$addViewRegister}, $ACTIONBAR->hookDownloadButton(Landroid/view/View;)V" + ) + + // hide action button label + val noLabelIndex = instructions.indexOfFirst { instruction -> + val reference = (instruction as? ReferenceInstruction)?.reference.toString() + instruction.opcode == Opcode.INVOKE_DIRECT + && reference.endsWith("(Landroid/content/Context;)V") + && !reference.contains("Lcom/google/android/libraries/youtube/common/ui/YouTubeButton;") + } - 2 + + val replaceIndex = instructions.indexOfFirst { instruction -> + val reference = (instruction as? ReferenceInstruction)?.reference.toString() + instruction.opcode == Opcode.INVOKE_DIRECT + && reference.endsWith("Lcom/google/android/libraries/youtube/common/ui/YouTubeButton;->(Landroid/content/Context;)V") + } - 2 + val replaceInstruction = getInstruction(replaceIndex) + val replaceReference = getInstruction(replaceIndex).reference + + addInstructionsWithLabels( + replaceIndex + 1, """ + invoke-static {}, $ACTIONBAR->hideActionBarLabel()Z + move-result v${replaceInstruction.registerA} + if-nez v${replaceInstruction.registerA}, :hidden + iget-object v${replaceInstruction.registerA}, v${replaceInstruction.registerB}, $replaceReference + """, ExternalLabel("hidden", getInstruction(noLabelIndex)) + ) + removeInstruction(replaceIndex) + + // hide action button + val hasNextIndex = instructions.indexOfFirst { instruction -> + ((instruction as? ReferenceInstruction)?.reference as? MethodReference)?.name == "hasNext" + } + + val freeRegister = min(implementation!!.registerCount - parameters.size - 2, 15) + + val spannedIndex = instructions.indexOfFirst { instruction -> + spannedReference = (instruction as? ReferenceInstruction)?.reference.toString() + spannedReference.endsWith("Landroid/text/Spanned;") + } + val spannedRegister = getInstruction(spannedIndex).registerC + + addInstructionsWithLabels( + spannedIndex + 1, """ + invoke-static {}, $ACTIONBAR->hideActionButton()Z + move-result v$freeRegister + if-nez v$freeRegister, :hidden + invoke-static {v$spannedRegister}, $spannedReference + """, ExternalLabel("hidden", getInstruction(hasNextIndex)) + ) + removeInstruction(spannedIndex) + + // set action button identifier + val buttonTypeDownloadIndex = it.scanResult.patternScanResult!!.startIndex + 1 + val buttonTypeDownloadRegister = getInstruction(buttonTypeDownloadIndex).registerA + + val buttonTypeIndex = it.scanResult.patternScanResult!!.endIndex - 1 + val buttonTypeRegister = getInstruction(buttonTypeIndex).registerA + + addInstruction( + buttonTypeIndex + 2, + "invoke-static {v$buttonTypeRegister}, $ACTIONBAR->setButtonType(Ljava/lang/Object;)V" + ) + + addInstruction( + buttonTypeDownloadIndex, + "invoke-static {v$buttonTypeDownloadRegister}, $ACTIONBAR->setButtonTypeDownload(I)V" + ) + } + } ?: throw ActionBarComponentFingerprint.exception + + SettingsPatch.addMusicPreference( + CategoryType.ACTION_BAR, + "revanced_hide_action_button_add_to_playlist", + "false" + ) + SettingsPatch.addMusicPreference( + CategoryType.ACTION_BAR, + "revanced_hide_action_button_comment", + "false" + ) + SettingsPatch.addMusicPreference( + CategoryType.ACTION_BAR, + "revanced_hide_action_button_download", + "false" + ) + SettingsPatch.addMusicPreference( + CategoryType.ACTION_BAR, + "revanced_hide_action_button_label", + "false" + ) + SettingsPatch.addMusicPreference( + CategoryType.ACTION_BAR, + "revanced_hide_action_button_radio", + "false" + ) + SettingsPatch.addMusicPreference( + CategoryType.ACTION_BAR, + "revanced_hide_action_button_share", + "false" + ) + SettingsPatch.addMusicPreference( + CategoryType.ACTION_BAR, + "revanced_hook_action_button_download", + "false" + ) + SettingsPatch.addMusicPreferenceWithIntent( + CategoryType.ACTION_BAR, + "revanced_external_downloader_package_name", + "revanced_hook_action_button_download" + ) + + } +} \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/music/actionbar/component/fingerprints/ActionBarComponentFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/actionbar/component/fingerprints/ActionBarComponentFingerprint.kt new file mode 100644 index 000000000..bb535da1a --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/music/actionbar/component/fingerprints/ActionBarComponentFingerprint.kt @@ -0,0 +1,21 @@ +package app.revanced.patches.music.actionbar.component.fingerprints + +import app.revanced.patcher.extensions.or +import app.revanced.util.fingerprint.LiteralValueFingerprint +import com.android.tools.smali.dexlib2.AccessFlags +import com.android.tools.smali.dexlib2.Opcode + +object ActionBarComponentFingerprint : LiteralValueFingerprint( + returnType = "V", + accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, + parameters = listOf("L", "L"), + opcodes = listOf( + Opcode.AND_INT_LIT16, + Opcode.IF_EQZ, + Opcode.IGET_OBJECT, + Opcode.IF_NEZ, + Opcode.SGET_OBJECT, + Opcode.SGET_OBJECT + ), + literalSupplier = { 99180 } +) diff --git a/src/main/kotlin/app/revanced/patches/music/actionbar/downloadbuttonhook/DownloadButtonHookPatch.kt b/src/main/kotlin/app/revanced/patches/music/actionbar/downloadbuttonhook/DownloadButtonHookPatch.kt deleted file mode 100644 index 353e8aa6d..000000000 --- a/src/main/kotlin/app/revanced/patches/music/actionbar/downloadbuttonhook/DownloadButtonHookPatch.kt +++ /dev/null @@ -1,40 +0,0 @@ -package app.revanced.patches.music.actionbar.downloadbuttonhook - -import app.revanced.patcher.data.BytecodeContext -import app.revanced.patcher.patch.BytecodePatch -import app.revanced.patcher.patch.annotation.CompatiblePackage -import app.revanced.patcher.patch.annotation.Patch -import app.revanced.patches.music.utils.actionbarhook.ActionBarHookPatch -import app.revanced.patches.music.utils.intenthook.IntentHookPatch -import app.revanced.patches.music.utils.settings.CategoryType -import app.revanced.patches.music.utils.settings.SettingsPatch -import app.revanced.patches.music.video.information.VideoInformationPatch - -@Patch( - name = "Hook download button", - description = "Replaces the offline download button with an external download button.", - dependencies = [ - ActionBarHookPatch::class, - IntentHookPatch::class, - SettingsPatch::class, - VideoInformationPatch::class - ], - compatiblePackages = [CompatiblePackage("com.google.android.apps.youtube.music")] -) -@Suppress("unused") -object DownloadButtonHookPatch : BytecodePatch(emptySet()) { - override fun execute(context: BytecodeContext) { - - SettingsPatch.addMusicPreference( - CategoryType.ACTION_BAR, - "revanced_hook_action_bar_download", - "false" - ) - SettingsPatch.addMusicPreferenceWithIntent( - CategoryType.ACTION_BAR, - "revanced_external_downloader_package_name", - "revanced_hook_action_bar_download" - ) - - } -} diff --git a/src/main/kotlin/app/revanced/patches/music/actionbar/label/ActionBarLabelPatch.kt b/src/main/kotlin/app/revanced/patches/music/actionbar/label/ActionBarLabelPatch.kt deleted file mode 100644 index f3a204b2c..000000000 --- a/src/main/kotlin/app/revanced/patches/music/actionbar/label/ActionBarLabelPatch.kt +++ /dev/null @@ -1,77 +0,0 @@ -package app.revanced.patches.music.actionbar.label - -import app.revanced.patcher.data.BytecodeContext -import app.revanced.patcher.extensions.InstructionExtensions.addInstructionsWithLabels -import app.revanced.patcher.extensions.InstructionExtensions.getInstruction -import app.revanced.patcher.extensions.InstructionExtensions.removeInstruction -import app.revanced.patcher.patch.BytecodePatch -import app.revanced.patcher.patch.annotation.CompatiblePackage -import app.revanced.patcher.patch.annotation.Patch -import app.revanced.patcher.util.smali.ExternalLabel -import app.revanced.patches.music.actionbar.label.fingerprints.ActionBarLabelFingerprint -import app.revanced.patches.music.utils.fingerprints.ActionsBarParentFingerprint -import app.revanced.patches.music.utils.integrations.Constants.ACTIONBAR -import app.revanced.patches.music.utils.resourceid.SharedResourceIdPatch -import app.revanced.patches.music.utils.settings.CategoryType -import app.revanced.patches.music.utils.settings.SettingsPatch -import app.revanced.util.exception -import com.android.tools.smali.dexlib2.Opcode -import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction -import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction - -@Patch( - name = "Hide action bar label", - description = "Hide labels in action bar.", - dependencies = [ - SettingsPatch::class, - SharedResourceIdPatch::class - ], - compatiblePackages = [CompatiblePackage("com.google.android.apps.youtube.music")] -) -@Suppress("unused") -object ActionBarLabelPatch : BytecodePatch( - setOf(ActionsBarParentFingerprint) -) { - override fun execute(context: BytecodeContext) { - ActionsBarParentFingerprint.result?.classDef?.let { parentClassDef -> - ActionBarLabelFingerprint.resolve(context, parentClassDef) - ActionBarLabelFingerprint.result?.let { - it.mutableMethod.apply { - val instructions = implementation!!.instructions - - val noLabelIndex = instructions.indexOfFirst { instruction -> - val reference = (instruction as? ReferenceInstruction)?.reference.toString() - instruction.opcode == Opcode.INVOKE_DIRECT - && reference.endsWith("(Landroid/content/Context;)V") - && !reference.contains("Lcom/google/android/libraries/youtube/common/ui/YouTubeButton;") - } - 2 - - val replaceIndex = instructions.indexOfFirst { instruction -> - val reference = (instruction as? ReferenceInstruction)?.reference.toString() - instruction.opcode == Opcode.INVOKE_DIRECT - && reference.endsWith("Lcom/google/android/libraries/youtube/common/ui/YouTubeButton;->(Landroid/content/Context;)V") - } - 2 - val replaceInstruction = getInstruction(replaceIndex) - val replaceReference = getInstruction(replaceIndex).reference - - addInstructionsWithLabels( - replaceIndex + 1, """ - invoke-static {}, $ACTIONBAR->hideActionBarLabel()Z - move-result v${replaceInstruction.registerA} - if-nez v${replaceInstruction.registerA}, :hidden - iget-object v${replaceInstruction.registerA}, v${replaceInstruction.registerB}, $replaceReference - """, ExternalLabel("hidden", getInstruction(noLabelIndex)) - ) - removeInstruction(replaceIndex) - } - } ?: throw ActionBarLabelFingerprint.exception - } ?: throw ActionsBarParentFingerprint.exception - - SettingsPatch.addMusicPreference( - CategoryType.ACTION_BAR, - "revanced_hide_action_bar_label", - "false" - ) - - } -} diff --git a/src/main/kotlin/app/revanced/patches/music/actionbar/label/fingerprints/ActionBarLabelFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/actionbar/label/fingerprints/ActionBarLabelFingerprint.kt deleted file mode 100644 index 6b6d2994f..000000000 --- a/src/main/kotlin/app/revanced/patches/music/actionbar/label/fingerprints/ActionBarLabelFingerprint.kt +++ /dev/null @@ -1,19 +0,0 @@ -package app.revanced.patches.music.actionbar.label.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.AccessFlags -import com.android.tools.smali.dexlib2.Opcode - -object ActionBarLabelFingerprint : MethodFingerprint( - returnType = "V", - accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL, - parameters = listOf("L", "L"), - opcodes = listOf( - Opcode.INVOKE_STATIC, - Opcode.MOVE_RESULT_OBJECT, - Opcode.INVOKE_STATIC, - Opcode.MOVE_RESULT, - Opcode.IF_EQZ, - ) -) diff --git a/src/main/kotlin/app/revanced/patches/music/actionbar/radio/HideRadioButtonPatch.kt b/src/main/kotlin/app/revanced/patches/music/actionbar/radio/HideRadioButtonPatch.kt deleted file mode 100644 index 9514f46a6..000000000 --- a/src/main/kotlin/app/revanced/patches/music/actionbar/radio/HideRadioButtonPatch.kt +++ /dev/null @@ -1,31 +0,0 @@ -package app.revanced.patches.music.actionbar.radio - -import app.revanced.patcher.data.BytecodeContext -import app.revanced.patcher.patch.BytecodePatch -import app.revanced.patcher.patch.annotation.CompatiblePackage -import app.revanced.patcher.patch.annotation.Patch -import app.revanced.patches.music.utils.actionbarhook.ActionBarHookPatch -import app.revanced.patches.music.utils.settings.CategoryType -import app.revanced.patches.music.utils.settings.SettingsPatch - -@Patch( - name = "Hide radio button", - description = "Hides start radio button.", - dependencies = [ - ActionBarHookPatch::class, - SettingsPatch::class - ], - compatiblePackages = [CompatiblePackage("com.google.android.apps.youtube.music")] -) -@Suppress("unused") -object HideRadioButtonPatch : BytecodePatch(emptySet()) { - override fun execute(context: BytecodeContext) { - - SettingsPatch.addMusicPreference( - CategoryType.ACTION_BAR, - "revanced_hide_action_bar_radio", - "false" - ) - - } -} diff --git a/src/main/kotlin/app/revanced/patches/music/utils/actionbarhook/ActionBarHookPatch.kt b/src/main/kotlin/app/revanced/patches/music/utils/actionbarhook/ActionBarHookPatch.kt deleted file mode 100644 index 76e99d694..000000000 --- a/src/main/kotlin/app/revanced/patches/music/utils/actionbarhook/ActionBarHookPatch.kt +++ /dev/null @@ -1,42 +0,0 @@ -package app.revanced.patches.music.utils.actionbarhook - -import app.revanced.patcher.data.BytecodeContext -import app.revanced.patcher.extensions.InstructionExtensions.addInstruction -import app.revanced.patcher.extensions.InstructionExtensions.getInstruction -import app.revanced.patcher.patch.BytecodePatch -import app.revanced.patcher.patch.annotation.Patch -import app.revanced.patches.music.utils.actionbarhook.fingerprints.ActionBarHookFingerprint -import app.revanced.patches.music.utils.fingerprints.ActionsBarParentFingerprint -import app.revanced.patches.music.utils.integrations.Constants.ACTIONBAR -import app.revanced.patches.music.utils.resourceid.SharedResourceIdPatch -import app.revanced.util.exception -import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction - -@Patch(dependencies = [SharedResourceIdPatch::class]) -object ActionBarHookPatch : BytecodePatch( - setOf(ActionsBarParentFingerprint) -) { - override fun execute(context: BytecodeContext) { - - ActionsBarParentFingerprint.result?.let { parentResult -> - ActionBarHookFingerprint.also { - it.resolve( - context, - parentResult.classDef - ) - }.result?.let { - it.mutableMethod.apply { - val targetIndex = it.scanResult.patternScanResult!!.startIndex - val targetRegister = - getInstruction(targetIndex).registerA - - addInstruction( - targetIndex + 1, - "invoke-static {v$targetRegister}, $ACTIONBAR->hookActionBar(Landroid/view/ViewGroup;)V" - ) - } - } ?: throw ActionBarHookFingerprint.exception - } ?: throw ActionsBarParentFingerprint.exception - - } -} \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/music/utils/actionbarhook/fingerprints/ActionBarHookFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/utils/actionbarhook/fingerprints/ActionBarHookFingerprint.kt deleted file mode 100644 index ab8402c1e..000000000 --- a/src/main/kotlin/app/revanced/patches/music/utils/actionbarhook/fingerprints/ActionBarHookFingerprint.kt +++ /dev/null @@ -1,22 +0,0 @@ -package app.revanced.patches.music.utils.actionbarhook.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patcher.fingerprint.MethodFingerprint -import com.android.tools.smali.dexlib2.AccessFlags -import com.android.tools.smali.dexlib2.Opcode - -object ActionBarHookFingerprint : MethodFingerprint( - returnType = "V", - accessFlags = AccessFlags.PRIVATE or AccessFlags.FINAL, - parameters = listOf("L"), - opcodes = listOf( - Opcode.IGET_OBJECT, - Opcode.INVOKE_VIRTUAL, - Opcode.IGET_OBJECT, - Opcode.INVOKE_INTERFACE, - Opcode.MOVE_RESULT_OBJECT, - Opcode.INVOKE_INTERFACE, - Opcode.MOVE_RESULT, - Opcode.IF_EQZ - ) -) diff --git a/src/main/kotlin/app/revanced/patches/music/utils/fingerprints/ActionsBarParentFingerprint.kt b/src/main/kotlin/app/revanced/patches/music/utils/fingerprints/ActionsBarParentFingerprint.kt deleted file mode 100644 index 5a6b72614..000000000 --- a/src/main/kotlin/app/revanced/patches/music/utils/fingerprints/ActionsBarParentFingerprint.kt +++ /dev/null @@ -1,13 +0,0 @@ -package app.revanced.patches.music.utils.fingerprints - -import app.revanced.patcher.extensions.or -import app.revanced.patches.music.utils.resourceid.SharedResourceIdPatch.ActionsContainer -import app.revanced.util.fingerprint.LiteralValueFingerprint -import com.android.tools.smali.dexlib2.AccessFlags - -object ActionsBarParentFingerprint : LiteralValueFingerprint( - returnType = "V", - accessFlags = AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR, - literalSupplier = { ActionsContainer } -) - diff --git a/src/main/kotlin/app/revanced/patches/music/utils/resourceid/SharedResourceIdPatch.kt b/src/main/kotlin/app/revanced/patches/music/utils/resourceid/SharedResourceIdPatch.kt index 5b94a7f67..603b2bb1b 100644 --- a/src/main/kotlin/app/revanced/patches/music/utils/resourceid/SharedResourceIdPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/utils/resourceid/SharedResourceIdPatch.kt @@ -16,7 +16,6 @@ import app.revanced.patches.shared.patch.mapping.ResourceType.STYLE @Patch(dependencies = [ResourceMappingPatch::class]) object SharedResourceIdPatch : ResourcePatch() { var AccountSwitcherAccessibility: Long = -1 - var ActionsContainer: Long = -1 var ButtonContainer: Long = -1 var ButtonIconPaddingMedium: Long = -1 var ChipCloud: Long = -1 @@ -47,7 +46,6 @@ object SharedResourceIdPatch : ResourcePatch() { ?: -1 AccountSwitcherAccessibility = find(STRING, "account_switcher_accessibility_label") - ActionsContainer = find(ID, "actions_container") ButtonContainer = find(ID, "button_container") ButtonIconPaddingMedium = find(DIMEN, "button_icon_padding_medium") ChipCloud = find(LAYOUT, "chip_cloud") diff --git a/src/main/resources/music/settings/host/values/strings.xml b/src/main/resources/music/settings/host/values/strings.xml index 982ade10d..a46c38f35 100644 --- a/src/main/resources/music/settings/host/values/strings.xml +++ b/src/main/resources/music/settings/host/values/strings.xml @@ -96,10 +96,18 @@ WARNING: Do not enable new player backgrounds while this is enabled." Hide empty component Hide account menu elements. Hide account menu - Hide labels in action bar. - Hide action bar labels - Hides start radio button. - Hide radio button + Hides add to playlist button. + Hide add to playlist button + Hides comment button. + Hide comment button + Hides download button. + Hide download button + Hide labels in action button. + Hide action button labels + Hides start radio button. + Hide radio button + Hides share button. + Hide share button Hides the button shelf from homepage and explorer. Hide button shelf Hides the carousel shelf from homepage and explorer. @@ -164,8 +172,8 @@ WARNING: Do not enable new player backgrounds while this is enabled." Hide terms container Hides the upgrade button. Hide upgrade button - Replaces the offline download button with an external download button. - Hook download button + Replaces the offline download button with an external download button. + Hook download button Normal Already playing official music source. Official music source not available.