feat(YouTube/Quick actions components): add Quick actions top margin settings

This commit is contained in:
inotia00 2023-10-27 13:00:46 +09:00
parent 73c8ad6ea4
commit b021ab9019
4 changed files with 26 additions and 4 deletions

View File

@ -45,6 +45,8 @@ object QuickActionsPatch : BytecodePatch() {
override fun execute(context: BytecodeContext) { override fun execute(context: BytecodeContext) {
LithoFilterPatch.addFilter("$COMPONENTS_PATH/QuickActionFilter;") LithoFilterPatch.addFilter("$COMPONENTS_PATH/QuickActionFilter;")
QuickActionsHookPatch.injectQuickActionMargin()
/** /**
* Add settings * Add settings
*/ */

View File

@ -6,6 +6,7 @@ import app.revanced.patcher.extensions.InstructionExtensions.addInstruction
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.Patch import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod
import app.revanced.patches.youtube.utils.quickactions.fingerprints.QuickActionsElementFingerprint import app.revanced.patches.youtube.utils.quickactions.fingerprints.QuickActionsElementFingerprint
import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch
import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch.QuickActionsElementContainer import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch.QuickActionsElementContainer
@ -18,24 +19,39 @@ import com.android.tools.smali.dexlib2.iface.instruction.WideLiteralInstruction
object QuickActionsHookPatch : BytecodePatch( object QuickActionsHookPatch : BytecodePatch(
setOf(QuickActionsElementFingerprint) setOf(QuickActionsElementFingerprint)
) { ) {
private lateinit var insertMethod: MutableMethod
private var insertIndex: Int = 0
private var insertRegister: Int = 0
override fun execute(context: BytecodeContext) { override fun execute(context: BytecodeContext) {
QuickActionsElementFingerprint.result?.let { QuickActionsElementFingerprint.result?.let {
it.mutableMethod.apply { it.mutableMethod.apply {
insertMethod = this
for (index in implementation!!.instructions.size - 1 downTo 0) { for (index in implementation!!.instructions.size - 1 downTo 0) {
if (getInstruction(index).opcode == Opcode.CONST && (getInstruction(index) as WideLiteralInstruction).wideLiteral == QuickActionsElementContainer) { if (getInstruction(index).opcode == Opcode.CONST && (getInstruction(index) as WideLiteralInstruction).wideLiteral == QuickActionsElementContainer) {
val targetRegister = insertIndex = index + 3
insertRegister =
getInstruction<OneRegisterInstruction>(index + 2).registerA getInstruction<OneRegisterInstruction>(index + 2).registerA
addInstruction( addInstruction(
index + 3, insertIndex,
"invoke-static {v$targetRegister}, $FULLSCREEN->hideQuickActions(Landroid/view/View;)V" "invoke-static {v$insertRegister}, $FULLSCREEN->hideQuickActions(Landroid/view/View;)V"
) )
insertIndex += 2
break break
} }
} }
} }
} ?: throw QuickActionsElementFingerprint.exception } ?: throw QuickActionsElementFingerprint.exception
}
internal fun injectQuickActionMargin() {
insertMethod.apply {
addInstruction(
insertIndex,
"invoke-static {v$insertRegister}, $FULLSCREEN->setQuickActionMargin(Landroid/widget/FrameLayout;)V"
)
}
} }
} }

View File

@ -612,6 +612,9 @@ Tap and hold to set playback speed to 1.0x"</string>
<string name="revanced_patches_information_summary">Information about applied patches</string> <string name="revanced_patches_information_summary">Information about applied patches</string>
<string name="revanced_player">Player</string> <string name="revanced_player">Player</string>
<string name="revanced_player_flyout_panel_title">Player flyout panel</string> <string name="revanced_player_flyout_panel_title">Player flyout panel</string>
<string name="revanced_quick_actions_margin_top_summary">Top margin value between 0-64</string>
<string name="revanced_quick_actions_margin_top_title">Quick actions top margin</string>
<string name="revanced_quick_actions_margin_top_warning">Quick actions top margin must be between 0-64. Reset to default values.</string>
<string name="revanced_quick_actions_title">Quick actions</string> <string name="revanced_quick_actions_title">Quick actions</string>
<string name="revanced_reboot_first_run">Restart to load the layout normally</string> <string name="revanced_reboot_first_run">Restart to load the layout normally</string>
<string name="revanced_ryd_about">About</string> <string name="revanced_ryd_about">About</string>

View File

@ -141,7 +141,8 @@
<SwitchPreference android:title="@string/revanced_hide_quick_actions_open_playlist_title" android:key="revanced_hide_quick_actions_open_playlist" android:defaultValue="false" android:summaryOn="@string/revanced_hide_quick_actions_open_playlist_summary_on" android:summaryOff="@string/revanced_hide_quick_actions_open_playlist_summary_off" /> <SwitchPreference android:title="@string/revanced_hide_quick_actions_open_playlist_title" android:key="revanced_hide_quick_actions_open_playlist" android:defaultValue="false" android:summaryOn="@string/revanced_hide_quick_actions_open_playlist_summary_on" android:summaryOff="@string/revanced_hide_quick_actions_open_playlist_summary_off" />
<SwitchPreference android:title="@string/revanced_hide_quick_actions_related_videos_title" android:key="revanced_hide_quick_actions_related_videos" android:defaultValue="false" android:summaryOn="@string/revanced_hide_quick_actions_related_videos_summary_on" android:summaryOff="@string/revanced_hide_quick_actions_related_videos_summary_off" /> <SwitchPreference android:title="@string/revanced_hide_quick_actions_related_videos_title" android:key="revanced_hide_quick_actions_related_videos" android:defaultValue="false" android:summaryOn="@string/revanced_hide_quick_actions_related_videos_summary_on" android:summaryOff="@string/revanced_hide_quick_actions_related_videos_summary_off" />
<SwitchPreference android:title="@string/revanced_hide_quick_actions_save_to_playlist_title" android:key="revanced_hide_quick_actions_save_to_playlist" android:defaultValue="false" android:summaryOn="@string/revanced_hide_quick_actions_save_to_playlist_summary_on" android:summaryOff="@string/revanced_hide_quick_actions_save_to_playlist_summary_off" /> <SwitchPreference android:title="@string/revanced_hide_quick_actions_save_to_playlist_title" android:key="revanced_hide_quick_actions_save_to_playlist" android:defaultValue="false" android:summaryOn="@string/revanced_hide_quick_actions_save_to_playlist_summary_on" android:summaryOff="@string/revanced_hide_quick_actions_save_to_playlist_summary_off" />
<SwitchPreference android:title="@string/revanced_hide_quick_actions_share_title" android:key="revanced_hide_quick_actions_share" android:defaultValue="false" android:summaryOn="@string/revanced_hide_quick_actions_share_summary_on" android:summaryOff="@string/revanced_hide_quick_actions_share_summary_off" />SETTINGS: QUICK_ACTIONS_COMPONENTS --> <SwitchPreference android:title="@string/revanced_hide_quick_actions_share_title" android:key="revanced_hide_quick_actions_share" android:defaultValue="false" android:summaryOn="@string/revanced_hide_quick_actions_share_summary_on" android:summaryOff="@string/revanced_hide_quick_actions_share_summary_off" />
<app.revanced.integrations.settingsmenu.ResettableEditTextPreference android:hint="12" android:defaultValue="12" android:title="@string/revanced_quick_actions_margin_top_title" android:key="revanced_quick_actions_margin_top" android:summary="@string/revanced_quick_actions_margin_top_summary" android:inputType="number" />SETTINGS: QUICK_ACTIONS_COMPONENTS -->
<!-- SETTINGS: ENABLE_COMPACT_CONTROLS_OVERLAY <!-- SETTINGS: ENABLE_COMPACT_CONTROLS_OVERLAY
<Preference android:title=" " android:selectable="false" android:summary="@string/revanced_experimental_flag" /> <Preference android:title=" " android:selectable="false" android:summary="@string/revanced_experimental_flag" />