feat(music/music-settings): custom branding icons can be set https://github.com/inotia00/ReVanced_Extended/issues/955

This commit is contained in:
inotia00 2023-05-06 01:52:43 +09:00
parent 61202c5aaf
commit d77c8a4c83

View File

@ -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<ResourceUtils.ResourceGroup>) {
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 {