feat(YouTube - Hide layout components): Add Disable translucent status bar setting

This commit is contained in:
inotia00 2025-01-03 22:04:27 +09:00
parent 01bd3141b3
commit 945b91eebb
6 changed files with 48 additions and 4 deletions

View File

@ -128,6 +128,15 @@ public class GeneralPatch {
// region [Hide layout components] patch // region [Hide layout components] patch
public static boolean disableTranslucentStatusBar(boolean original) {
try {
return !Settings.DISABLE_TRANSLUCENT_STATUS_BAR.get() && original;
} catch (Exception ex) {
Logger.printException(() -> "Failed to load disableTranslucentStatusBar", ex);
}
return original;
}
private static String[] accountMenuBlockList; private static String[] accountMenuBlockList;
static { static {

View File

@ -148,6 +148,7 @@ public class Settings extends BaseSettings {
new ChangeStartPagePatch.ChangeStartPageTypeAvailability()); new ChangeStartPagePatch.ChangeStartPageTypeAvailability());
public static final BooleanSetting DISABLE_AUTO_AUDIO_TRACKS = new BooleanSetting("revanced_disable_auto_audio_tracks", FALSE); public static final BooleanSetting DISABLE_AUTO_AUDIO_TRACKS = new BooleanSetting("revanced_disable_auto_audio_tracks", FALSE);
public static final BooleanSetting DISABLE_SPLASH_ANIMATION = new BooleanSetting("revanced_disable_splash_animation", FALSE, true); public static final BooleanSetting DISABLE_SPLASH_ANIMATION = new BooleanSetting("revanced_disable_splash_animation", FALSE, true);
public static final BooleanSetting DISABLE_TRANSLUCENT_STATUS_BAR = new BooleanSetting("revanced_disable_translucent_status_bar", TRUE, true);
public static final BooleanSetting ENABLE_GRADIENT_LOADING_SCREEN = new BooleanSetting("revanced_enable_gradient_loading_screen", FALSE, true); public static final BooleanSetting ENABLE_GRADIENT_LOADING_SCREEN = new BooleanSetting("revanced_enable_gradient_loading_screen", FALSE, true);
public static final BooleanSetting HIDE_FLOATING_MICROPHONE = new BooleanSetting("revanced_hide_floating_microphone", TRUE, true); public static final BooleanSetting HIDE_FLOATING_MICROPHONE = new BooleanSetting("revanced_hide_floating_microphone", TRUE, true);
public static final BooleanSetting HIDE_GRAY_SEPARATOR = new BooleanSetting("revanced_hide_gray_separator", TRUE); public static final BooleanSetting HIDE_GRAY_SEPARATOR = new BooleanSetting("revanced_hide_gray_separator", TRUE);

View File

@ -134,3 +134,12 @@ internal val tooltipContentViewFingerprint = legacyFingerprint(
literals = listOf(toolTipContentView), literals = listOf(toolTipContentView),
) )
internal const val TRANSLUCENT_STATUS_BAR_FEATURE_FLAG = 45400535L
internal val translucentStatusBarFeatureFlagFingerprint = legacyFingerprint(
name = "translucentStatusBarFeatureFlagFingerprint",
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
returnType = "Z",
literals = listOf(TRANSLUCENT_STATUS_BAR_FEATURE_FLAG)
)

View File

@ -17,10 +17,13 @@ import app.revanced.patches.youtube.utils.extension.Constants.COMPONENTS_PATH
import app.revanced.patches.youtube.utils.extension.Constants.GENERAL_CLASS_DESCRIPTOR import app.revanced.patches.youtube.utils.extension.Constants.GENERAL_CLASS_DESCRIPTOR
import app.revanced.patches.youtube.utils.extension.Constants.GENERAL_PATH import app.revanced.patches.youtube.utils.extension.Constants.GENERAL_PATH
import app.revanced.patches.youtube.utils.patch.PatchList.HIDE_LAYOUT_COMPONENTS import app.revanced.patches.youtube.utils.patch.PatchList.HIDE_LAYOUT_COMPONENTS
import app.revanced.patches.youtube.utils.playservice.is_19_25_or_greater
import app.revanced.patches.youtube.utils.playservice.versionCheckPatch
import app.revanced.patches.youtube.utils.resourceid.accountSwitcherAccessibility import app.revanced.patches.youtube.utils.resourceid.accountSwitcherAccessibility
import app.revanced.patches.youtube.utils.resourceid.sharedResourceIdPatch import app.revanced.patches.youtube.utils.resourceid.sharedResourceIdPatch
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.util.fingerprint.injectLiteralInstructionBooleanCall
import app.revanced.util.fingerprint.matchOrThrow import app.revanced.util.fingerprint.matchOrThrow
import app.revanced.util.fingerprint.methodOrThrow import app.revanced.util.fingerprint.methodOrThrow
import app.revanced.util.fingerprint.mutableClassOrThrow import app.revanced.util.fingerprint.mutableClassOrThrow
@ -55,10 +58,16 @@ val layoutComponentsPatch = bytecodePatch(
sharedResourceIdPatch, sharedResourceIdPatch,
settingsMenuPatch, settingsMenuPatch,
viewGroupMarginLayoutParamsHookPatch, viewGroupMarginLayoutParamsHookPatch,
versionCheckPatch,
) )
execute { execute {
var settingArray = arrayOf(
"PREFERENCE_SCREEN: GENERAL",
"SETTINGS: HIDE_LAYOUT_COMPONENTS"
)
// region patch for disable pip notification // region patch for disable pip notification
pipNotificationFingerprint.matchOrThrow().let { pipNotificationFingerprint.matchOrThrow().let {
@ -86,6 +95,19 @@ val layoutComponentsPatch = bytecodePatch(
// endregion // endregion
// region patch for disable translucent status bar
if (is_19_25_or_greater) {
translucentStatusBarFeatureFlagFingerprint.injectLiteralInstructionBooleanCall(
TRANSLUCENT_STATUS_BAR_FEATURE_FLAG,
"$GENERAL_CLASS_DESCRIPTOR->disableTranslucentStatusBar(Z)Z"
)
settingArray += "SETTINGS: DISABLE_TRANSLUCENT_STATUS_BAR"
}
// endregion
// region patch for disable update screen // region patch for disable update screen
appBlockingCheckResultToStringFingerprint.mutableClassOrThrow().methods.first { method -> appBlockingCheckResultToStringFingerprint.mutableClassOrThrow().methods.first { method ->
@ -234,10 +256,7 @@ val layoutComponentsPatch = bytecodePatch(
// region add settings // region add settings
addPreference( addPreference(
arrayOf( settingArray,
"PREFERENCE_SCREEN: GENERAL",
"SETTINGS: HIDE_LAYOUT_COMPONENTS"
),
HIDE_LAYOUT_COMPONENTS HIDE_LAYOUT_COMPONENTS
) )

View File

@ -352,6 +352,9 @@ Limitation: Back button on the toolbar may not work."</string>
<string name="revanced_disable_splash_animation_title">Disable splash animation</string> <string name="revanced_disable_splash_animation_title">Disable splash animation</string>
<string name="revanced_disable_splash_animation_summary_on">Splash animation is disabled.</string> <string name="revanced_disable_splash_animation_summary_on">Splash animation is disabled.</string>
<string name="revanced_disable_splash_animation_summary_off">Splash animation is enabled.</string> <string name="revanced_disable_splash_animation_summary_off">Splash animation is enabled.</string>
<string name="revanced_disable_translucent_status_bar_title">Disable translucent status bar</string>
<string name="revanced_disable_translucent_status_bar_summary_on">Status bar is opaque.</string>
<string name="revanced_disable_translucent_status_bar_summary_off">Status bar is opaque or translucent.</string>
<string name="revanced_enable_gradient_loading_screen_title">Enable gradient loading screen</string> <string name="revanced_enable_gradient_loading_screen_title">Enable gradient loading screen</string>
<string name="revanced_enable_gradient_loading_screen_summary_on">Gradient loading screen is enabled.</string> <string name="revanced_enable_gradient_loading_screen_summary_on">Gradient loading screen is enabled.</string>
<string name="revanced_enable_gradient_loading_screen_summary_off">Gradient loading screen is disabled.</string> <string name="revanced_enable_gradient_loading_screen_summary_off">Gradient loading screen is disabled.</string>

View File

@ -281,6 +281,9 @@
<!-- SETTINGS: DISABLE_SPLASH_ANIMATION <!-- SETTINGS: DISABLE_SPLASH_ANIMATION
<SwitchPreference android:title="@string/revanced_disable_splash_animation_title" android:key="revanced_disable_splash_animation" android:summaryOn="@string/revanced_disable_splash_animation_summary_on" android:summaryOff="@string/revanced_disable_splash_animation_summary_off" />SETTINGS: DISABLE_SPLASH_ANIMATION --> <SwitchPreference android:title="@string/revanced_disable_splash_animation_title" android:key="revanced_disable_splash_animation" android:summaryOn="@string/revanced_disable_splash_animation_summary_on" android:summaryOff="@string/revanced_disable_splash_animation_summary_off" />SETTINGS: DISABLE_SPLASH_ANIMATION -->
<!-- SETTINGS: DISABLE_TRANSLUCENT_STATUS_BAR
<SwitchPreference android:title="@string/revanced_disable_translucent_status_bar_title" android:key="revanced_disable_translucent_status_bar" android:summaryOn="@string/revanced_disable_translucent_status_bar_summary_on" android:summaryOff="@string/revanced_disable_translucent_status_bar_summary_off" />SETTINGS: DISABLE_TRANSLUCENT_STATUS_BAR -->
<!-- SETTINGS: ENABLE_GRADIENT_LOADING_SCREEN <!-- SETTINGS: ENABLE_GRADIENT_LOADING_SCREEN
<SwitchPreference android:title="@string/revanced_enable_gradient_loading_screen_title" android:key="revanced_enable_gradient_loading_screen" android:summaryOn="@string/revanced_enable_gradient_loading_screen_summary_on" android:summaryOff="@string/revanced_enable_gradient_loading_screen_summary_off" />SETTINGS: ENABLE_GRADIENT_LOADING_SCREEN --> <SwitchPreference android:title="@string/revanced_enable_gradient_loading_screen_title" android:key="revanced_enable_gradient_loading_screen" android:summaryOn="@string/revanced_enable_gradient_loading_screen_summary_on" android:summaryOff="@string/revanced_enable_gradient_loading_screen_summary_off" />SETTINGS: ENABLE_GRADIENT_LOADING_SCREEN -->