From d77c8a4c83f918dc797c97aa1f552ca96e5809db Mon Sep 17 00:00:00 2001 From: inotia00 Date: Sat, 6 May 2023 01:52:43 +0900 Subject: [PATCH] feat(music/music-settings): custom branding icons can be set https://github.com/inotia00/ReVanced_Extended/issues/955 --- .../resource/patch/MusicSettingsPatch.kt | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/app/revanced/patches/music/misc/settings/resource/patch/MusicSettingsPatch.kt b/src/main/kotlin/app/revanced/patches/music/misc/settings/resource/patch/MusicSettingsPatch.kt index f10f0d593..0ee0ed1fd 100644 --- a/src/main/kotlin/app/revanced/patches/music/misc/settings/resource/patch/MusicSettingsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/music/misc/settings/resource/patch/MusicSettingsPatch.kt @@ -12,14 +12,19 @@ import app.revanced.patches.music.misc.settings.bytecode.patch.MusicSettingsByte import app.revanced.patches.shared.annotation.YouTubeMusicCompatibility import app.revanced.patches.shared.patch.settings.AbstractSettingsResourcePatch import app.revanced.util.enum.CategoryType -import app.revanced.util.enum.CategoryType.* +import app.revanced.util.resources.IconHelper +import app.revanced.util.resources.IconHelper.copyFiles +import app.revanced.util.resources.IconHelper.makeDirectoryAndCopyFiles import app.revanced.util.resources.MusicResourceHelper.addMusicPreference import app.revanced.util.resources.MusicResourceHelper.addMusicPreferenceAlt import app.revanced.util.resources.MusicResourceHelper.addMusicPreferenceCategory import app.revanced.util.resources.MusicResourceHelper.addMusicPreferenceWithIntent import app.revanced.util.resources.MusicResourceHelper.addReVancedMusicPreference import app.revanced.util.resources.MusicResourceHelper.sortMusicPreferenceCategory +import app.revanced.util.resources.ResourceUtils import org.w3c.dom.Element +import java.io.File +import java.nio.file.Paths @Patch @Name("music-settings") @@ -56,6 +61,33 @@ class MusicSettingsPatch : AbstractSettingsResourcePatch( context.addReVancedMusicPreference() + /** + * If a custom branding icon path exists, merge it + */ + val iconPath = "branding-music" + val targetDirectory = Paths.get("").toAbsolutePath().toString() + "/$iconPath" + + if (File(targetDirectory).exists()) { + fun copyResources(resourceGroups: List) { + try { context.copyFiles(resourceGroups, iconPath) } + catch (_: Exception) { context.makeDirectoryAndCopyFiles(resourceGroups, iconPath) } + } + + val iconResourceFileNames = + IconHelper.YOUTUBE_MUSIC_LAUNCHER_ICON_ARRAY + .map { "$it.png" } + .toTypedArray() + + fun createGroup(directory: String) = ResourceUtils.ResourceGroup( + directory, *iconResourceFileNames + ) + + arrayOf("xxxhdpi", "xxhdpi", "xhdpi", "hdpi", "mdpi") + .map { "mipmap-$it" } + .map(::createGroup) + .let(::copyResources) + } + return PatchResultSuccess() } companion object {