From 81c6662edee40af22db407306e2d46c3eebf29df Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Fri, 18 Feb 2022 00:00:57 +0100 Subject: [PATCH] Tweak badge style, add badge progress --- .../ui/component/ShapedLauncherIcon.kt | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/ui/src/main/java/de/mm20/launcher2/ui/component/ShapedLauncherIcon.kt b/ui/src/main/java/de/mm20/launcher2/ui/component/ShapedLauncherIcon.kt index 2801dee5..28495d14 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/component/ShapedLauncherIcon.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/component/ShapedLauncherIcon.kt @@ -4,22 +4,26 @@ import android.graphics.Matrix import android.graphics.Path import android.graphics.RectF import android.graphics.drawable.AdaptiveIconDrawable +import androidx.compose.animation.core.animateFloatAsState import androidx.compose.foundation.Canvas import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.Image import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.GenericShape import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.compositionLocalOf +import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.geometry.Offset @@ -104,24 +108,34 @@ fun ShapedLauncherIcon( modifier = Modifier .size(size * 0.33f) .align(Alignment.BottomEnd), - color = MaterialTheme.colorScheme.secondaryContainer, + color = MaterialTheme.colorScheme.secondary, shape = CircleShape ) { Box( contentAlignment = Alignment.Center ) { + + badge.progress?.let { + val progress by animateFloatAsState(it) + CircularProgressIndicator( + modifier = Modifier.fillMaxSize(), + progress = progress, + strokeWidth = size / 48, + color = MaterialTheme.colorScheme.secondaryContainer + ) + } val badgeIconRes = badge.iconRes val badgeIcon = badge.icon val number = badge.number if (badgeIconRes != null) { Image( - modifier = Modifier.fillMaxSize(), + modifier = Modifier.fillMaxSize().padding(size / 48), painter = painterResource(badgeIconRes), contentDescription = null ) } else if (badgeIcon != null) { - Canvas(modifier = Modifier.fillMaxSize()) { + Canvas(modifier = Modifier.fillMaxSize().padding(size / 48)) { badgeIcon.setBounds( 0, 0, @@ -135,7 +149,7 @@ fun ShapedLauncherIcon( } else if (number != null && number > 0 && number < 100) { Text( number.toString(), - color = MaterialTheme.colorScheme.onSecondaryContainer, + color = MaterialTheme.colorScheme.secondaryContainer, style = MaterialTheme.typography.labelSmall.copy( fontSize = with(LocalDensity.current) { size.toSp() * 0.2f