feat(YouTube/Overlay button): add Whitelist
overlay button
@ -83,7 +83,8 @@ object OverlayButtonsPatch : BaseResourcePatch(
|
||||
"CopyVideoUrlTimestamp;",
|
||||
"ExternalDownload;",
|
||||
"SpeedDialog;",
|
||||
"TimeOrderedPlaylist;"
|
||||
"TimeOrderedPlaylist;",
|
||||
"Whitelists;"
|
||||
).forEach { className ->
|
||||
PlayerControlsPatch.hookOverlayButtons("$OVERLAY_BUTTONS_PATH/$className")
|
||||
}
|
||||
@ -110,11 +111,12 @@ object OverlayButtonsPatch : BaseResourcePatch(
|
||||
"quantum_ic_fullscreen_exit_white_24.png",
|
||||
"quantum_ic_fullscreen_grey600_24.png",
|
||||
"quantum_ic_fullscreen_white_24.png",
|
||||
"revanced_time_ordered_playlist.png",
|
||||
"revanced_time_ordered_playlist_icon.png",
|
||||
"revanced_copy_icon.png",
|
||||
"revanced_copy_icon_with_time.png",
|
||||
"revanced_download_icon.png",
|
||||
"revanced_speed_icon.png",
|
||||
"revanced_whitelist_icon.png",
|
||||
"yt_fill_arrow_repeat_white_24.png",
|
||||
"yt_outline_arrow_repeat_1_white_24.png",
|
||||
"yt_outline_arrow_shuffle_1_white_24.png",
|
||||
|
@ -12,6 +12,7 @@ import app.revanced.patches.youtube.utils.fingerprints.SeekbarOnDrawFingerprint
|
||||
import app.revanced.patches.youtube.utils.fingerprints.TotalTimeFingerprint
|
||||
import app.revanced.patches.youtube.utils.fingerprints.YouTubeControlsOverlayFingerprint
|
||||
import app.revanced.patches.youtube.utils.integrations.Constants.INTEGRATIONS_PATH
|
||||
import app.revanced.patches.youtube.utils.integrations.Constants.PATCH_STATUS_CLASS_DESCRIPTOR
|
||||
import app.revanced.patches.youtube.utils.playercontrols.PlayerControlsPatch
|
||||
import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch
|
||||
import app.revanced.patches.youtube.utils.resourceid.SharedResourceIdPatch.InsetOverlayViewLayout
|
||||
@ -24,6 +25,7 @@ import app.revanced.util.getTargetIndexWithMethodReferenceName
|
||||
import app.revanced.util.getTargetIndexWithMethodReferenceNameReversed
|
||||
import app.revanced.util.getWideLiteralInstructionIndex
|
||||
import app.revanced.util.resultOrThrow
|
||||
import app.revanced.util.updatePatchStatus
|
||||
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
|
||||
@ -172,5 +174,8 @@ object SponsorBlockBytecodePatch : BytecodePatch(
|
||||
|
||||
// Set current video id
|
||||
VideoInformationPatch.hook("$INTEGRATIONS_SEGMENT_PLAYBACK_CONTROLLER_CLASS_DESCRIPTOR->newVideoStarted(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JZ)V")
|
||||
|
||||
context.updatePatchStatus(PATCH_STATUS_CLASS_DESCRIPTOR, "SponsorBlock")
|
||||
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 632 B After Width: | Height: | Size: 632 B |
After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 657 B After Width: | Height: | Size: 657 B |
After Width: | Height: | Size: 1.5 KiB |
@ -2,8 +2,9 @@
|
||||
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:yt="http://schemas.android.com/apk/res-auto" android:id="@+id/youtube_controls_bottom_ui_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:layoutDirection="ltr">
|
||||
<com.google.android.libraries.youtube.common.ui.TouchImageView android:id="@+id/speed_dialog_button" android:paddingLeft="0.0dip" android:paddingTop="22.0dip" android:paddingRight="0.0dip" android:paddingBottom="22.0dip" android:longClickable="false" android:layout_width="48.0dip" android:layout_height="48.0dip" android:src="@drawable/revanced_speed_icon" android:scaleType="center" yt:layout_constraintBottom_toTopOf="@+id/quick_actions_container" yt:layout_constraintRight_toLeftOf="@+id/copy_video_url_button" style="@style/YouTubePlayerButton"/>
|
||||
<com.google.android.libraries.youtube.common.ui.TouchImageView android:id="@+id/copy_video_url_button" android:paddingLeft="0.0dip" android:paddingTop="22.0dip" android:paddingRight="0.0dip" android:paddingBottom="22.0dip" android:longClickable="false" android:layout_width="48.0dip" android:layout_height="48.0dip" android:src="@drawable/revanced_copy_icon" android:scaleType="center" yt:layout_constraintBottom_toTopOf="@+id/quick_actions_container" yt:layout_constraintRight_toLeftOf="@+id/copy_video_url_timestamp_button" style="@style/YouTubePlayerButton"/>
|
||||
<com.google.android.libraries.youtube.common.ui.TouchImageView android:id="@+id/copy_video_url_timestamp_button" android:paddingLeft="0.0dip" android:paddingTop="22.0dip" android:paddingRight="0.0dip" android:paddingBottom="22.0dip" android:longClickable="false" android:layout_width="48.0dip" android:layout_height="48.0dip" android:src="@drawable/revanced_copy_icon_with_time" android:scaleType="center" yt:layout_constraintBottom_toTopOf="@+id/quick_actions_container" yt:layout_constraintRight_toLeftOf="@+id/time_ordered_playlist_button" style="@style/YouTubePlayerButton"/>
|
||||
<com.google.android.libraries.youtube.common.ui.TouchImageView android:id="@+id/time_ordered_playlist_button" android:paddingLeft="0.0dip" android:paddingTop="22.0dip" android:paddingRight="0.0dip" android:paddingBottom="22.0dip" android:longClickable="false" android:layout_width="48.0dip" android:layout_height="48.0dip" android:src="@drawable/revanced_time_ordered_playlist" android:scaleType="center" yt:layout_constraintBottom_toTopOf="@+id/quick_actions_container" yt:layout_constraintRight_toLeftOf="@+id/always_repeat_button" style="@style/YouTubePlayerButton"/>
|
||||
<com.google.android.libraries.youtube.common.ui.TouchImageView android:id="@+id/copy_video_url_timestamp_button" android:paddingLeft="0.0dip" android:paddingTop="22.0dip" android:paddingRight="0.0dip" android:paddingBottom="22.0dip" android:longClickable="false" android:layout_width="48.0dip" android:layout_height="48.0dip" android:src="@drawable/revanced_copy_icon_with_time" android:scaleType="center" yt:layout_constraintBottom_toTopOf="@+id/quick_actions_container" yt:layout_constraintRight_toLeftOf="@+id/whitelist_button" style="@style/YouTubePlayerButton"/>
|
||||
<com.google.android.libraries.youtube.common.ui.TouchImageView android:id="@+id/whitelist_button" android:paddingLeft="0.0dip" android:paddingTop="22.0dip" android:paddingRight="0.0dip" android:paddingBottom="22.0dip" android:longClickable="false" android:layout_width="48.0dip" android:layout_height="48.0dip" android:src="@drawable/revanced_whitelist_icon" android:scaleType="center" yt:layout_constraintBottom_toTopOf="@+id/quick_actions_container" yt:layout_constraintRight_toLeftOf="@+id/time_ordered_playlist_button" style="@style/YouTubePlayerButton"/>
|
||||
<com.google.android.libraries.youtube.common.ui.TouchImageView android:id="@+id/time_ordered_playlist_button" android:paddingLeft="0.0dip" android:paddingTop="22.0dip" android:paddingRight="0.0dip" android:paddingBottom="22.0dip" android:longClickable="false" android:layout_width="48.0dip" android:layout_height="48.0dip" android:src="@drawable/revanced_time_ordered_playlist_icon" android:scaleType="center" yt:layout_constraintBottom_toTopOf="@+id/quick_actions_container" yt:layout_constraintRight_toLeftOf="@+id/always_repeat_button" style="@style/YouTubePlayerButton"/>
|
||||
<com.google.android.libraries.youtube.common.ui.TouchImageView android:id="@+id/always_repeat_button" android:paddingLeft="0.0dip" android:paddingTop="22.0dip" android:paddingRight="0.0dip" android:paddingBottom="22.0dip" android:longClickable="false" android:layout_width="48.0dip" android:layout_height="48.0dip" android:src="@drawable/revanced_repeat_icon" android:scaleType="center" yt:layout_constraintBottom_toTopOf="@+id/quick_actions_container" yt:layout_constraintRight_toLeftOf="@+id/external_download_button" style="@style/YouTubePlayerButton"/>
|
||||
<com.google.android.libraries.youtube.common.ui.TouchImageView android:id="@+id/external_download_button" android:paddingLeft="0.0dip" android:paddingTop="22.0dip" android:paddingRight="0.0dip" android:paddingBottom="22.0dip" android:longClickable="false" android:layout_width="48.0dip" android:layout_height="48.0dip" android:src="@drawable/revanced_download_icon" android:scaleType="center" yt:layout_constraintBottom_toTopOf="@+id/quick_actions_container" yt:layout_constraintRight_toLeftOf="@+id/fullscreen_button" style="@style/YouTubePlayerButton"/>
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
|
Before Width: | Height: | Size: 491 B After Width: | Height: | Size: 491 B |
After Width: | Height: | Size: 1.6 KiB |
@ -812,12 +812,28 @@ Tap and hold to copy video timestamp."</string>
|
||||
<string name="revanced_overlay_button_external_downloader_summary">Tap to launch external downloader.</string>
|
||||
<string name="revanced_overlay_button_speed_dialog_title">Show speed dialog button</string>
|
||||
<string name="revanced_overlay_button_speed_dialog_summary">"Tap to open speed dialog.
|
||||
Tap and hold to set playback speed to 1.0x."</string>
|
||||
<string name="revanced_overlay_button_speed_dialog_reset">Playback speed reset: %sx</string>
|
||||
Tap and hold to reset playback speed to 1.0x. Tap and hold again to reset back to default speed."</string>
|
||||
<string name="revanced_overlay_button_whitelist_title">Show whitelist button</string>
|
||||
<string name="revanced_overlay_button_whitelist_summary">"Tap to open whitelist dialog.
|
||||
Tap and hold to open whitelist setting dialog.</string>
|
||||
|
||||
<string name="revanced_overlay_button_time_ordered_playlist_title">Show time-ordered playlist button</string>
|
||||
<string name="revanced_overlay_button_time_ordered_playlist_summary">"Tap to generate a playlist of all videos from channel from oldest to newest.
|
||||
Tap and hold to undo."</string>
|
||||
<string name="revanced_overlay_button_not_allowed_warning">Tap and hold to change button state.</string>
|
||||
|
||||
<string name="revanced_whitelist_settings_title">Channel whitelist</string>
|
||||
<string name="revanced_whitelist_settings_summary">Check or remove the list of channels added to the whitelist.</string>
|
||||
<string name="revanced_whitelist_added">Channel \'%1$s\' was added to the %2$s whitelist.</string>
|
||||
<string name="revanced_whitelist_add_failed">Failed to add channel \'%1$s\' to the %2$s whitelist.</string>
|
||||
<string name="revanced_whitelist_removed">Channel \'%1$s\' was removed from the %2$s whitelist.</string>
|
||||
<string name="revanced_whitelist_remove_failed">Failed to remove channel \'%1$s\' from the %2$s whitelist.</string>
|
||||
<string name="revanced_whitelist_remove_dialog_message">Remove channel \'%1$s\' from %2$s whitelist?</string>
|
||||
<string name="revanced_whitelist_empty">There are no whitelisted channels.</string>
|
||||
<string name="revanced_whitelist_excluded">Not added to whitelist.</string>
|
||||
<string name="revanced_whitelist_included">Added to whitelist.</string>
|
||||
<string name="revanced_whitelist_playback_speed">Playback speed</string>
|
||||
<string name="revanced_whitelist_sponsor_block">SponsorBlock</string>
|
||||
<string name="revanced_whitelist_failure_generic">Failed to load channel information.</string>
|
||||
|
||||
<string name="revanced_external_downloader_package_name_title">External downloader package name</string>
|
||||
<string name="revanced_external_downloader_package_name_summary">Package name of your installed external downloader app, such as NewPipe or YTDLnis.</string>
|
||||
@ -830,6 +846,8 @@ Please download %2$s from the website."</string>
|
||||
<string name="revanced_external_downloader_action_summary_on">Native download button opens your external downloader.</string>
|
||||
<string name="revanced_external_downloader_action_summary_off">Native download button opens the native in-app downloader.</string>
|
||||
|
||||
<string name="revanced_overlay_button_speed_dialog_reset">Playback speed reset: %sx.</string>
|
||||
<string name="revanced_overlay_button_not_allowed_warning">Tap and hold to change button state.</string>
|
||||
<string name="revanced_share_copy_timestamp_success">Time stamp copied to clipboard. (%s)</string>
|
||||
<string name="revanced_share_copy_url_success">URL copied to clipboard.</string>
|
||||
<string name="revanced_share_copy_url_timestamp_success">URL with timestamp copied to clipboard.</string>
|
||||
|
@ -343,7 +343,9 @@
|
||||
<SwitchPreference android:title="@string/revanced_overlay_button_copy_video_url_timestamp_title" android:key="revanced_overlay_button_copy_video_url_timestamp" android:defaultValue="false" android:summary="@string/revanced_overlay_button_copy_video_url_timestamp_summary" />
|
||||
<SwitchPreference android:title="@string/revanced_overlay_button_external_downloader_title" android:key="revanced_overlay_button_external_downloader" android:defaultValue="false" android:summary="@string/revanced_overlay_button_external_downloader_summary" />
|
||||
<SwitchPreference android:title="@string/revanced_overlay_button_speed_dialog_title" android:key="revanced_overlay_button_speed_dialog" android:defaultValue="false" android:summary="@string/revanced_overlay_button_speed_dialog_summary" />
|
||||
<SwitchPreference android:title="@string/revanced_overlay_button_whitelist_title" android:key="revanced_overlay_button_whitelist" android:defaultValue="false" android:summary="@string/revanced_overlay_button_whitelist_summary" />
|
||||
<SwitchPreference android:title="@string/revanced_overlay_button_time_ordered_playlist_title" android:key="revanced_overlay_button_time_ordered_playlist" android:defaultValue="false" android:summary="@string/revanced_overlay_button_time_ordered_playlist_summary" />
|
||||
<app.revanced.integrations.youtube.settings.preference.WhitelistedChannelsPreference android:title="@string/revanced_whitelist_settings_title" android:key="revanced_whitelist_settings" android:summary="@string/revanced_whitelist_settings_summary" />
|
||||
<app.revanced.integrations.youtube.settings.preference.ExternalDownloaderPreference android:title="@string/revanced_external_downloader_package_name_title" android:summary="@string/revanced_external_downloader_package_name_summary" />
|
||||
<PreferenceCategory android:title="@string/revanced_preference_category_experimental_flag" android:layout="@layout/revanced_settings_preferences_category" />
|
||||
<SwitchPreference android:title="@string/revanced_external_downloader_action_title" android:key="revanced_external_downloader_action" android:defaultValue="false" android:summaryOn="@string/revanced_external_downloader_action_summary_on" android:summaryOff="@string/revanced_external_downloader_action_summary_off" />SETTINGS: OVERLAY_BUTTONS -->
|
||||
|