From 2a784a47d18da90ce23fcd527eef1f6e2d8e166d Mon Sep 17 00:00:00 2001 From: LisoUseInAIKyrios <118716522+LisoUseInAIKyrios@users.noreply.github.com> Date: Thu, 20 Jul 2023 21:26:50 +0400 Subject: [PATCH] feat(youtube/theme): add a switch to enable/disable custom seekbar color (#442) --- .../patches/theme/ProgressBarDrawable.java | 3 +- .../patches/theme/SeekbarColorPatch.java | 42 +++++++++++-------- .../integrations/settings/SettingsEnum.java | 17 ++++++-- 3 files changed, 40 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/app/revanced/integrations/patches/theme/ProgressBarDrawable.java b/app/src/main/java/app/revanced/integrations/patches/theme/ProgressBarDrawable.java index 6050b514..28df3360 100644 --- a/app/src/main/java/app/revanced/integrations/patches/theme/ProgressBarDrawable.java +++ b/app/src/main/java/app/revanced/integrations/patches/theme/ProgressBarDrawable.java @@ -18,6 +18,7 @@ import app.revanced.integrations.settings.SettingsEnum; */ public class ProgressBarDrawable extends Drawable { + private final Paint paint = new Paint(); @Override @@ -25,7 +26,7 @@ public class ProgressBarDrawable extends Drawable { if (SettingsEnum.HIDE_SEEKBAR_THUMBNAIL.getBoolean()) { return; } - paint.setColor(SeekbarColorPatch.getCustomSeekbarColor()); + paint.setColor(SeekbarColorPatch.getSeekbarColor()); canvas.drawRect(getBounds(), paint); } diff --git a/app/src/main/java/app/revanced/integrations/patches/theme/SeekbarColorPatch.java b/app/src/main/java/app/revanced/integrations/patches/theme/SeekbarColorPatch.java index efedb5f4..942ff3c6 100644 --- a/app/src/main/java/app/revanced/integrations/patches/theme/SeekbarColorPatch.java +++ b/app/src/main/java/app/revanced/integrations/patches/theme/SeekbarColorPatch.java @@ -8,8 +8,10 @@ import app.revanced.integrations.utils.ReVancedUtils; public final class SeekbarColorPatch { + private static final boolean USE_SEEKBAR_CUSTOM_COLOR = SettingsEnum.SEEKBAR_CUSTOM_COLOR.getBoolean(); + /** - * Default color of seekbar. + * Default color of the seekbar. */ private static final int ORIGINAL_SEEKBAR_COLOR = 0xFFFF0000; @@ -19,9 +21,11 @@ public final class SeekbarColorPatch { private static final float ORIGINAL_SEEKBAR_COLOR_BRIGHTNESS; /** - * Color value of {@link SettingsEnum#SEEKBAR_COLOR} + * If {@link SettingsEnum#SEEKBAR_CUSTOM_COLOR} is enabled, + * this is the color value of {@link SettingsEnum#SEEKBAR_CUSTOM_COLOR_VALUE}. + * Otherwise this is {@link #ORIGINAL_SEEKBAR_COLOR}. */ - private static int customSeekbarColor; + private static int seekbarColor = ORIGINAL_SEEKBAR_COLOR; /** * Custom seekbar hue, saturation, and brightness values. @@ -33,22 +37,24 @@ public final class SeekbarColorPatch { Color.colorToHSV(ORIGINAL_SEEKBAR_COLOR, hsv); ORIGINAL_SEEKBAR_COLOR_BRIGHTNESS = hsv[2]; - loadCustomSeekbarColorHSV(); - } - - private static void loadCustomSeekbarColorHSV() { - try { - customSeekbarColor = Color.parseColor(SettingsEnum.SEEKBAR_COLOR.getString()); - Color.colorToHSV(customSeekbarColor, customSeekbarColorHSV); - } catch (Exception ex) { - ReVancedUtils.showToastShort("Invalid seekbar color value. Using default value."); - SettingsEnum.SEEKBAR_COLOR.saveValue(SettingsEnum.SEEKBAR_COLOR.defaultValue); - loadCustomSeekbarColorHSV(); + if (USE_SEEKBAR_CUSTOM_COLOR) { + loadCustomSeekbarColor(); } } - public static int getCustomSeekbarColor() { - return customSeekbarColor; + private static void loadCustomSeekbarColor() { + try { + seekbarColor = Color.parseColor(SettingsEnum.SEEKBAR_CUSTOM_COLOR_VALUE.getString()); + Color.colorToHSV(seekbarColor, customSeekbarColorHSV); + } catch (Exception ex) { + ReVancedUtils.showToastShort("Invalid seekbar color value. Using default value."); + SettingsEnum.SEEKBAR_CUSTOM_COLOR_VALUE.saveValue(SettingsEnum.SEEKBAR_CUSTOM_COLOR_VALUE.defaultValue); + loadCustomSeekbarColor(); + } + } + + public static int getSeekbarColor() { + return seekbarColor; } @@ -96,7 +102,7 @@ public final class SeekbarColorPatch { */ private static int getSeekbarColorValue(int originalColor) { try { - if (customSeekbarColor == ORIGINAL_SEEKBAR_COLOR) { + if (!USE_SEEKBAR_CUSTOM_COLOR || originalColor == seekbarColor) { return originalColor; // nothing to do } final int alphaDifference = Color.alpha(originalColor) - Color.alpha(ORIGINAL_SEEKBAR_COLOR); @@ -111,7 +117,7 @@ public final class SeekbarColorPatch { hsv[1] = customSeekbarColorHSV[1]; hsv[2] = clamp(customSeekbarColorHSV[2] + brightnessDifference, 0, 1); - final int replacementAlpha = clamp(Color.alpha(customSeekbarColor) + alphaDifference, 0, 255); + final int replacementAlpha = clamp(Color.alpha(seekbarColor) + alphaDifference, 0, 255); final int replacementColor = Color.HSVToColor(replacementAlpha, hsv); LogHelper.printDebug(() -> String.format("Original color: #%08X replacement color: #%08X", originalColor, replacementColor)); diff --git a/app/src/main/java/app/revanced/integrations/settings/SettingsEnum.java b/app/src/main/java/app/revanced/integrations/settings/SettingsEnum.java index 3e7097d9..0d632642 100644 --- a/app/src/main/java/app/revanced/integrations/settings/SettingsEnum.java +++ b/app/src/main/java/app/revanced/integrations/settings/SettingsEnum.java @@ -116,8 +116,8 @@ public enum SettingsEnum { HIDE_PLAYER_BUTTONS("revanced_hide_player_buttons", BOOLEAN, FALSE), HIDE_PLAYER_OVERLAY("revanced_hide_player_overlay", BOOLEAN, FALSE, true), HIDE_PREVIEW_COMMENT("revanced_hide_preview_comment", BOOLEAN, FALSE, true), - HIDE_SEEKBAR("revanced_hide_seekbar", BOOLEAN, FALSE, true), - HIDE_SEEKBAR_THUMBNAIL("revanced_hide_seekbar_thumbnail", BOOLEAN, FALSE, true), + HIDE_SEEKBAR("revanced_hide_seekbar", BOOLEAN, FALSE), + HIDE_SEEKBAR_THUMBNAIL("revanced_hide_seekbar_thumbnail", BOOLEAN, FALSE), HIDE_HOME_BUTTON("revanced_hide_home_button", BOOLEAN, FALSE, true), HIDE_SHORTS_BUTTON("revanced_hide_shorts_button", BOOLEAN, TRUE, true), HIDE_SUBSCRIPTIONS_BUTTON("revanced_hide_subscriptions_button", BOOLEAN, FALSE, true), @@ -130,7 +130,10 @@ public enum SettingsEnum { SPOOF_APP_VERSION_TARGET("revanced_spoof_app_version_target", STRING, "17.30.35", true, parents(SPOOF_APP_VERSION)), USE_TABLET_MINIPLAYER("revanced_tablet_miniplayer", BOOLEAN, FALSE, true), WIDE_SEARCHBAR("revanced_wide_searchbar", BOOLEAN, FALSE, true), - SEEKBAR_COLOR("revanced_seekbar_color", STRING, "#FF0000", true), + @Deprecated + DEPRECATED_SEEKBAR_COLOR("revanced_seekbar_color", STRING, "#FF0000"), // TODO: delete this + SEEKBAR_CUSTOM_COLOR("revanced_seekbar_custom_color", BOOLEAN, TRUE, true), + SEEKBAR_CUSTOM_COLOR_VALUE("revanced_seekbar_custom_color_value", STRING, "#FF0000", true, parents(SEEKBAR_CUSTOM_COLOR)), HIDE_FILTER_BAR_FEED_IN_FEED("revanced_hide_filter_bar_feed_in_feed", BOOLEAN, FALSE, true), HIDE_FILTER_BAR_FEED_IN_SEARCH("revanced_hide_filter_bar_feed_in_search", BOOLEAN, FALSE, true), HIDE_FILTER_BAR_FEED_IN_RELATED_VIDEOS("revanced_hide_filter_bar_feed_in_related_videos", BOOLEAN, FALSE, true), @@ -359,6 +362,14 @@ public enum SettingsEnum { // TODO: delete DEPRECATED_SHOW_OLD_VIDEO_QUALITY_MENU (When? anytime). migrateOldSettingToNew(DEPRECATED_SHOW_OLD_VIDEO_QUALITY_MENU, SHOW_OLD_VIDEO_QUALITY_MENU); + // TODO: delete this seekbar color migration code + String oldSeekbarColorValue = DEPRECATED_SEEKBAR_COLOR.getString(); + if (!oldSeekbarColorValue.equalsIgnoreCase((String) DEPRECATED_SEEKBAR_COLOR.defaultValue)) { + SEEKBAR_CUSTOM_COLOR_VALUE.saveValue(oldSeekbarColorValue); + SEEKBAR_CUSTOM_COLOR.saveValue(true); + DEPRECATED_SEEKBAR_COLOR.saveValue(DEPRECATED_SEEKBAR_COLOR.defaultValue); + } + // endregion }