diff --git a/extensions/shared/library/src/main/java/app/revanced/extension/shared/patches/CustomBrandingPatch.java b/extensions/shared/library/src/main/java/app/revanced/extension/shared/patches/CustomBrandingPatch.java index c6cf761ca..ca4a8ff61 100644 --- a/extensions/shared/library/src/main/java/app/revanced/extension/shared/patches/CustomBrandingPatch.java +++ b/extensions/shared/library/src/main/java/app/revanced/extension/shared/patches/CustomBrandingPatch.java @@ -150,14 +150,14 @@ public class CustomBrandingPatch { } for (ComponentName disable : componentsToDisable) { - // Use info logging because if the alias status become corrupt the app cannot launch. - Logger.printInfo(() -> "Disabling: " + disable.getClassName()); pm.setComponentEnabledSetting(disable, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); } + // Use info logging because if the alias status become corrupt the app cannot launch. ComponentName componentToEnableFinal = componentToEnable; Logger.printInfo(() -> "Enabling: " + componentToEnableFinal.getClassName()); + pm.setComponentEnabledSetting(componentToEnable, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, 0); } catch (Exception ex) { diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ChangeHeaderPatch.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ChangeHeaderPatch.java index ed5bcec07..8d7462119 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ChangeHeaderPatch.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/patches/ChangeHeaderPatch.java @@ -17,15 +17,25 @@ public class ChangeHeaderPatch { DEFAULT(null, null), REGULAR("ytWordmarkHeader", "yt_ringo2_wordmark_header"), PREMIUM("ytPremiumWordmarkHeader", "yt_ringo2_premium_wordmark_header"), - REVANCED("revanced_header_logo", "revanced_header_logo"), - REVANCED_MINIMAL("revanced_header_logo_minimal", "revanced_header_logo_minimal"), - CUSTOM("custom_header", "custom_header"); + ROUNDED("revanced_header_rounded"), + MINIMAL("revanced_header_minimal"), + CUSTOM("revanced_header_custom"), + + // Old enum names for data migration. TODO: Eventually delete these. + @Deprecated + REVANCED(ROUNDED.attributeName), + @Deprecated + REVANCED_MINIMAL(MINIMAL.attributeName); @Nullable private final String attributeName; @Nullable private final String drawableName; + HeaderLogo(String attributeName) { + this(Objects.requireNonNull(attributeName), Objects.requireNonNull(attributeName)); + } + HeaderLogo(@Nullable String attributeName, @Nullable String drawableName) { this.attributeName = attributeName; this.drawableName = drawableName; @@ -42,9 +52,8 @@ public class ChangeHeaderPatch { final int identifier = Utils.getResourceIdentifier(attributeName, "attr"); if (identifier == 0) { - // Identifier is zero if custom header setting was included in imported settings - // and a custom image was not included during patching. - Logger.printDebug(() -> "Could not find attribute: " + drawableName); + // Should never happen. + Logger.printException(() -> "Could not find attribute: " + drawableName); Settings.HEADER_LOGO.resetToDefault(); return null; } @@ -63,12 +72,14 @@ public class ChangeHeaderPatch { : "_light"); final int identifier = Utils.getResourceIdentifier(drawableFullName, "drawable"); - if (identifier == 0) { - Logger.printDebug(() -> "Could not find drawable: " + drawableFullName); - Settings.HEADER_LOGO.resetToDefault(); - return null; + if (identifier != 0) { + return Utils.getContext().getDrawable(identifier); } - return Utils.getContext().getDrawable(identifier); + + // Should never happen. + Logger.printException(() -> "Could not find drawable: " + drawableFullName); + Settings.HEADER_LOGO.resetToDefault(); + return null; } } diff --git a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java index 747a4f048..0dd82d240 100644 --- a/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java +++ b/extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java @@ -2,7 +2,6 @@ package app.revanced.extension.youtube.settings; import static java.lang.Boolean.FALSE; import static java.lang.Boolean.TRUE; -import static app.revanced.extension.shared.settings.Setting.migrateOldSettingToNew; import static app.revanced.extension.shared.settings.Setting.parent; import static app.revanced.extension.shared.settings.Setting.parentsAll; import static app.revanced.extension.shared.settings.Setting.parentsAny; @@ -17,7 +16,6 @@ import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerH import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerHideSubtextsAvailability; import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerHorizontalDragAvailability; import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerType; -import static app.revanced.extension.youtube.patches.MiniplayerPatch.MiniplayerType.MINIMAL; import static app.revanced.extension.youtube.patches.OpenShortsInRegularPlayerPatch.ShortsPlayerType; import static app.revanced.extension.youtube.patches.SeekbarThumbnailsPatch.SeekbarThumbnailsHighQualityAvailability; import static app.revanced.extension.youtube.patches.components.PlayerFlyoutMenuItemsFilter.HideAudioFlyoutMenuAvailability; @@ -41,7 +39,6 @@ import app.revanced.extension.shared.settings.IntegerSetting; import app.revanced.extension.shared.settings.LongSetting; import app.revanced.extension.shared.settings.Setting; import app.revanced.extension.shared.settings.StringSetting; -import app.revanced.extension.shared.settings.preference.SharedPrefCategory; import app.revanced.extension.shared.spoof.ClientType; import app.revanced.extension.youtube.patches.AlternativeThumbnailsPatch.DeArrowAvailability; import app.revanced.extension.youtube.patches.AlternativeThumbnailsPatch.StillImagesAvailability; @@ -452,14 +449,7 @@ public class Settings extends BaseSettings { public static final StringSetting SB_CATEGORY_UNSUBMITTED_COLOR = new StringSetting("sb_unsubmitted_color", "#FFFFFFFF", false, false); // Deprecated migrations - private static final BooleanSetting DEPRECATED_AUTO_REPEAT = new BooleanSetting("revanced_auto_repeat", FALSE); - private static final BooleanSetting DEPRECATED_HIDE_PLAYER_BUTTONS = new BooleanSetting("revanced_hide_player_buttons", FALSE, true); - private static final BooleanSetting DEPRECATED_HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER = new BooleanSetting("revanced_hide_video_quality_menu_footer", FALSE); - private static final IntegerSetting DEPRECATED_SWIPE_OVERLAY_BACKGROUND_ALPHA = new IntegerSetting("revanced_swipe_overlay_background_alpha", 127); private static final StringSetting DEPRECATED_SEEKBAR_CUSTOM_COLOR_PRIMARY = new StringSetting("revanced_seekbar_custom_color_value", "#FF0033"); - private static final BooleanSetting DEPRECATED_DISABLE_SUGGESTED_VIDEO_END_SCREEN = new BooleanSetting("revanced_disable_suggested_video_end_screen", FALSE); - private static final BooleanSetting DEPRECATED_RESTORE_OLD_VIDEO_QUALITY_MENU = new BooleanSetting("revanced_restore_old_video_quality_menu", TRUE); - private static final BooleanSetting DEPRECATED_AUTO_CAPTIONS = new BooleanSetting("revanced_auto_captions", FALSE); private static final FloatSetting DEPRECATED_SB_CATEGORY_SPONSOR_OPACITY = new FloatSetting("sb_sponsor_opacity", 0.8f, false, false); private static final FloatSetting DEPRECATED_SB_CATEGORY_SELF_PROMO_OPACITY = new FloatSetting("sb_selfpromo_opacity", 0.8f, false, false); @@ -475,17 +465,12 @@ public class Settings extends BaseSettings { static { // region Migration - migrateOldSettingToNew(DEPRECATED_AUTO_REPEAT, LOOP_VIDEO); - migrateOldSettingToNew(DEPRECATED_HIDE_PLAYER_BUTTONS, HIDE_PLAYER_PREVIOUS_NEXT_BUTTONS); - migrateOldSettingToNew(DEPRECATED_HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER, HIDE_PLAYER_FLYOUT_VIDEO_QUALITY_FOOTER); - migrateOldSettingToNew(DEPRECATED_DISABLE_SUGGESTED_VIDEO_END_SCREEN, HIDE_END_SCREEN_SUGGESTED_VIDEO); - migrateOldSettingToNew(DEPRECATED_RESTORE_OLD_VIDEO_QUALITY_MENU, ADVANCED_VIDEO_QUALITY_MENU); - migrateOldSettingToNew(DEPRECATED_AUTO_CAPTIONS, DISABLE_AUTO_CAPTIONS); - - // Migrate renamed enum. - //noinspection deprecation - if (MINIPLAYER_TYPE.get() == MiniplayerType.PHONE) { - MINIPLAYER_TYPE.save(MINIMAL); + // Migrate renamed change header enums. + if (HEADER_LOGO.get() == HeaderLogo.REVANCED) { + HEADER_LOGO.save(HeaderLogo.ROUNDED); + } + if (HEADER_LOGO.get() == HeaderLogo.REVANCED_MINIMAL) { + HEADER_LOGO.save(HeaderLogo.MINIMAL); } // Migrate old single color seekbar with a slightly brighter accent color based on the primary. @@ -512,11 +497,6 @@ public class Settings extends BaseSettings { DEPRECATED_SEEKBAR_CUSTOM_COLOR_PRIMARY.resetToDefault(); } - if (!DEPRECATED_SWIPE_OVERLAY_BACKGROUND_ALPHA.isSetToDefault()) { - SWIPE_OVERLAY_OPACITY.save(DEPRECATED_SWIPE_OVERLAY_BACKGROUND_ALPHA.get() / 255); - DEPRECATED_SWIPE_OVERLAY_BACKGROUND_ALPHA.resetToDefault(); - } - // Old spoof versions that no longer work, // or is spoofing to a version the same or newer than this app. if (!SPOOF_APP_VERSION_TARGET.isSetToDefault() && @@ -534,13 +514,7 @@ public class Settings extends BaseSettings { // RYD requires manually migrating old settings since the lack of // a "revanced_" on the old setting causes duplicate key exceptions during export. - SharedPrefCategory revancedPrefs = Setting.preferences; - Setting.migrateFromOldPreferences(revancedPrefs, RYD_USER_ID, "ryd_user_id"); - Setting.migrateFromOldPreferences(revancedPrefs, RYD_ENABLED, "ryd_enabled"); - Setting.migrateFromOldPreferences(revancedPrefs, RYD_DISLIKE_PERCENTAGE, "ryd_dislike_percentage"); - Setting.migrateFromOldPreferences(revancedPrefs, RYD_COMPACT_LAYOUT, "ryd_compact_layout"); - Setting.migrateFromOldPreferences(revancedPrefs, RYD_ESTIMATED_LIKE, "ryd_estimated_like"); - Setting.migrateFromOldPreferences(revancedPrefs, RYD_TOAST_ON_CONNECTION_ERROR, "ryd_toast_on_connection_error"); + Setting.migrateFromOldPreferences(Setting.preferences, RYD_USER_ID, "ryd_user_id"); // Migrate old saved data. Must be done here before the settings can be used by any other code. applyOldSbOpacityToColor(SB_CATEGORY_SPONSOR_COLOR, DEPRECATED_SB_CATEGORY_SPONSOR_OPACITY); diff --git a/patches/src/main/kotlin/app/revanced/patches/shared/layout/branding/BaseCustomBrandingPatch.kt b/patches/src/main/kotlin/app/revanced/patches/shared/layout/branding/BaseCustomBrandingPatch.kt index 5381131f2..d3e718085 100644 --- a/patches/src/main/kotlin/app/revanced/patches/shared/layout/branding/BaseCustomBrandingPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/shared/layout/branding/BaseCustomBrandingPatch.kt @@ -36,13 +36,13 @@ import org.w3c.dom.NodeList import java.io.File import java.util.logging.Logger -private val mipmapDirectories = arrayOf( +private val mipmapDirectories = mapOf( // Target app does not have ldpi icons. - "mipmap-mdpi", - "mipmap-hdpi", - "mipmap-xhdpi", - "mipmap-xxhdpi", - "mipmap-xxxhdpi" + "mipmap-mdpi" to "108x108 px", + "mipmap-hdpi" to "162x162 px", + "mipmap-xhdpi" to "216x216 px", + "mipmap-xxhdpi" to "324x324 px", + "mipmap-xxxhdpi" to "432x432 px" ) private val iconStyleNames = arrayOf( @@ -104,10 +104,13 @@ internal fun baseCustomBrandingPatch( Folder with images to use as a custom icon. The folder must contain one or more of the following folders, depending on the DPI of the device: - ${mipmapDirectories.joinToString("\n") { "- $it" }} + ${mipmapDirectories.keys.joinToString("\n") { "- $it" }} Each of the folders must contain all of the following files: ${USER_CUSTOM_ADAPTIVE_FILE_NAMES.joinToString("\n")} + + The image dimensions must be as follows: + ${mipmapDirectories.map { (dpi, dim) -> "- $dpi: $dim" }.joinToString("\n")} Optionally, the path contains a 'drawable' folder with any of the monochrome icon files: $USER_CUSTOM_MONOCHROME_FILE_NAME @@ -249,7 +252,7 @@ internal fun baseCustomBrandingPatch( ) // Copy template icon files. - mipmapDirectories.forEach { dpi -> + mipmapDirectories.keys.forEach { dpi -> copyResources( "custom-branding", ResourceGroup( @@ -405,23 +408,24 @@ internal fun baseCustomBrandingPatch( ) } - val sourceFolders = iconPathFile.listFiles { file -> file.isDirectory } - ?: throw PatchException("The custom icon path contains no subfolders: " + - iconPathFile.absolutePath) - val resourceDirectory = get("res") var copiedFiles = false // For each source folder, copy the files to the target resource directories. - sourceFolders.forEach { dpiSourceFolder -> + iconPathFile.listFiles { + file -> file.isDirectory && file.name in mipmapDirectories + }!!.forEach { dpiSourceFolder -> val targetDpiFolder = resourceDirectory.resolve(dpiSourceFolder.name) - if (!targetDpiFolder.exists()) return@forEach + if (!targetDpiFolder.exists()) { + // Should never happen. + throw IllegalStateException("Resource not found: $dpiSourceFolder") + } val customFiles = dpiSourceFolder.listFiles { file -> file.isFile && file.name in USER_CUSTOM_ADAPTIVE_FILE_NAMES }!! - if (customFiles.size > 0 && customFiles.size != USER_CUSTOM_ADAPTIVE_FILE_NAMES.size) { + if (customFiles.isNotEmpty() && customFiles.size != USER_CUSTOM_ADAPTIVE_FILE_NAMES.size) { throw PatchException("Must include all required icon files " + "but only found " + customFiles.map { it.name }) } @@ -451,8 +455,9 @@ internal fun baseCustomBrandingPatch( } if (!copiedFiles) { - throw PatchException("Could not find any replacement images in " + - "patch option path: " + iconPathFile.absolutePath) + throw PatchException("Expected to find directories and files: " + + USER_CUSTOM_ADAPTIVE_FILE_NAMES.contentToString() + + "\nBut none were found in the provided option file path: " + iconPathFile.absolutePath) } } diff --git a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/branding/header/ChangeHeaderPatch.kt b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/branding/header/ChangeHeaderPatch.kt index 26a10aacf..1a5e131ba 100644 --- a/patches/src/main/kotlin/app/revanced/patches/youtube/layout/branding/header/ChangeHeaderPatch.kt +++ b/patches/src/main/kotlin/app/revanced/patches/youtube/layout/branding/header/ChangeHeaderPatch.kt @@ -24,15 +24,40 @@ import java.io.File private val variants = arrayOf("light", "dark") -private const val EXTENSION_CLASS_DESCRIPTOR = - "Lapp/revanced/extension/youtube/patches/ChangeHeaderPatch;" +private val targetResourceDirectoryNames = mapOf( + "drawable-hdpi" to "194x72 px", + "drawable-xhdpi" to "258x96 px", + "drawable-xxhdpi" to "387x144 px", + "drawable-xxxhdpi" to "512x192 px" +) + +/** + * Header logos built into this patch. + */ +private val logoResourceNames = arrayOf( + "revanced_header_minimal", + "revanced_header_rounded", +) + +/** + * Custom header resource/file name. + */ +private const val CUSTOM_HEADER_RESOURCE_NAME = "revanced_header_custom" + +/** + * Custom header resource/file names. + */ +private val customHeaderResourceFileNames = variants.map { variant -> + "${CUSTOM_HEADER_RESOURCE_NAME}_$variant.png" +}.toTypedArray() + +private const val EXTENSION_CLASS_DESCRIPTOR = "Lapp/revanced/extension/youtube/patches/ChangeHeaderPatch;" private val changeHeaderBytecodePatch = bytecodePatch { dependsOn(resourceMappingPatch) execute { - // Resources are not used during patching, but extension code uses these - // images so verify they exist. + // Verify images exist. Resources are not used during patching but extension code does. arrayOf( "yt_ringo2_wordmark_header", "yt_ringo2_premium_wordmark_header" @@ -62,28 +87,6 @@ private val changeHeaderBytecodePatch = bytecodePatch { } } -private val targetResourceDirectoryNames = mapOf( - "xxxhdpi" to "512px x 192px", - "xxhdpi" to "387px x 144px", - "xhdpi" to "258px x 96px", - "hdpi" to "194px x 72px", - "mdpi" to "129px x 48px" -).mapKeys { (dpi, _) -> "drawable-$dpi" } - - -/** - * Header logos built into this patch. - */ -private val logoResourceNames = arrayOf( - "revanced_header_logo_minimal", - "revanced_header_logo", -) - -/** - * Custom header resource/file name. - */ -private const val CUSTOM_HEADER_RESOURCE_NAME = "custom_header" - @Suppress("unused") val changeHeaderPatch = resourcePatch( name = "Change header", @@ -110,7 +113,7 @@ val changeHeaderPatch = resourcePatch( ${targetResourceDirectoryNames.keys.joinToString("\n") { "- $it" }} Each of the folders must contain all of the following files: - ${variants.joinToString("\n") { variant -> "- ${CUSTOM_HEADER_RESOURCE_NAME}_$variant.png" }} + ${customHeaderResourceFileNames.joinToString("\n")} The image dimensions must be as follows: ${targetResourceDirectoryNames.map { (dpi, dim) -> "- $dpi: $dim" }.joinToString("\n")} @@ -120,67 +123,41 @@ val changeHeaderPatch = resourcePatch( execute { addResources("youtube", "layout.branding.changeHeaderPatch") - fun getLightDarkFileNames(vararg resourceNames: String): Array = - variants.flatMap { variant -> - resourceNames.map { resource -> "${resource}_$variant.png" } - }.toTypedArray() - - val logoResourceFileNames = getLightDarkFileNames(*logoResourceNames) - copyResources( - "change-header", - ResourceGroup("drawable-hdpi", *logoResourceFileNames), - ResourceGroup("drawable-mdpi", *logoResourceFileNames), - ResourceGroup("drawable-xhdpi", *logoResourceFileNames), - ResourceGroup("drawable-xxhdpi", *logoResourceFileNames), - ResourceGroup("drawable-xxxhdpi", *logoResourceFileNames), - ) - - if (custom != null) { - val customFile = File(custom!!) - if (!customFile.exists()) { - throw PatchException("The custom icon path cannot be found: " + - customFile.absolutePath + PreferenceScreen.GENERAL_LAYOUT.addPreferences( + if (custom == null) { + ListPreference("revanced_header_logo") + } else { + ListPreference( + key = "revanced_header_logo", + entriesKey = "revanced_header_logo_custom_entries", + entryValuesKey = "revanced_header_logo_custom_entry_values" ) } + ) - if (!customFile.isDirectory) { - throw PatchException("The custom icon path must be a folder: " - + customFile.absolutePath) + logoResourceNames.forEach { logo -> + variants.forEach { variant -> + copyResources( + "change-header", + ResourceGroup( + "drawable", + logo + "_" + variant + ".xml" + ) + ) } + } - val sourceFolders = customFile.listFiles { file -> file.isDirectory } - ?: throw PatchException("The custom icon path contains no subfolders: " + - customFile.absolutePath) - - val customResourceFileNames = getLightDarkFileNames(CUSTOM_HEADER_RESOURCE_NAME) - - var copiedFiles = false - - // For each source folder, copy the files to the target resource directories. - sourceFolders.forEach { dpiSourceFolder -> - val targetDpiFolder = get("res").resolve(dpiSourceFolder.name) - if (!targetDpiFolder.exists()) return@forEach - - val customFiles = dpiSourceFolder.listFiles { file -> - file.isFile && file.name in customResourceFileNames - }!! - - if (customFiles.size > 0 && customFiles.size != variants.size) { - throw PatchException("Both light/dark mode images " + - "must be specified but only found: " + customFiles.map { it.name }) - } - - customFiles.forEach { imgSourceFile -> - val imgTargetFile = targetDpiFolder.resolve(imgSourceFile.name) - imgSourceFile.copyTo(imgTargetFile) - - copiedFiles = true - } - } - - if (!copiedFiles) { - throw PatchException("No custom header images found in " + - "the provided path: " + customFile.absolutePath) + // Copy custom template. Images are only used if settings + // are imported and a custom header is enabled. + targetResourceDirectoryNames.keys.forEach { dpi -> + variants.forEach { variant -> + copyResources( + "change-header", + ResourceGroup( + dpi, + *customHeaderResourceFileNames + ) + ) } } @@ -199,9 +176,7 @@ val changeHeaderPatch = resourcePatch( addAttributeReference(logoName) } - if (custom != null) { - addAttributeReference(CUSTOM_HEADER_RESOURCE_NAME) - } + addAttributeReference(CUSTOM_HEADER_RESOURCE_NAME) } // Add custom drawables to all styles that use the regular and premium logo. @@ -227,22 +202,58 @@ val changeHeaderPatch = resourcePatch( addDrawableElement(document, logoName, mode) } - if (custom != null) { - addDrawableElement(document, CUSTOM_HEADER_RESOURCE_NAME, mode) - } + addDrawableElement(document, CUSTOM_HEADER_RESOURCE_NAME, mode) } } - PreferenceScreen.GENERAL_LAYOUT.addPreferences( - if (custom == null) { - ListPreference("revanced_header_logo") - } else { - ListPreference( - key = "revanced_header_logo", - entriesKey = "revanced_header_logo_custom_entries", - entryValuesKey = "revanced_header_logo_custom_entry_values" + // Copy user provided images last, so if an exception is thrown due to bad input. + if (custom != null) { + val customFile = File(custom!!.trim()) + if (!customFile.exists()) { + throw PatchException("The custom header path cannot be found: " + + customFile.absolutePath ) } - ) + + if (!customFile.isDirectory) { + throw PatchException("The custom header path must be a folder: " + + customFile.absolutePath) + } + + var copiedFiles = false + + // For each source folder, copy the files to the target resource directories. + customFile.listFiles { + file -> file.isDirectory && file.name in targetResourceDirectoryNames + }!!.forEach { dpiSourceFolder -> + val targetDpiFolder = get("res").resolve(dpiSourceFolder.name) + if (!targetDpiFolder.exists()) { + // Should never happen. + throw IllegalStateException("Resource not found: $dpiSourceFolder") + } + + val customFiles = dpiSourceFolder.listFiles { file -> + file.isFile && file.name in customHeaderResourceFileNames + }!! + + if (customFiles.isNotEmpty() && customFiles.size != variants.size) { + throw PatchException("Both light/dark mode images " + + "must be specified but only found: " + customFiles.map { it.name }) + } + + customFiles.forEach { imgSourceFile -> + val imgTargetFile = targetDpiFolder.resolve(imgSourceFile.name) + imgSourceFile.copyTo(target = imgTargetFile, overwrite = true) + + copiedFiles = true + } + } + + if (!copiedFiles) { + throw PatchException("Expected to find directories and files: " + + customHeaderResourceFileNames.contentToString() + + "\nBut none were found in the provided option file path: " + customFile.absolutePath) + } + } } } diff --git a/patches/src/main/resources/addresources/values/arrays.xml b/patches/src/main/resources/addresources/values/arrays.xml index 980f0c20c..439261474 100644 --- a/patches/src/main/resources/addresources/values/arrays.xml +++ b/patches/src/main/resources/addresources/values/arrays.xml @@ -397,8 +397,8 @@ DEFAULT REGULAR PREMIUM - REVANCED - REVANCED_MINIMAL + ROUNDED + MINIMAL @string/revanced_header_logo_entry_1 @@ -412,8 +412,8 @@ DEFAULT REGULAR PREMIUM - REVANCED - REVANCED_MINIMAL + ROUNDED + MINIMAL CUSTOM diff --git a/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_custom_dark.png b/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_custom_dark.png new file mode 100644 index 000000000..8a9dc3177 Binary files /dev/null and b/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_custom_dark.png differ diff --git a/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_custom_light.png b/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_custom_light.png new file mode 100644 index 000000000..64ca9cf9a Binary files /dev/null and b/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_custom_light.png differ diff --git a/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_logo_dark.png b/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_logo_dark.png deleted file mode 100644 index 558fd728d..000000000 Binary files a/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_logo_dark.png and /dev/null differ diff --git a/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_logo_light.png b/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_logo_light.png deleted file mode 100644 index 50c5583d1..000000000 Binary files a/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_logo_light.png and /dev/null differ diff --git a/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_logo_minimal_dark.png b/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_logo_minimal_dark.png deleted file mode 100644 index 2428aee24..000000000 Binary files a/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_logo_minimal_dark.png and /dev/null differ diff --git a/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_logo_minimal_light.png b/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_logo_minimal_light.png deleted file mode 100644 index c444e6e0d..000000000 Binary files a/patches/src/main/resources/change-header/drawable-hdpi/revanced_header_logo_minimal_light.png and /dev/null differ diff --git a/patches/src/main/resources/change-header/drawable-mdpi/revanced_header_logo_dark.png b/patches/src/main/resources/change-header/drawable-mdpi/revanced_header_logo_dark.png deleted file mode 100644 index 92c1bd7c6..000000000 Binary files a/patches/src/main/resources/change-header/drawable-mdpi/revanced_header_logo_dark.png and /dev/null differ diff --git a/patches/src/main/resources/change-header/drawable-mdpi/revanced_header_logo_light.png b/patches/src/main/resources/change-header/drawable-mdpi/revanced_header_logo_light.png deleted file mode 100644 index 4c5a74044..000000000 Binary files a/patches/src/main/resources/change-header/drawable-mdpi/revanced_header_logo_light.png and /dev/null differ diff --git a/patches/src/main/resources/change-header/drawable-mdpi/revanced_header_logo_minimal_dark.png b/patches/src/main/resources/change-header/drawable-mdpi/revanced_header_logo_minimal_dark.png deleted file mode 100644 index 1bf077fb8..000000000 Binary files a/patches/src/main/resources/change-header/drawable-mdpi/revanced_header_logo_minimal_dark.png and /dev/null differ diff --git a/patches/src/main/resources/change-header/drawable-mdpi/revanced_header_logo_minimal_light.png b/patches/src/main/resources/change-header/drawable-mdpi/revanced_header_logo_minimal_light.png deleted file mode 100644 index a94f9918f..000000000 Binary files a/patches/src/main/resources/change-header/drawable-mdpi/revanced_header_logo_minimal_light.png and /dev/null differ diff --git a/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_custom_dark.png b/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_custom_dark.png new file mode 100644 index 000000000..c2ab1e455 Binary files /dev/null and b/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_custom_dark.png differ diff --git a/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_custom_light.png b/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_custom_light.png new file mode 100644 index 000000000..f2eef9a25 Binary files /dev/null and b/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_custom_light.png differ diff --git a/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_logo_dark.png b/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_logo_dark.png deleted file mode 100644 index 09380c6e5..000000000 Binary files a/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_logo_dark.png and /dev/null differ diff --git a/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_logo_light.png b/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_logo_light.png deleted file mode 100644 index 96aa0bffd..000000000 Binary files a/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_logo_light.png and /dev/null differ diff --git a/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_logo_minimal_dark.png b/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_logo_minimal_dark.png deleted file mode 100644 index 438db3316..000000000 Binary files a/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_logo_minimal_dark.png and /dev/null differ diff --git a/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_logo_minimal_light.png b/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_logo_minimal_light.png deleted file mode 100644 index 9d4968d0b..000000000 Binary files a/patches/src/main/resources/change-header/drawable-xhdpi/revanced_header_logo_minimal_light.png and /dev/null differ diff --git a/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_custom_dark.png b/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_custom_dark.png new file mode 100644 index 000000000..1fd39d2fe Binary files /dev/null and b/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_custom_dark.png differ diff --git a/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_custom_light.png b/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_custom_light.png new file mode 100644 index 000000000..9399534b7 Binary files /dev/null and b/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_custom_light.png differ diff --git a/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_logo_dark.png b/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_logo_dark.png deleted file mode 100644 index 20e764314..000000000 Binary files a/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_logo_dark.png and /dev/null differ diff --git a/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_logo_light.png b/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_logo_light.png deleted file mode 100644 index f49bc8aa9..000000000 Binary files a/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_logo_light.png and /dev/null differ diff --git a/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_logo_minimal_dark.png b/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_logo_minimal_dark.png deleted file mode 100644 index 331911070..000000000 Binary files a/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_logo_minimal_dark.png and /dev/null differ diff --git a/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_logo_minimal_light.png b/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_logo_minimal_light.png deleted file mode 100644 index def9f2861..000000000 Binary files a/patches/src/main/resources/change-header/drawable-xxhdpi/revanced_header_logo_minimal_light.png and /dev/null differ diff --git a/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_custom_dark.png b/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_custom_dark.png new file mode 100644 index 000000000..b9eb10e28 Binary files /dev/null and b/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_custom_dark.png differ diff --git a/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_custom_light.png b/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_custom_light.png new file mode 100644 index 000000000..6c30db7ff Binary files /dev/null and b/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_custom_light.png differ diff --git a/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_logo_dark.png b/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_logo_dark.png deleted file mode 100644 index e8f2deb43..000000000 Binary files a/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_logo_dark.png and /dev/null differ diff --git a/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_logo_light.png b/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_logo_light.png deleted file mode 100644 index 6157ca5ce..000000000 Binary files a/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_logo_light.png and /dev/null differ diff --git a/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_logo_minimal_dark.png b/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_logo_minimal_dark.png deleted file mode 100644 index 81509cfa0..000000000 Binary files a/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_logo_minimal_dark.png and /dev/null differ diff --git a/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_logo_minimal_light.png b/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_logo_minimal_light.png deleted file mode 100644 index d0c59666d..000000000 Binary files a/patches/src/main/resources/change-header/drawable-xxxhdpi/revanced_header_logo_minimal_light.png and /dev/null differ diff --git a/patches/src/main/resources/change-header/drawable/revanced_header_minimal_dark.xml b/patches/src/main/resources/change-header/drawable/revanced_header_minimal_dark.xml new file mode 100644 index 000000000..9f337b7c1 --- /dev/null +++ b/patches/src/main/resources/change-header/drawable/revanced_header_minimal_dark.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + diff --git a/patches/src/main/resources/change-header/drawable/revanced_header_minimal_light.xml b/patches/src/main/resources/change-header/drawable/revanced_header_minimal_light.xml new file mode 100644 index 000000000..a40169f45 --- /dev/null +++ b/patches/src/main/resources/change-header/drawable/revanced_header_minimal_light.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + diff --git a/patches/src/main/resources/change-header/drawable/revanced_header_rounded_dark.xml b/patches/src/main/resources/change-header/drawable/revanced_header_rounded_dark.xml new file mode 100644 index 000000000..73de0de42 --- /dev/null +++ b/patches/src/main/resources/change-header/drawable/revanced_header_rounded_dark.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/patches/src/main/resources/change-header/drawable/revanced_header_rounded_light.xml b/patches/src/main/resources/change-header/drawable/revanced_header_rounded_light.xml new file mode 100644 index 000000000..a6e1cbe5e --- /dev/null +++ b/patches/src/main/resources/change-header/drawable/revanced_header_rounded_light.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + +