From 2fb5c9c18d7e31468455bda4a6b4894065c7aa79 Mon Sep 17 00:00:00 2001 From: rushiiMachine <33725716+rushiiMachine@users.noreply.github.com> Date: Sat, 31 May 2025 12:37:23 -0700 Subject: [PATCH] feat(PatchOptions): add icon preview --- .../ui/components/CustomDiscordAppIcon.kt | 2 + .../screens/PatchOptionsScreenPreview.kt | 17 +++++++ .../screens/patchopts/PatchOptionsScreen.kt | 47 ++++++++++++++----- 3 files changed, 55 insertions(+), 11 deletions(-) diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/components/CustomDiscordAppIcon.kt b/app/src/main/kotlin/com/aliucord/manager/ui/components/CustomDiscordAppIcon.kt index 5f6c749..0bcecb9 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/components/CustomDiscordAppIcon.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/components/CustomDiscordAppIcon.kt @@ -21,6 +21,8 @@ import androidx.core.graphics.drawable.toDrawable import com.aliucord.manager.R import com.aliucord.manager.ui.screens.patchopts.PatchOptions.IconReplacement +// Sizing information is obtained from here: https://medium.com/google-design/designing-adaptive-icons-515af294c783 + @Composable fun discordIconDrawable( backgroundColor: Color, diff --git a/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/PatchOptionsScreenPreview.kt b/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/PatchOptionsScreenPreview.kt index b5dd7bb..320f7ef 100644 --- a/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/PatchOptionsScreenPreview.kt +++ b/app/src/main/kotlin/com/aliucord/manager/ui/previews/screens/PatchOptionsScreenPreview.kt @@ -2,6 +2,7 @@ package com.aliucord.manager.ui.previews.screens import android.content.res.Configuration import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.* import com.aliucord.manager.ui.components.ManagerTheme import com.aliucord.manager.ui.screens.patchopts.* @@ -21,6 +22,9 @@ private fun PatchOptionsScreenPreview( isDevMode = parameters.isDevMode, debuggable = parameters.debuggable, setDebuggable = {}, + oldLogo = parameters.oldLogo, + selectedColor = parameters.selectedColor, + selectedImage = { parameters.selectedImage }, onOpenIconOptions = {}, appName = parameters.appName, appNameIsError = parameters.appNameIsError, @@ -34,10 +38,14 @@ private fun PatchOptionsScreenPreview( } } +@Suppress("ArrayInDataClass") private data class PatchOptionsParameters( val isUpdate: Boolean, val isDevMode: Boolean, val debuggable: Boolean, + val oldLogo: Boolean, + val selectedColor: Color?, + val selectedImage: ByteArray?, val appName: String, val appNameIsError: Boolean, val packageName: String, @@ -52,6 +60,9 @@ private class PatchOptionsParametersProvider : PreviewParameterProvider Unit, + oldLogo: Boolean, + selectedColor: Color?, + selectedImage: () -> ByteArray?, onOpenIconOptions: () -> Unit, appName: String, @@ -156,14 +164,31 @@ fun PatchOptionsScreenContent( ) .padding(bottom = 8.dp), ) { - // TODO: selected icon options preview - // Icon( - // painter = painterResource(R.drawable.ic_discord), - // contentDescription = null, - // modifier = Modifier - // .padding(start = 4.dp, end = 14.dp) - // .size(26.dp), - // ) + val drawable = when { + selectedColor != null -> discordIconDrawable( + backgroundColor = selectedColor, + oldLogo = oldLogo, + size = 34.dp, + ) + + selectedImage() != null -> customIconDrawable( + foregroundIcon = selectedImage()!!, + ) + + else -> discordIconDrawable( + backgroundColor = Color.Black, + oldLogo = false, + size = 34.dp, + ) + } + + Drawable( + drawable = drawable, + modifier = Modifier + .padding(start = 4.dp, end = 14.dp) + .size(34.dp) + .clip(CircleShape), + ) } val appNameIsDefault by remember {