mirror of
https://github.com/inotia00/revanced-patches.git
synced 2025-05-28 21:00:19 +02:00
feat(YouTube - Hide action buttons): Add patch option Hide action buttons by index
(Experimental)
This commit is contained in:
parent
5dbab47628
commit
70178a0942
@ -0,0 +1,62 @@
|
|||||||
|
package app.revanced.extension.youtube.patches.player;
|
||||||
|
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import app.revanced.extension.shared.settings.BooleanSetting;
|
||||||
|
import app.revanced.extension.shared.utils.Logger;
|
||||||
|
import app.revanced.extension.youtube.settings.Settings;
|
||||||
|
import app.revanced.extension.youtube.shared.VideoInformation;
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
public class ActionButtonsPatch {
|
||||||
|
|
||||||
|
public enum ActionButton {
|
||||||
|
INDEX_7(Settings.HIDE_ACTION_BUTTON_INDEX_7, Settings.HIDE_ACTION_BUTTON_INDEX_LIVE_7, 7),
|
||||||
|
INDEX_6(Settings.HIDE_ACTION_BUTTON_INDEX_6, Settings.HIDE_ACTION_BUTTON_INDEX_LIVE_6, 6),
|
||||||
|
INDEX_5(Settings.HIDE_ACTION_BUTTON_INDEX_5, Settings.HIDE_ACTION_BUTTON_INDEX_LIVE_5, 5),
|
||||||
|
INDEX_4(Settings.HIDE_ACTION_BUTTON_INDEX_4, Settings.HIDE_ACTION_BUTTON_INDEX_LIVE_4, 4),
|
||||||
|
INDEX_3(Settings.HIDE_ACTION_BUTTON_INDEX_3, Settings.HIDE_ACTION_BUTTON_INDEX_LIVE_3, 3),
|
||||||
|
INDEX_2(Settings.HIDE_ACTION_BUTTON_INDEX_2, Settings.HIDE_ACTION_BUTTON_INDEX_LIVE_2, 2),
|
||||||
|
INDEX_1(Settings.HIDE_ACTION_BUTTON_INDEX_1, Settings.HIDE_ACTION_BUTTON_INDEX_LIVE_1, 1),
|
||||||
|
INDEX_0(Settings.HIDE_ACTION_BUTTON_INDEX_0, Settings.HIDE_ACTION_BUTTON_INDEX_LIVE_0, 0);
|
||||||
|
|
||||||
|
private final BooleanSetting generalSetting;
|
||||||
|
private final BooleanSetting liveSetting;
|
||||||
|
private final int index;
|
||||||
|
|
||||||
|
ActionButton(final BooleanSetting generalSetting, final BooleanSetting liveSetting, final int index) {
|
||||||
|
this.generalSetting = generalSetting;
|
||||||
|
this.liveSetting = liveSetting;
|
||||||
|
this.index = index;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final String TARGET_COMPONENT_TYPE = "LazilyConvertedElement";
|
||||||
|
private static final String VIDEO_ACTION_BAR_PATH_PREFIX = "video_action_bar.eml";
|
||||||
|
|
||||||
|
public static List<Object> hideActionButtonByIndex(@Nullable List<Object> list, @Nullable String identifier) {
|
||||||
|
try {
|
||||||
|
if (identifier != null &&
|
||||||
|
identifier.startsWith(VIDEO_ACTION_BAR_PATH_PREFIX) &&
|
||||||
|
list != null &&
|
||||||
|
!list.isEmpty() &&
|
||||||
|
list.get(0).toString().equals(TARGET_COMPONENT_TYPE)
|
||||||
|
) {
|
||||||
|
final int size = list.size();
|
||||||
|
final boolean isLive = VideoInformation.getLiveStreamState();
|
||||||
|
for (ActionButton button : ActionButton.values()) {
|
||||||
|
if (size > button.index && (isLive ? button.liveSetting.get() : button.generalSetting.get())) {
|
||||||
|
list.remove(button.index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Logger.printException(() -> "hideActionButtonByIndex failure", ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -285,6 +285,23 @@ public class Settings extends BaseSettings {
|
|||||||
public static final BooleanSetting HIDE_SHOP_BUTTON = new BooleanSetting("revanced_hide_shop_button", FALSE);
|
public static final BooleanSetting HIDE_SHOP_BUTTON = new BooleanSetting("revanced_hide_shop_button", FALSE);
|
||||||
public static final BooleanSetting HIDE_THANKS_BUTTON = new BooleanSetting("revanced_hide_thanks_button", FALSE);
|
public static final BooleanSetting HIDE_THANKS_BUTTON = new BooleanSetting("revanced_hide_thanks_button", FALSE);
|
||||||
|
|
||||||
|
public static final BooleanSetting HIDE_ACTION_BUTTON_INDEX_0 = new BooleanSetting("revanced_hide_action_button_index_0", FALSE);
|
||||||
|
public static final BooleanSetting HIDE_ACTION_BUTTON_INDEX_1 = new BooleanSetting("revanced_hide_action_button_index_1", FALSE);
|
||||||
|
public static final BooleanSetting HIDE_ACTION_BUTTON_INDEX_2 = new BooleanSetting("revanced_hide_action_button_index_2", FALSE);
|
||||||
|
public static final BooleanSetting HIDE_ACTION_BUTTON_INDEX_3 = new BooleanSetting("revanced_hide_action_button_index_3", FALSE);
|
||||||
|
public static final BooleanSetting HIDE_ACTION_BUTTON_INDEX_4 = new BooleanSetting("revanced_hide_action_button_index_4", FALSE);
|
||||||
|
public static final BooleanSetting HIDE_ACTION_BUTTON_INDEX_5 = new BooleanSetting("revanced_hide_action_button_index_5", FALSE);
|
||||||
|
public static final BooleanSetting HIDE_ACTION_BUTTON_INDEX_6 = new BooleanSetting("revanced_hide_action_button_index_6", FALSE);
|
||||||
|
public static final BooleanSetting HIDE_ACTION_BUTTON_INDEX_7 = new BooleanSetting("revanced_hide_action_button_index_7", FALSE);
|
||||||
|
public static final BooleanSetting HIDE_ACTION_BUTTON_INDEX_LIVE_0 = new BooleanSetting("revanced_hide_action_button_index_live_0", FALSE);
|
||||||
|
public static final BooleanSetting HIDE_ACTION_BUTTON_INDEX_LIVE_1 = new BooleanSetting("revanced_hide_action_button_index_live_1", FALSE);
|
||||||
|
public static final BooleanSetting HIDE_ACTION_BUTTON_INDEX_LIVE_2 = new BooleanSetting("revanced_hide_action_button_index_live_2", FALSE);
|
||||||
|
public static final BooleanSetting HIDE_ACTION_BUTTON_INDEX_LIVE_3 = new BooleanSetting("revanced_hide_action_button_index_live_3", FALSE);
|
||||||
|
public static final BooleanSetting HIDE_ACTION_BUTTON_INDEX_LIVE_4 = new BooleanSetting("revanced_hide_action_button_index_live_4", FALSE);
|
||||||
|
public static final BooleanSetting HIDE_ACTION_BUTTON_INDEX_LIVE_5 = new BooleanSetting("revanced_hide_action_button_index_live_5", FALSE);
|
||||||
|
public static final BooleanSetting HIDE_ACTION_BUTTON_INDEX_LIVE_6 = new BooleanSetting("revanced_hide_action_button_index_live_6", FALSE);
|
||||||
|
public static final BooleanSetting HIDE_ACTION_BUTTON_INDEX_LIVE_7 = new BooleanSetting("revanced_hide_action_button_index_live_7", FALSE);
|
||||||
|
|
||||||
// PreferenceScreen: Player - Ambient mode
|
// PreferenceScreen: Player - Ambient mode
|
||||||
public static final BooleanSetting BYPASS_AMBIENT_MODE_RESTRICTIONS = new BooleanSetting("revanced_bypass_ambient_mode_restrictions", FALSE);
|
public static final BooleanSetting BYPASS_AMBIENT_MODE_RESTRICTIONS = new BooleanSetting("revanced_bypass_ambient_mode_restrictions", FALSE);
|
||||||
public static final BooleanSetting DISABLE_AMBIENT_MODE = new BooleanSetting("revanced_disable_ambient_mode", FALSE, true);
|
public static final BooleanSetting DISABLE_AMBIENT_MODE = new BooleanSetting("revanced_disable_ambient_mode", FALSE, true);
|
||||||
|
@ -1,16 +1,37 @@
|
|||||||
package app.revanced.patches.youtube.player.action
|
package app.revanced.patches.youtube.player.action
|
||||||
|
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.getInstruction
|
||||||
|
import app.revanced.patcher.patch.booleanOption
|
||||||
import app.revanced.patcher.patch.bytecodePatch
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
import app.revanced.patches.shared.litho.addLithoFilter
|
import app.revanced.patches.shared.litho.addLithoFilter
|
||||||
|
import app.revanced.patches.shared.litho.emptyComponentsFingerprint
|
||||||
import app.revanced.patches.shared.litho.lithoFilterPatch
|
import app.revanced.patches.shared.litho.lithoFilterPatch
|
||||||
import app.revanced.patches.youtube.utils.compatibility.Constants.COMPATIBLE_PACKAGE
|
import app.revanced.patches.youtube.utils.compatibility.Constants.COMPATIBLE_PACKAGE
|
||||||
import app.revanced.patches.youtube.utils.extension.Constants.COMPONENTS_PATH
|
import app.revanced.patches.youtube.utils.extension.Constants.COMPONENTS_PATH
|
||||||
|
import app.revanced.patches.youtube.utils.extension.Constants.PLAYER_PATH
|
||||||
import app.revanced.patches.youtube.utils.patch.PatchList.HIDE_ACTION_BUTTONS
|
import app.revanced.patches.youtube.utils.patch.PatchList.HIDE_ACTION_BUTTONS
|
||||||
import app.revanced.patches.youtube.utils.settings.ResourceUtils.addPreference
|
import app.revanced.patches.youtube.utils.settings.ResourceUtils.addPreference
|
||||||
import app.revanced.patches.youtube.utils.settings.settingsPatch
|
import app.revanced.patches.youtube.utils.settings.settingsPatch
|
||||||
|
import app.revanced.patches.youtube.video.information.videoInformationPatch
|
||||||
|
import app.revanced.util.Utils.trimIndentMultiline
|
||||||
|
import app.revanced.util.addInstructionsAtControlFlowLabel
|
||||||
|
import app.revanced.util.findMethodOrThrow
|
||||||
|
import app.revanced.util.fingerprint.methodOrThrow
|
||||||
|
import app.revanced.util.getReference
|
||||||
|
import app.revanced.util.indexOfFirstInstructionOrThrow
|
||||||
|
import app.revanced.util.indexOfFirstInstructionReversedOrThrow
|
||||||
|
import app.revanced.util.indexOfFirstStringInstructionOrThrow
|
||||||
|
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.FieldReference
|
||||||
|
|
||||||
private const val FILTER_CLASS_DESCRIPTOR =
|
private const val FILTER_CLASS_DESCRIPTOR =
|
||||||
"$COMPONENTS_PATH/ActionButtonsFilter;"
|
"$COMPONENTS_PATH/ActionButtonsFilter;"
|
||||||
|
private const val ACTION_BUTTONS_CLASS_DESCRIPTOR =
|
||||||
|
"$PLAYER_PATH/ActionButtonsPatch;"
|
||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
val actionButtonsPatch = bytecodePatch(
|
val actionButtonsPatch = bytecodePatch(
|
||||||
@ -22,18 +43,73 @@ val actionButtonsPatch = bytecodePatch(
|
|||||||
dependsOn(
|
dependsOn(
|
||||||
settingsPatch,
|
settingsPatch,
|
||||||
lithoFilterPatch,
|
lithoFilterPatch,
|
||||||
|
videoInformationPatch,
|
||||||
|
)
|
||||||
|
|
||||||
|
val hideActionButtonByIndex by booleanOption(
|
||||||
|
key = "hideActionButtonByIndex",
|
||||||
|
default = false,
|
||||||
|
title = "Hide action buttons by index",
|
||||||
|
description = """
|
||||||
|
Add an option to hide action buttons by index.
|
||||||
|
|
||||||
|
This setting is still experimental, so use it only for debugging purposes.
|
||||||
|
""".trimIndentMultiline(),
|
||||||
|
required = true
|
||||||
)
|
)
|
||||||
|
|
||||||
execute {
|
execute {
|
||||||
addLithoFilter(FILTER_CLASS_DESCRIPTOR)
|
addLithoFilter(FILTER_CLASS_DESCRIPTOR)
|
||||||
|
|
||||||
|
var settingArray = arrayOf(
|
||||||
|
"PREFERENCE_SCREEN: PLAYER",
|
||||||
|
"SETTINGS: HIDE_ACTION_BUTTONS"
|
||||||
|
)
|
||||||
|
|
||||||
|
if (hideActionButtonByIndex == true) {
|
||||||
|
componentListFingerprint.methodOrThrow(emptyComponentsFingerprint).apply {
|
||||||
|
val conversionContextToStringMethod =
|
||||||
|
findMethodOrThrow(parameters[1].type) {
|
||||||
|
name == "toString"
|
||||||
|
}
|
||||||
|
val identifierReference = with (conversionContextToStringMethod) {
|
||||||
|
val identifierStringIndex =
|
||||||
|
indexOfFirstStringInstructionOrThrow(", identifierProperty=")
|
||||||
|
val identifierStringAppendIndex =
|
||||||
|
indexOfFirstInstructionOrThrow(identifierStringIndex, Opcode.INVOKE_VIRTUAL)
|
||||||
|
val identifierStringAppendIndexRegister = getInstruction<FiveRegisterInstruction>(identifierStringAppendIndex).registerD
|
||||||
|
val identifierAppendIndex =
|
||||||
|
indexOfFirstInstructionOrThrow(identifierStringAppendIndex + 1, Opcode.INVOKE_VIRTUAL)
|
||||||
|
val identifierRegister = getInstruction<FiveRegisterInstruction>(identifierAppendIndex).registerD
|
||||||
|
val identifierIndex = indexOfFirstInstructionReversedOrThrow(identifierAppendIndex) {
|
||||||
|
opcode == Opcode.IGET_OBJECT &&
|
||||||
|
getReference<FieldReference>()?.type == "Ljava/lang/String;" &&
|
||||||
|
(this as? TwoRegisterInstruction)?.registerA == identifierRegister
|
||||||
|
}
|
||||||
|
getInstruction<ReferenceInstruction>(identifierIndex).reference
|
||||||
|
}
|
||||||
|
|
||||||
|
val listIndex = implementation!!.instructions.lastIndex
|
||||||
|
val listRegister = getInstruction<OneRegisterInstruction>(listIndex).registerA
|
||||||
|
val identifierRegister = listRegister + 1
|
||||||
|
|
||||||
|
addInstructionsAtControlFlowLabel(
|
||||||
|
listIndex, """
|
||||||
|
move-object/from16 v$identifierRegister, p2
|
||||||
|
iget-object v$identifierRegister, v$identifierRegister, $identifierReference
|
||||||
|
invoke-static {v$listRegister, v$identifierRegister}, $ACTION_BUTTONS_CLASS_DESCRIPTOR->hideActionButtonByIndex(Ljava/util/List;Ljava/lang/String;)Ljava/util/List;
|
||||||
|
move-result-object v$listRegister
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
settingArray += "SETTINGS: HIDE_BUTTONS_BY_INDEX"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// region add settings
|
// region add settings
|
||||||
|
|
||||||
addPreference(
|
addPreference(
|
||||||
arrayOf(
|
settingArray,
|
||||||
"PREFERENCE_SCREEN: PLAYER",
|
|
||||||
"SETTINGS: HIDE_ACTION_BUTTONS"
|
|
||||||
),
|
|
||||||
HIDE_ACTION_BUTTONS
|
HIDE_ACTION_BUTTONS
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -0,0 +1,21 @@
|
|||||||
|
package app.revanced.patches.youtube.player.action
|
||||||
|
|
||||||
|
import app.revanced.util.fingerprint.legacyFingerprint
|
||||||
|
import app.revanced.util.getReference
|
||||||
|
import app.revanced.util.indexOfFirstInstruction
|
||||||
|
import app.revanced.util.or
|
||||||
|
import com.android.tools.smali.dexlib2.AccessFlags
|
||||||
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
|
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
||||||
|
|
||||||
|
internal val componentListFingerprint = legacyFingerprint(
|
||||||
|
name = "componentListFingerprint",
|
||||||
|
returnType = "Ljava/util/List;",
|
||||||
|
accessFlags = AccessFlags.PRIVATE or AccessFlags.FINAL,
|
||||||
|
customFingerprint = { method, _ ->
|
||||||
|
method.indexOfFirstInstruction {
|
||||||
|
opcode == Opcode.INVOKE_STATIC &&
|
||||||
|
getReference<MethodReference>()?.name == "nCopies"
|
||||||
|
} >= 0
|
||||||
|
}
|
||||||
|
)
|
@ -848,6 +848,43 @@ Settings → Autoplay / Playback → Autoplay next video"</string>
|
|||||||
<string name="revanced_hide_thanks_button_summary_on">Thanks button is hidden.</string>
|
<string name="revanced_hide_thanks_button_summary_on">Thanks button is hidden.</string>
|
||||||
<string name="revanced_hide_thanks_button_summary_off">Thanks button is shown.</string>
|
<string name="revanced_hide_thanks_button_summary_off">Thanks button is shown.</string>
|
||||||
|
|
||||||
|
<!-- PreferenceScreen: Player, PreferenceCategory: Player, PreferenceScreen: Action buttons, PreferenceCategory: Hide by index -->
|
||||||
|
<string name="revanced_preference_category_hide_by_index">Hide by index</string>
|
||||||
|
|
||||||
|
<string name="revanced_hide_action_button_index_0_title">Hide first button</string>
|
||||||
|
<string name="revanced_hide_action_button_index_0_summary_on">First button is hidden.</string>
|
||||||
|
<string name="revanced_hide_action_button_index_0_summary_off">First button is shown.</string>
|
||||||
|
<string name="revanced_hide_action_button_index_1_title">Hide second button</string>
|
||||||
|
<string name="revanced_hide_action_button_index_1_summary_on">Second button is hidden.</string>
|
||||||
|
<string name="revanced_hide_action_button_index_1_summary_off">Second button is shown.</string>
|
||||||
|
<string name="revanced_hide_action_button_index_2_title">Hide third button</string>
|
||||||
|
<string name="revanced_hide_action_button_index_2_summary_on">Third button is hidden.</string>
|
||||||
|
<string name="revanced_hide_action_button_index_2_summary_off">Third button is shown.</string>
|
||||||
|
<string name="revanced_hide_action_button_index_3_title">Hide fourth button</string>
|
||||||
|
<string name="revanced_hide_action_button_index_3_summary_on">Fourth button is hidden.</string>
|
||||||
|
<string name="revanced_hide_action_button_index_3_summary_off">Fourth button is shown.</string>
|
||||||
|
<string name="revanced_hide_action_button_index_4_title">Hide fifth button</string>
|
||||||
|
<string name="revanced_hide_action_button_index_4_summary_on">Fifth button is hidden.</string>
|
||||||
|
<string name="revanced_hide_action_button_index_4_summary_off">Fifth button is shown.</string>
|
||||||
|
<string name="revanced_hide_action_button_index_5_title">Hide sixth button</string>
|
||||||
|
<string name="revanced_hide_action_button_index_5_summary_on">Sixth button is hidden.</string>
|
||||||
|
<string name="revanced_hide_action_button_index_5_summary_off">Sixth button is shown.</string>
|
||||||
|
<string name="revanced_hide_action_button_index_6_title">Hide seventh button</string>
|
||||||
|
<string name="revanced_hide_action_button_index_6_summary_on">Seventh button is hidden.</string>
|
||||||
|
<string name="revanced_hide_action_button_index_6_summary_off">Seventh button is shown.</string>
|
||||||
|
<string name="revanced_hide_action_button_index_7_title">Hide eighth button</string>
|
||||||
|
<string name="revanced_hide_action_button_index_7_summary_on">Eighth button is hidden.</string>
|
||||||
|
<string name="revanced_hide_action_button_index_7_summary_off">Eighth button is shown.</string>
|
||||||
|
|
||||||
|
<!-- PreferenceScreen: Player, PreferenceCategory: Player, PreferenceScreen: Action buttons, PreferenceCategory: Hide by index in live stream -->
|
||||||
|
<string name="revanced_preference_category_hide_by_index_live">Hide by index in live stream</string>
|
||||||
|
|
||||||
|
<string name="revanced_hide_action_button_index_about_title">About Hide action button by index</string>
|
||||||
|
<string name="revanced_hide_action_button_index_about_summary">"Hide the action buttons by index before the action buttons are initialized.
|
||||||
|
|
||||||
|
- Hiding the action buttons leaves no empty space.
|
||||||
|
- Index of the action buttons may not always be the same button."</string>
|
||||||
|
|
||||||
<!-- PreferenceScreen: Player, PreferenceCategory: Player, PreferenceScreen: Ambient mode -->
|
<!-- PreferenceScreen: Player, PreferenceCategory: Player, PreferenceScreen: Ambient mode -->
|
||||||
<string name="revanced_preference_screen_ambient_mode_title">Ambient mode</string>
|
<string name="revanced_preference_screen_ambient_mode_title">Ambient mode</string>
|
||||||
<string name="revanced_preference_screen_ambient_mode_summary">Disable Ambient mode or bypass Ambient mode restrictions.</string>
|
<string name="revanced_preference_screen_ambient_mode_summary">Disable Ambient mode or bypass Ambient mode restrictions.</string>
|
||||||
|
@ -331,7 +331,30 @@
|
|||||||
<SwitchPreference android:title="@string/revanced_hide_playlist_button_title" android:key="revanced_hide_playlist_button" android:summaryOn="@string/revanced_hide_playlist_button_summary_on" android:summaryOff="@string/revanced_hide_playlist_button_summary_off" />
|
<SwitchPreference android:title="@string/revanced_hide_playlist_button_title" android:key="revanced_hide_playlist_button" android:summaryOn="@string/revanced_hide_playlist_button_summary_on" android:summaryOff="@string/revanced_hide_playlist_button_summary_off" />
|
||||||
<SwitchPreference android:title="@string/revanced_hide_share_button_title" android:key="revanced_hide_share_button" android:summaryOn="@string/revanced_hide_share_button_summary_on" android:summaryOff="@string/revanced_hide_share_button_summary_off" />
|
<SwitchPreference android:title="@string/revanced_hide_share_button_title" android:key="revanced_hide_share_button" android:summaryOn="@string/revanced_hide_share_button_summary_on" android:summaryOff="@string/revanced_hide_share_button_summary_off" />
|
||||||
<SwitchPreference android:title="@string/revanced_hide_shop_button_title" android:key="revanced_hide_shop_button" android:summaryOn="@string/revanced_hide_shop_button_summary_on" android:summaryOff="@string/revanced_hide_shop_button_summary_off" />
|
<SwitchPreference android:title="@string/revanced_hide_shop_button_title" android:key="revanced_hide_shop_button" android:summaryOn="@string/revanced_hide_shop_button_summary_on" android:summaryOff="@string/revanced_hide_shop_button_summary_off" />
|
||||||
<SwitchPreference android:title="@string/revanced_hide_thanks_button_title" android:key="revanced_hide_thanks_button" android:summaryOn="@string/revanced_hide_thanks_button_summary_on" android:summaryOff="@string/revanced_hide_thanks_button_summary_off" />
|
<SwitchPreference android:title="@string/revanced_hide_thanks_button_title" android:key="revanced_hide_thanks_button" android:summaryOn="@string/revanced_hide_thanks_button_summary_on" android:summaryOff="@string/revanced_hide_thanks_button_summary_off" />SETTINGS: HIDE_ACTION_BUTTONS -->
|
||||||
|
|
||||||
|
<!-- SETTINGS: HIDE_BUTTONS_BY_INDEX
|
||||||
|
<PreferenceCategory android:title="@string/revanced_preference_category_hide_by_index" android:layout="@layout/revanced_settings_preferences_category"/>
|
||||||
|
<SwitchPreference android:title="@string/revanced_hide_action_button_index_0_title" android:key="revanced_hide_action_button_index_0" android:summaryOn="@string/revanced_hide_action_button_index_0_summary_on" android:summaryOff="@string/revanced_hide_action_button_index_0_summary_off" />
|
||||||
|
<SwitchPreference android:title="@string/revanced_hide_action_button_index_1_title" android:key="revanced_hide_action_button_index_1" android:summaryOn="@string/revanced_hide_action_button_index_1_summary_on" android:summaryOff="@string/revanced_hide_action_button_index_1_summary_off" />
|
||||||
|
<SwitchPreference android:title="@string/revanced_hide_action_button_index_2_title" android:key="revanced_hide_action_button_index_2" android:summaryOn="@string/revanced_hide_action_button_index_2_summary_on" android:summaryOff="@string/revanced_hide_action_button_index_2_summary_off" />
|
||||||
|
<SwitchPreference android:title="@string/revanced_hide_action_button_index_3_title" android:key="revanced_hide_action_button_index_3" android:summaryOn="@string/revanced_hide_action_button_index_3_summary_on" android:summaryOff="@string/revanced_hide_action_button_index_3_summary_off" />
|
||||||
|
<SwitchPreference android:title="@string/revanced_hide_action_button_index_4_title" android:key="revanced_hide_action_button_index_4" android:summaryOn="@string/revanced_hide_action_button_index_4_summary_on" android:summaryOff="@string/revanced_hide_action_button_index_4_summary_off" />
|
||||||
|
<SwitchPreference android:title="@string/revanced_hide_action_button_index_5_title" android:key="revanced_hide_action_button_index_5" android:summaryOn="@string/revanced_hide_action_button_index_5_summary_on" android:summaryOff="@string/revanced_hide_action_button_index_5_summary_off" />
|
||||||
|
<SwitchPreference android:title="@string/revanced_hide_action_button_index_6_title" android:key="revanced_hide_action_button_index_6" android:summaryOn="@string/revanced_hide_action_button_index_6_summary_on" android:summaryOff="@string/revanced_hide_action_button_index_6_summary_off" />
|
||||||
|
<SwitchPreference android:title="@string/revanced_hide_action_button_index_7_title" android:key="revanced_hide_action_button_index_7" android:summaryOn="@string/revanced_hide_action_button_index_7_summary_on" android:summaryOff="@string/revanced_hide_action_button_index_7_summary_off" />
|
||||||
|
|
||||||
|
<PreferenceCategory android:title="@string/revanced_preference_category_hide_by_index_live" android:layout="@layout/revanced_settings_preferences_category"/>
|
||||||
|
<SwitchPreference android:title="@string/revanced_hide_action_button_index_0_title" android:key="revanced_hide_action_button_index_live_0" android:summaryOn="@string/revanced_hide_action_button_index_0_summary_on" android:summaryOff="@string/revanced_hide_action_button_index_0_summary_off" />
|
||||||
|
<SwitchPreference android:title="@string/revanced_hide_action_button_index_1_title" android:key="revanced_hide_action_button_index_live_1" android:summaryOn="@string/revanced_hide_action_button_index_1_summary_on" android:summaryOff="@string/revanced_hide_action_button_index_1_summary_off" />
|
||||||
|
<SwitchPreference android:title="@string/revanced_hide_action_button_index_2_title" android:key="revanced_hide_action_button_index_live_2" android:summaryOn="@string/revanced_hide_action_button_index_2_summary_on" android:summaryOff="@string/revanced_hide_action_button_index_2_summary_off" />
|
||||||
|
<SwitchPreference android:title="@string/revanced_hide_action_button_index_3_title" android:key="revanced_hide_action_button_index_live_3" android:summaryOn="@string/revanced_hide_action_button_index_3_summary_on" android:summaryOff="@string/revanced_hide_action_button_index_3_summary_off" />
|
||||||
|
<SwitchPreference android:title="@string/revanced_hide_action_button_index_4_title" android:key="revanced_hide_action_button_index_live_4" android:summaryOn="@string/revanced_hide_action_button_index_4_summary_on" android:summaryOff="@string/revanced_hide_action_button_index_4_summary_off" />
|
||||||
|
<SwitchPreference android:title="@string/revanced_hide_action_button_index_5_title" android:key="revanced_hide_action_button_index_live_5" android:summaryOn="@string/revanced_hide_action_button_index_5_summary_on" android:summaryOff="@string/revanced_hide_action_button_index_5_summary_off" />
|
||||||
|
|
||||||
|
<Preference android:title="@string/revanced_hide_action_button_index_about_title" android:selectable="false" android:summary="@string/revanced_hide_action_button_index_about_summary" />SETTINGS: HIDE_BUTTONS_BY_INDEX -->
|
||||||
|
|
||||||
|
<!-- SETTINGS: HIDE_ACTION_BUTTONS
|
||||||
</PreferenceScreen>SETTINGS: HIDE_ACTION_BUTTONS -->
|
</PreferenceScreen>SETTINGS: HIDE_ACTION_BUTTONS -->
|
||||||
|
|
||||||
<!-- SETTINGS: AMBIENT_MODE_CONTROLS
|
<!-- SETTINGS: AMBIENT_MODE_CONTROLS
|
||||||
|
Loading…
x
Reference in New Issue
Block a user