mirror of
https://github.com/revanced/revanced-patches.git
synced 2025-12-07 01:51:27 +01:00
Use bold icons by default with YT 20.31+
This commit is contained in:
@@ -82,6 +82,8 @@ public class Utils {
|
||||
@Nullable
|
||||
private static Boolean isDarkModeEnabled;
|
||||
|
||||
private static boolean appIsUsingBoldIcons;
|
||||
|
||||
// Cached Collator instance with its locale.
|
||||
@Nullable
|
||||
private static Locale cachedCollatorLocale;
|
||||
@@ -830,6 +832,21 @@ public class Utils {
|
||||
window.setBackgroundDrawable(null); // Remove default dialog background
|
||||
}
|
||||
|
||||
/**
|
||||
* @return If the unpatched app is currently using bold icons.
|
||||
*/
|
||||
public static boolean appIsUsingBoldIcons() {
|
||||
return appIsUsingBoldIcons;
|
||||
}
|
||||
|
||||
/**
|
||||
* Controls if ReVanced bold icons are shown in various places.
|
||||
* @param boldIcons If the app is currently using bold icons.
|
||||
*/
|
||||
public static void setAppIsUsingBoldIcons(boolean boldIcons) {
|
||||
appIsUsingBoldIcons = boldIcons;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the theme light color used by the app.
|
||||
*/
|
||||
|
||||
@@ -5,6 +5,8 @@ import static java.lang.Boolean.TRUE;
|
||||
import static app.revanced.extension.shared.patches.CustomBrandingPatch.BrandingTheme;
|
||||
import static app.revanced.extension.shared.settings.Setting.parent;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
|
||||
/**
|
||||
* Settings shared across multiple apps.
|
||||
* <p>
|
||||
@@ -24,11 +26,19 @@ public class BaseSettings {
|
||||
* Use the icons declared in the preferences created during patching. If no icons or styles are declared then this setting does nothing.
|
||||
*/
|
||||
public static final BooleanSetting SHOW_MENU_ICONS = new BooleanSetting("revanced_show_menu_icons", TRUE, true);
|
||||
public static final BooleanSetting SETTINGS_DISABLE_BOLD_ICONS = new BooleanSetting("revanced_settings_disable_bold_icons", TRUE, true);
|
||||
/**
|
||||
* Do not use this setting directly. Instead use {@link app.revanced.extension.shared.Utils#appIsUsingBoldIcons()}
|
||||
*/
|
||||
public static final BooleanSetting SETTINGS_DISABLE_BOLD_ICONS = new BooleanSetting("revanced_settings_disable_bold_icons", FALSE, true);
|
||||
|
||||
public static final BooleanSetting SETTINGS_SEARCH_HISTORY = new BooleanSetting("revanced_settings_search_history", TRUE, true);
|
||||
public static final StringSetting SETTINGS_SEARCH_ENTRIES = new StringSetting("revanced_settings_search_entries", "");
|
||||
|
||||
/**
|
||||
* The first time the app was launched with no previous app data (either a clean install, or after wiping app data).
|
||||
*/
|
||||
public static final LongSetting FIRST_TIME_APP_LAUNCHED = new LongSetting("revanced_last_time_app_was_launched", -1L, false, false);
|
||||
|
||||
//
|
||||
// Settings shared by YouTube and YouTube Music.
|
||||
//
|
||||
@@ -45,4 +55,13 @@ public class BaseSettings {
|
||||
public static final IntegerSetting CUSTOM_BRANDING_NAME = new IntegerSetting("revanced_custom_branding_name", 1, true);
|
||||
|
||||
public static final StringSetting DISABLED_FEATURE_FLAGS = new StringSetting("revanced_disabled_feature_flags", "", true, parent(DEBUG));
|
||||
|
||||
static {
|
||||
final long now = System.currentTimeMillis();
|
||||
|
||||
if (FIRST_TIME_APP_LAUNCHED.get() < 0) {
|
||||
Logger.printInfo(() -> "First launch of installation with no prior app data");
|
||||
FIRST_TIME_APP_LAUNCHED.save(now);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -106,9 +106,9 @@ public abstract class AbstractPreferenceFragment extends PreferenceFragment {
|
||||
protected void initialize() {
|
||||
String preferenceResourceName;
|
||||
if (BaseSettings.SHOW_MENU_ICONS.get()) {
|
||||
preferenceResourceName = BaseSettings.SETTINGS_DISABLE_BOLD_ICONS.get()
|
||||
? "revanced_prefs_icons"
|
||||
: "revanced_prefs_icons_bold";
|
||||
preferenceResourceName = Utils.appIsUsingBoldIcons()
|
||||
? "revanced_prefs_icons_bold"
|
||||
: "revanced_prefs_icons";
|
||||
} else {
|
||||
preferenceResourceName = "revanced_prefs";
|
||||
}
|
||||
|
||||
@@ -22,7 +22,6 @@ import androidx.annotation.Nullable;
|
||||
|
||||
import app.revanced.extension.shared.ResourceType;
|
||||
import app.revanced.extension.shared.Utils;
|
||||
import app.revanced.extension.shared.settings.BaseSettings;
|
||||
import app.revanced.extension.shared.ui.CustomDialog;
|
||||
|
||||
/**
|
||||
@@ -134,10 +133,9 @@ public class CustomDialogListPreference extends ListPreference {
|
||||
holder.placeholder = view.findViewById(ID_REVANCED_CHECK_ICON_PLACEHOLDER);
|
||||
holder.itemText = view.findViewById(ID_REVANCED_ITEM_TEXT);
|
||||
holder.checkIcon = view.findViewById(ID_REVANCED_CHECK_ICON);
|
||||
holder.checkIcon.setImageResource(
|
||||
BaseSettings.SETTINGS_DISABLE_BOLD_ICONS.get()
|
||||
? DRAWABLE_CHECKMARK
|
||||
: DRAWABLE_CHECKMARK_BOLD
|
||||
holder.checkIcon.setImageResource(Utils.appIsUsingBoldIcons()
|
||||
? DRAWABLE_CHECKMARK_BOLD
|
||||
: DRAWABLE_CHECKMARK
|
||||
);
|
||||
view.setTag(holder);
|
||||
} else {
|
||||
|
||||
@@ -71,7 +71,8 @@ public class FeatureFlagsManagerPreference extends Preference {
|
||||
* Flags to hide from the UI.
|
||||
*/
|
||||
private static final Set<Long> FLAGS_TO_IGNORE = Set.of(
|
||||
45386834L // 'You' tab settings icon.
|
||||
45386834L, // 'You' tab settings icon.
|
||||
45685201L // Bold icons. Forcing off interferes with patch changes and YT icons are broken.
|
||||
);
|
||||
|
||||
/**
|
||||
|
||||
@@ -136,9 +136,9 @@ public class ToolbarPreferenceFragment extends AbstractPreferenceFragment {
|
||||
@SuppressLint("UseCompatLoadingForDrawables")
|
||||
public static Drawable getBackButtonDrawable() {
|
||||
final int backButtonResource = Utils.getResourceIdentifierOrThrow(ResourceType.DRAWABLE,
|
||||
BaseSettings.SETTINGS_DISABLE_BOLD_ICONS.get()
|
||||
? "revanced_settings_toolbar_arrow_left"
|
||||
: "revanced_settings_toolbar_arrow_left_bold");
|
||||
Utils.appIsUsingBoldIcons()
|
||||
? "revanced_settings_toolbar_arrow_left_bold"
|
||||
: "revanced_settings_toolbar_arrow_left");
|
||||
Drawable drawable = Utils.getContext().getResources().getDrawable(backButtonResource);
|
||||
customizeBackButtonDrawable(drawable);
|
||||
return drawable;
|
||||
|
||||
@@ -91,9 +91,9 @@ public abstract class BaseSearchViewController {
|
||||
* @return The search icon, either bold or not bold, depending on the ReVanced UI setting.
|
||||
*/
|
||||
public static int getSearchIcon() {
|
||||
return BaseSettings.SETTINGS_DISABLE_BOLD_ICONS.get()
|
||||
? DRAWABLE_REVANCED_SETTINGS_SEARCH_ICON
|
||||
: DRAWABLE_REVANCED_SETTINGS_SEARCH_ICON_BOLD;
|
||||
return Utils.appIsUsingBoldIcons()
|
||||
? DRAWABLE_REVANCED_SETTINGS_SEARCH_ICON_BOLD
|
||||
: DRAWABLE_REVANCED_SETTINGS_SEARCH_ICON;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -25,7 +25,7 @@ import java.util.LinkedList;
|
||||
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.ResourceType;
|
||||
import app.revanced.extension.shared.settings.BaseSettings;
|
||||
import app.revanced.extension.shared.Utils;
|
||||
import app.revanced.extension.shared.settings.preference.BulletPointPreference;
|
||||
import app.revanced.extension.shared.ui.CustomDialog;
|
||||
|
||||
@@ -340,10 +340,9 @@ public class SearchHistoryManager {
|
||||
|
||||
// Set history icon.
|
||||
ImageView historyIcon = view.findViewById(ID_HISTORY_ICON);
|
||||
historyIcon.setImageResource(
|
||||
BaseSettings.SETTINGS_DISABLE_BOLD_ICONS.get()
|
||||
? ID_SEARCH_ARROW_TIME_ICON
|
||||
: ID_SEARCH_ARROW_TIME_ICON_BOLD
|
||||
historyIcon.setImageResource(Utils.appIsUsingBoldIcons()
|
||||
? ID_SEARCH_ARROW_TIME_ICON_BOLD
|
||||
: ID_SEARCH_ARROW_TIME_ICON
|
||||
);
|
||||
|
||||
TextView historyText = view.findViewById(ID_HISTORY_TEXT);
|
||||
@@ -352,10 +351,9 @@ public class SearchHistoryManager {
|
||||
// Set click listener for delete icon.
|
||||
ImageView deleteIcon = view.findViewById(ID_DELETE_ICON);
|
||||
|
||||
deleteIcon.setImageResource(
|
||||
BaseSettings.SETTINGS_DISABLE_BOLD_ICONS.get()
|
||||
? ID_SEARCH_REMOVE_ICON
|
||||
: ID_SEARCH_REMOVE_ICON_BOLD
|
||||
deleteIcon.setImageResource(Utils.appIsUsingBoldIcons()
|
||||
? ID_SEARCH_REMOVE_ICON_BOLD
|
||||
: ID_SEARCH_REMOVE_ICON
|
||||
);
|
||||
|
||||
deleteIcon.setOnClickListener(v -> createAndShowDialog(
|
||||
|
||||
@@ -27,9 +27,9 @@ public class ReVancedSettingsIconDynamicDrawable extends Drawable {
|
||||
|
||||
public ReVancedSettingsIconDynamicDrawable() {
|
||||
final int resId = Utils.getResourceIdentifier(ResourceType.DRAWABLE,
|
||||
BaseSettings.SETTINGS_DISABLE_BOLD_ICONS.get()
|
||||
? "revanced_settings_icon"
|
||||
: "revanced_settings_icon_bold"
|
||||
Utils.appIsUsingBoldIcons()
|
||||
? "revanced_settings_icon_bold"
|
||||
: "revanced_settings_icon"
|
||||
);
|
||||
|
||||
icon = Utils.getContext().getDrawable(resId);
|
||||
|
||||
@@ -519,10 +519,12 @@ public class Settings extends BaseSettings {
|
||||
SPOOF_APP_VERSION.resetToDefault();
|
||||
}
|
||||
|
||||
if (!BaseSettings.SETTINGS_DISABLE_BOLD_ICONS.get()
|
||||
&& SPOOF_APP_VERSION.get() && SPOOF_APP_VERSION_TARGET.get().compareTo("19.35.00") <= 0) {
|
||||
Logger.printInfo(() -> "Disabling bold icons that don't work with old spoof targets");
|
||||
BaseSettings.SETTINGS_DISABLE_BOLD_ICONS.save(true);
|
||||
if (!BaseSettings.SETTINGS_DISABLE_BOLD_ICONS.get() && SPOOF_APP_VERSION.get()
|
||||
&& SPOOF_APP_VERSION_TARGET.get().compareTo("19.35.00") <= 0) {
|
||||
Logger.printInfo(() -> "Temporarily disabling bold icons that don't work with old spoof targets");
|
||||
// Don't save and only temporarily overwrite the value so
|
||||
// if spoofing is turned off the old setting value is used.
|
||||
BooleanSetting.privateSetValue(BaseSettings.SETTINGS_DISABLE_BOLD_ICONS, false);
|
||||
}
|
||||
|
||||
// VR 1.61 is not selectable in the settings, and it's selected by spoof stream patch if needed.
|
||||
|
||||
@@ -16,13 +16,27 @@ import app.revanced.extension.youtube.settings.preference.YouTubePreferenceFragm
|
||||
import app.revanced.extension.youtube.settings.search.YouTubeSearchViewController;
|
||||
|
||||
/**
|
||||
* Hooks LicenseActivity to inject a custom {@link YouTubePreferenceFragment} with a toolbar and search functionality.
|
||||
* Hooks LicenseActivity to inject a custom {@link YouTubePreferenceFragment}
|
||||
* with a toolbar and search functionality.
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public class YouTubeActivityHook extends BaseActivityHook {
|
||||
|
||||
private static final boolean SETTINGS_DISABLE_BOLD_ICONS
|
||||
= Settings.SETTINGS_DISABLE_BOLD_ICONS.get();
|
||||
/**
|
||||
* How much time has passed since the first launch of the app. Simple check to prevent
|
||||
* forcing bold icons on first launch where the settings menu is partially broken
|
||||
* due to missing icon resources the client has not yet received.
|
||||
*/
|
||||
private static final long MINIMUM_TIME_AFTER_FIRST_LAUNCH_BEFORE_ALLOWING_BOLD_ICONS = 10 * 1000; // 10 seconds.
|
||||
|
||||
private static final boolean USE_BOLD_ICONS = VersionCheckPatch.IS_20_31_OR_GREATER
|
||||
&& !Settings.SETTINGS_DISABLE_BOLD_ICONS.get()
|
||||
&& (System.currentTimeMillis() - Settings.FIRST_TIME_APP_LAUNCHED.get())
|
||||
> MINIMUM_TIME_AFTER_FIRST_LAUNCH_BEFORE_ALLOWING_BOLD_ICONS;
|
||||
|
||||
static {
|
||||
Utils.setAppIsUsingBoldIcons(USE_BOLD_ICONS);
|
||||
}
|
||||
|
||||
private static int currentThemeValueOrdinal = -1; // Must initially be a non-valid enum ordinal value.
|
||||
|
||||
@@ -157,6 +171,6 @@ public class YouTubeActivityHook extends BaseActivityHook {
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
public static boolean useBoldIcons(boolean original) {
|
||||
return !SETTINGS_DISABLE_BOLD_ICONS;
|
||||
return USE_BOLD_ICONS;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,6 @@ import androidx.annotation.Nullable;
|
||||
import app.revanced.extension.shared.Logger;
|
||||
import app.revanced.extension.shared.ResourceType;
|
||||
import app.revanced.extension.shared.Utils;
|
||||
import app.revanced.extension.shared.settings.BaseSettings;
|
||||
import app.revanced.extension.youtube.settings.Settings;
|
||||
import app.revanced.extension.youtube.sponsorblock.SegmentPlaybackController;
|
||||
import app.revanced.extension.youtube.videoplayer.PlayerControlButton;
|
||||
@@ -17,9 +16,9 @@ import app.revanced.extension.youtube.videoplayer.PlayerControlButton;
|
||||
public class CreateSegmentButton {
|
||||
|
||||
private static final int DRAWABLE_SB_LOGO = Utils.getResourceIdentifierOrThrow(
|
||||
ResourceType.DRAWABLE, BaseSettings.SETTINGS_DISABLE_BOLD_ICONS.get()
|
||||
? "revanced_sb_logo"
|
||||
: "revanced_sb_logo_bold"
|
||||
ResourceType.DRAWABLE, Utils.appIsUsingBoldIcons()
|
||||
? "revanced_sb_logo_bold"
|
||||
: "revanced_sb_logo"
|
||||
);
|
||||
|
||||
@Nullable
|
||||
|
||||
Reference in New Issue
Block a user