From 8e5ea0a8d80959975d52c0af1160ed89eab6b99a Mon Sep 17 00:00:00 2001 From: inotia00 <108592928+inotia00@users.noreply.github.com> Date: Tue, 11 Feb 2025 16:51:13 +0900 Subject: [PATCH] chore(YouTube - Miniplayer): Move `Miniplayer` from PreferenceScreen `General` to PreferenceScreen `Player` https://github.com/inotia00/ReVanced_Extended/issues/2725 --- .../{general => player}/MiniplayerPatch.java | 14 +-- .../extension/youtube/settings/Settings.java | 38 +++---- .../miniplayer/Fingerprints.kt | 2 +- .../miniplayer/MiniplayerPatch.kt | 9 +- .../youtube/settings/host/values/strings.xml | 106 +++++++++--------- .../youtube/settings/xml/revanced_prefs.xml | 96 ++++++++-------- 6 files changed, 134 insertions(+), 131 deletions(-) rename extensions/shared/src/main/java/app/revanced/extension/youtube/patches/{general => player}/MiniplayerPatch.java (95%) rename patches/src/main/kotlin/app/revanced/patches/youtube/{general => player}/miniplayer/Fingerprints.kt (99%) rename patches/src/main/kotlin/app/revanced/patches/youtube/{general => player}/miniplayer/MiniplayerPatch.kt (98%) diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/general/MiniplayerPatch.java b/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/player/MiniplayerPatch.java similarity index 95% rename from extensions/shared/src/main/java/app/revanced/extension/youtube/patches/general/MiniplayerPatch.java rename to extensions/shared/src/main/java/app/revanced/extension/youtube/patches/player/MiniplayerPatch.java index 6476683b3..2ff66e4dd 100644 --- a/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/general/MiniplayerPatch.java +++ b/extensions/shared/src/main/java/app/revanced/extension/youtube/patches/player/MiniplayerPatch.java @@ -1,12 +1,12 @@ -package app.revanced.extension.youtube.patches.general; +package app.revanced.extension.youtube.patches.player; import static app.revanced.extension.shared.utils.StringRef.str; -import static app.revanced.extension.youtube.patches.general.MiniplayerPatch.MiniplayerType.DEFAULT; -import static app.revanced.extension.youtube.patches.general.MiniplayerPatch.MiniplayerType.DISABLED; -import static app.revanced.extension.youtube.patches.general.MiniplayerPatch.MiniplayerType.MODERN_1; -import static app.revanced.extension.youtube.patches.general.MiniplayerPatch.MiniplayerType.MODERN_2; -import static app.revanced.extension.youtube.patches.general.MiniplayerPatch.MiniplayerType.MODERN_3; -import static app.revanced.extension.youtube.patches.general.MiniplayerPatch.MiniplayerType.MODERN_4; +import static app.revanced.extension.youtube.patches.player.MiniplayerPatch.MiniplayerType.DEFAULT; +import static app.revanced.extension.youtube.patches.player.MiniplayerPatch.MiniplayerType.DISABLED; +import static app.revanced.extension.youtube.patches.player.MiniplayerPatch.MiniplayerType.MODERN_1; +import static app.revanced.extension.youtube.patches.player.MiniplayerPatch.MiniplayerType.MODERN_2; +import static app.revanced.extension.youtube.patches.player.MiniplayerPatch.MiniplayerType.MODERN_3; +import static app.revanced.extension.youtube.patches.player.MiniplayerPatch.MiniplayerType.MODERN_4; import static app.revanced.extension.youtube.utils.ExtendedUtils.IS_19_20_OR_GREATER; import static app.revanced.extension.youtube.utils.ExtendedUtils.IS_19_21_OR_GREATER; import static app.revanced.extension.youtube.utils.ExtendedUtils.IS_19_26_OR_GREATER; diff --git a/extensions/shared/src/main/java/app/revanced/extension/youtube/settings/Settings.java b/extensions/shared/src/main/java/app/revanced/extension/youtube/settings/Settings.java index 24d69e881..c78302d20 100644 --- a/extensions/shared/src/main/java/app/revanced/extension/youtube/settings/Settings.java +++ b/extensions/shared/src/main/java/app/revanced/extension/youtube/settings/Settings.java @@ -6,11 +6,11 @@ import static app.revanced.extension.shared.settings.Setting.migrateFromOldPrefe import static app.revanced.extension.shared.settings.Setting.parent; import static app.revanced.extension.shared.settings.Setting.parentsAny; import static app.revanced.extension.shared.utils.StringRef.str; -import static app.revanced.extension.youtube.patches.general.MiniplayerPatch.MiniplayerType; -import static app.revanced.extension.youtube.patches.general.MiniplayerPatch.MiniplayerType.MODERN_1; -import static app.revanced.extension.youtube.patches.general.MiniplayerPatch.MiniplayerType.MODERN_2; -import static app.revanced.extension.youtube.patches.general.MiniplayerPatch.MiniplayerType.MODERN_3; -import static app.revanced.extension.youtube.patches.general.MiniplayerPatch.MiniplayerType.MODERN_4; +import static app.revanced.extension.youtube.patches.player.MiniplayerPatch.MiniplayerType; +import static app.revanced.extension.youtube.patches.player.MiniplayerPatch.MiniplayerType.MODERN_1; +import static app.revanced.extension.youtube.patches.player.MiniplayerPatch.MiniplayerType.MODERN_2; +import static app.revanced.extension.youtube.patches.player.MiniplayerPatch.MiniplayerType.MODERN_3; +import static app.revanced.extension.youtube.patches.player.MiniplayerPatch.MiniplayerType.MODERN_4; import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehaviour.MANUAL_SKIP; import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehaviour.SKIP_AUTOMATICALLY; import static app.revanced.extension.youtube.sponsorblock.objects.CategoryBehaviour.SKIP_AUTOMATICALLY_ONCE; @@ -35,9 +35,9 @@ import app.revanced.extension.youtube.patches.alternativethumbnails.AlternativeT import app.revanced.extension.youtube.patches.general.ChangeStartPagePatch; import app.revanced.extension.youtube.patches.general.ChangeStartPagePatch.StartPage; import app.revanced.extension.youtube.patches.general.LayoutSwitchPatch.FormFactor; -import app.revanced.extension.youtube.patches.general.MiniplayerPatch; import app.revanced.extension.youtube.patches.general.YouTubeMusicActionsPatch; import app.revanced.extension.youtube.patches.player.ExitFullscreenPatch.FullscreenMode; +import app.revanced.extension.youtube.patches.player.MiniplayerPatch; import app.revanced.extension.youtube.patches.shorts.AnimationFeedbackPatch.AnimationType; import app.revanced.extension.youtube.patches.shorts.ShortsRepeatStatePatch.ShortsLoopBehavior; import app.revanced.extension.youtube.patches.utils.PatchStatus; @@ -169,19 +169,6 @@ public class Settings extends BaseSettings { public static final BooleanSetting CUSTOM_FILTER = new BooleanSetting("revanced_custom_filter", FALSE); public static final StringSetting CUSTOM_FILTER_STRINGS = new StringSetting("revanced_custom_filter_strings", "", true, parent(CUSTOM_FILTER)); - // PreferenceScreen: General - Miniplayer - public static final EnumSetting MINIPLAYER_TYPE = new EnumSetting<>("revanced_miniplayer_type", MiniplayerType.DEFAULT, true); - private static final Setting.Availability MINIPLAYER_ANY_MODERN = MINIPLAYER_TYPE.availability(MODERN_1, MODERN_2, MODERN_3, MODERN_4); - public static final BooleanSetting MINIPLAYER_DOUBLE_TAP_ACTION = new BooleanSetting("revanced_miniplayer_double_tap_action", TRUE, true, MINIPLAYER_ANY_MODERN); - public static final BooleanSetting MINIPLAYER_DRAG_AND_DROP = new BooleanSetting("revanced_miniplayer_drag_and_drop", TRUE, true, MINIPLAYER_ANY_MODERN); - public static final BooleanSetting MINIPLAYER_HORIZONTAL_DRAG = new BooleanSetting("revanced_miniplayer_horizontal_drag", FALSE, true, new MiniplayerPatch.MiniplayerHorizontalDragAvailability()); - public static final BooleanSetting MINIPLAYER_HIDE_OVERLAY_BUTTONS = new BooleanSetting("revanced_miniplayer_hide_overlay_buttons", FALSE, true, new MiniplayerPatch.MiniplayerHideOverlayButtonsAvailability()); - public static final BooleanSetting MINIPLAYER_HIDE_SUBTEXT = new BooleanSetting("revanced_miniplayer_hide_subtext", FALSE, true, MINIPLAYER_TYPE.availability(MODERN_1, MODERN_3, MODERN_4)); - public static final BooleanSetting MINIPLAYER_HIDE_REWIND_FORWARD = new BooleanSetting("revanced_miniplayer_hide_rewind_forward", TRUE, true, MINIPLAYER_TYPE.availability(MODERN_1)); - public static final BooleanSetting MINIPLAYER_ROUNDED_CORNERS = new BooleanSetting("revanced_miniplayer_rounded_corners", TRUE, true, MINIPLAYER_ANY_MODERN); - public static final IntegerSetting MINIPLAYER_WIDTH_DIP = new IntegerSetting("revanced_miniplayer_width_dip", 192, true, MINIPLAYER_ANY_MODERN); - public static final IntegerSetting MINIPLAYER_OPACITY = new IntegerSetting("revanced_miniplayer_opacity", 100, true, MINIPLAYER_TYPE.availability(MODERN_1)); - // PreferenceScreen: General - Navigation Bar public static final BooleanSetting ENABLE_NARROW_NAVIGATION_BUTTONS = new BooleanSetting("revanced_enable_narrow_navigation_buttons", FALSE, true); public static final BooleanSetting HIDE_NAVIGATION_CREATE_BUTTON = new BooleanSetting("revanced_hide_navigation_create_button", TRUE, true); @@ -377,6 +364,19 @@ public class Settings extends BaseSettings { public static final BooleanSetting DISABLE_HAPTIC_FEEDBACK_SEEK_UNDO = new BooleanSetting("revanced_disable_haptic_feedback_seek_undo", FALSE); public static final BooleanSetting DISABLE_HAPTIC_FEEDBACK_ZOOM = new BooleanSetting("revanced_disable_haptic_feedback_zoom", FALSE); + // PreferenceScreen: Player - Miniplayer + public static final EnumSetting MINIPLAYER_TYPE = new EnumSetting<>("revanced_miniplayer_type", MiniplayerType.DEFAULT, true); + private static final Setting.Availability MINIPLAYER_ANY_MODERN = MINIPLAYER_TYPE.availability(MODERN_1, MODERN_2, MODERN_3, MODERN_4); + public static final BooleanSetting MINIPLAYER_DOUBLE_TAP_ACTION = new BooleanSetting("revanced_miniplayer_double_tap_action", TRUE, true, MINIPLAYER_ANY_MODERN); + public static final BooleanSetting MINIPLAYER_DRAG_AND_DROP = new BooleanSetting("revanced_miniplayer_drag_and_drop", TRUE, true, MINIPLAYER_ANY_MODERN); + public static final BooleanSetting MINIPLAYER_HORIZONTAL_DRAG = new BooleanSetting("revanced_miniplayer_horizontal_drag", FALSE, true, new MiniplayerPatch.MiniplayerHorizontalDragAvailability()); + public static final BooleanSetting MINIPLAYER_HIDE_OVERLAY_BUTTONS = new BooleanSetting("revanced_miniplayer_hide_overlay_buttons", FALSE, true, new MiniplayerPatch.MiniplayerHideOverlayButtonsAvailability()); + public static final BooleanSetting MINIPLAYER_HIDE_SUBTEXT = new BooleanSetting("revanced_miniplayer_hide_subtext", FALSE, true, MINIPLAYER_TYPE.availability(MODERN_1, MODERN_3, MODERN_4)); + public static final BooleanSetting MINIPLAYER_HIDE_REWIND_FORWARD = new BooleanSetting("revanced_miniplayer_hide_rewind_forward", TRUE, true, MINIPLAYER_TYPE.availability(MODERN_1)); + public static final BooleanSetting MINIPLAYER_ROUNDED_CORNERS = new BooleanSetting("revanced_miniplayer_rounded_corners", TRUE, true, MINIPLAYER_ANY_MODERN); + public static final IntegerSetting MINIPLAYER_WIDTH_DIP = new IntegerSetting("revanced_miniplayer_width_dip", 192, true, MINIPLAYER_ANY_MODERN); + public static final IntegerSetting MINIPLAYER_OPACITY = new IntegerSetting("revanced_miniplayer_opacity", 100, true, MINIPLAYER_TYPE.availability(MODERN_1)); + // PreferenceScreen: Player - Player buttons public static final BooleanSetting HIDE_PLAYER_AUTOPLAY_BUTTON = new BooleanSetting("revanced_hide_player_autoplay_button", TRUE, true); public static final BooleanSetting HIDE_PLAYER_CAPTIONS_BUTTON = new BooleanSetting("revanced_hide_player_captions_button", FALSE, true); diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/general/miniplayer/Fingerprints.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/player/miniplayer/Fingerprints.kt similarity index 99% rename from patches/src/main/kotlin/app/revanced/patches/youtube/general/miniplayer/Fingerprints.kt rename to patches/src/main/kotlin/app/revanced/patches/youtube/player/miniplayer/Fingerprints.kt index bf4d6c797..4569531c8 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/general/miniplayer/Fingerprints.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/player/miniplayer/Fingerprints.kt @@ -1,6 +1,6 @@ @file:Suppress("SpellCheckingInspection") -package app.revanced.patches.youtube.general.miniplayer +package app.revanced.patches.youtube.player.miniplayer import app.revanced.patches.youtube.utils.resourceid.floatyBarTopMargin import app.revanced.patches.youtube.utils.resourceid.miniplayerMaxSize diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/general/miniplayer/MiniplayerPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/player/miniplayer/MiniplayerPatch.kt similarity index 98% rename from patches/src/main/kotlin/app/revanced/patches/youtube/general/miniplayer/MiniplayerPatch.kt rename to patches/src/main/kotlin/app/revanced/patches/youtube/player/miniplayer/MiniplayerPatch.kt index 80e8990e9..6caf9882c 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/general/miniplayer/MiniplayerPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/player/miniplayer/MiniplayerPatch.kt @@ -1,4 +1,4 @@ -package app.revanced.patches.youtube.general.miniplayer +package app.revanced.patches.youtube.player.miniplayer import app.revanced.patcher.extensions.InstructionExtensions.addInstruction import app.revanced.patcher.extensions.InstructionExtensions.addInstructions @@ -8,7 +8,7 @@ import app.revanced.patcher.patch.bytecodePatch import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod import app.revanced.patcher.util.proxy.mutableTypes.MutableMethod.Companion.toMutable import app.revanced.patches.youtube.utils.compatibility.Constants.COMPATIBLE_PACKAGE -import app.revanced.patches.youtube.utils.extension.Constants.GENERAL_PATH +import app.revanced.patches.youtube.utils.extension.Constants.PLAYER_PATH import app.revanced.patches.youtube.utils.patch.PatchList.MINIPLAYER import app.revanced.patches.youtube.utils.playservice.is_19_15_or_greater import app.revanced.patches.youtube.utils.playservice.is_19_17_or_greater @@ -55,7 +55,7 @@ import com.android.tools.smali.dexlib2.immutable.ImmutableMethod import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter private const val EXTENSION_CLASS_DESCRIPTOR = - "$GENERAL_PATH/MiniplayerPatch;" + "$PLAYER_PATH/MiniplayerPatch;" // YT uses "Miniplayer" without a space between 'mini' and 'player: https://support.google.com/youtube/answer/9162927. @Suppress("unused", "SpellCheckingInspection") @@ -74,7 +74,8 @@ val miniplayerPatch = bytecodePatch( execute { var settingArray = arrayOf( - "PREFERENCE_SCREEN: GENERAL" + "PREFERENCE_SCREEN: PLAYER", + "SETTINGS: MINIPLAYER_COMPONENTS" ) fun Method.findReturnIndicesReversed() = diff --git a/patches/src/main/resources/youtube/settings/host/values/strings.xml b/patches/src/main/resources/youtube/settings/host/values/strings.xml index 86858b66e..15a84fd39 100644 --- a/patches/src/main/resources/youtube/settings/host/values/strings.xml +++ b/patches/src/main/resources/youtube/settings/host/values/strings.xml @@ -526,59 +526,6 @@ Some components may not be hidden." Prerequisite YouTube Music is required to override button action. Tap here to download YouTube Music. - - Miniplayer - Change the style of the in-app minimized player. - - Miniplayer type - Disabled - Default - Minimal - Tablet - Modern 1 - Modern 2 - Modern 3 - Modern 4 - Enable rounded corners - Corners are rounded. - Corners are square. - Enable double-tap and pinch to resize - "Double-tap action and pinch to resize is enabled. - -• Double tap to increase miniplayer size. -• Double tap again to restore original size." - Double-tap action and pinch to resize is disabled. - Enable drag and drop - "Drag and drop is enabled. - -Miniplayer can be dragged to any corner of the screen." - Drag and drop is disabled. - Enable horizontal drag gesture. - "Horizontal drag gesture enabled. - -Miniplayer can be dragged off-screen to the left or right." - Horizontal drag gesture disabled. - Hide overlay buttons - Overlay buttons are hidden. - Overlay buttons are shown. - Hide expand and close buttons - "Buttons are hidden. - -Swipe to expand or close." - Expand and close buttons are shown. - Hide skip forward and back buttons - Skip forward and back are hidden. - Skip forward and back are shown. - Hide subtexts - Subtexts are hidden. - Subtexts are shown. - Initial size - Initial on screen size, in pixels. - Pixel size must be between %1$s and %2$s. - Overlay opacity - Opacity value between 0-100, where 0 is transparent. - Miniplayer overlay opacity must be between 0-100. - Navigation bar Hide or show navigation bar section components. @@ -1136,6 +1083,59 @@ Limitation: Video title disappears when clicked." Haptic feedback is disabled. Haptic feedback is enabled. + + Miniplayer + Change the style of the in-app minimized player. + + Miniplayer type + Disabled + Default + Minimal + Tablet + Modern 1 + Modern 2 + Modern 3 + Modern 4 + Enable rounded corners + Corners are rounded. + Corners are square. + Enable double-tap and pinch to resize + "Double-tap action and pinch to resize is enabled. + +• Double tap to increase miniplayer size. +• Double tap again to restore original size." + Double-tap action and pinch to resize is disabled. + Enable drag and drop + "Drag and drop is enabled. + +Miniplayer can be dragged to any corner of the screen." + Drag and drop is disabled. + Enable horizontal drag gesture. + "Horizontal drag gesture enabled. + +Miniplayer can be dragged off-screen to the left or right." + Horizontal drag gesture disabled. + Hide overlay buttons + Overlay buttons are hidden. + Overlay buttons are shown. + Hide expand and close buttons + "Buttons are hidden. + +Swipe to expand or close." + Expand and close buttons are shown. + Hide skip forward and back buttons + Skip forward and back are hidden. + Skip forward and back are shown. + Hide subtexts + Subtexts are hidden. + Subtexts are shown. + Initial size + Initial on screen size, in pixels. + Pixel size must be between %1$s and %2$s. + Overlay opacity + Opacity value between 0-100, where 0 is transparent. + Miniplayer overlay opacity must be between 0-100. + Player buttons Hide or show buttons in the video player. diff --git a/patches/src/main/resources/youtube/settings/xml/revanced_prefs.xml b/patches/src/main/resources/youtube/settings/xml/revanced_prefs.xml index eb402adbb..0fe309bd4 100644 --- a/patches/src/main/resources/youtube/settings/xml/revanced_prefs.xml +++ b/patches/src/main/resources/youtube/settings/xml/revanced_prefs.xml @@ -162,49 +162,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -461,6 +415,54 @@ SETTINGS: DISABLE_HAPTIC_FEEDBACK --> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -909,7 +911,6 @@ - @@ -927,6 +928,7 @@ +