Use imageVectors in badges and fix badge icon colors
This commit is contained in:
@@ -60,6 +60,7 @@ import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import de.mm20.launcher2.badges.Badge
|
||||
import de.mm20.launcher2.badges.BadgeIcon
|
||||
import de.mm20.launcher2.icons.ClockLayer
|
||||
import de.mm20.launcher2.icons.ClockSublayer
|
||||
import de.mm20.launcher2.icons.ClockSublayerRole
|
||||
@@ -239,12 +240,11 @@ fun ShapedLauncherIcon(
|
||||
val _badge = badge()
|
||||
if (_badge != null) {
|
||||
Surface(
|
||||
shadowElevation = 1.dp,
|
||||
tonalElevation = 1.dp,
|
||||
modifier = Modifier
|
||||
.size(size * 0.33f)
|
||||
.align(Alignment.BottomEnd),
|
||||
color = MaterialTheme.colorScheme.secondary,
|
||||
color = MaterialTheme.colorScheme.tertiary,
|
||||
shape = CircleShape
|
||||
) {
|
||||
Box(
|
||||
@@ -255,37 +255,37 @@ fun ShapedLauncherIcon(
|
||||
val progress by animateFloatAsState(it)
|
||||
CircularProgressIndicator(
|
||||
modifier = Modifier.fillMaxSize(0.8f),
|
||||
progress = progress,
|
||||
progress = { progress },
|
||||
strokeWidth = size / 48,
|
||||
color = MaterialTheme.colorScheme.secondaryContainer
|
||||
color = MaterialTheme.colorScheme.onTertiary
|
||||
)
|
||||
}
|
||||
val badgeIconRes = _badge.iconRes
|
||||
val badgeIcon = _badge.icon
|
||||
|
||||
val number = _badge.number
|
||||
if (badgeIconRes != null) {
|
||||
Image(
|
||||
if (badgeIcon is BadgeIcon.Vector) {
|
||||
Icon(
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.padding(size / 48),
|
||||
painter = painterResource(badgeIconRes),
|
||||
contentDescription = null
|
||||
.padding(size / 24),
|
||||
imageVector = badgeIcon.imageVector,
|
||||
contentDescription = null,
|
||||
tint = MaterialTheme.colorScheme.onTertiary,
|
||||
)
|
||||
} else if (badgeIcon != null) {
|
||||
} else if (badgeIcon is BadgeIcon.Drawable) {
|
||||
Canvas(
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.padding(size / 48)
|
||||
) {
|
||||
badgeIcon.setBounds(
|
||||
badgeIcon.drawable.setBounds(
|
||||
0,
|
||||
0,
|
||||
this.size.width.roundToInt(),
|
||||
this.size.height.roundToInt()
|
||||
)
|
||||
drawIntoCanvas {
|
||||
badgeIcon.draw(it.nativeCanvas)
|
||||
badgeIcon.drawable.draw(it.nativeCanvas)
|
||||
}
|
||||
}
|
||||
} else if (number != null && number > 0 && number < 100) {
|
||||
|
||||
+3
-10
@@ -20,6 +20,7 @@ import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
|
||||
import androidx.compose.foundation.lazy.grid.items
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.rounded.ArrowDropDown
|
||||
import androidx.compose.material.icons.rounded.Edit
|
||||
import androidx.compose.material.icons.rounded.FilterAlt
|
||||
import androidx.compose.material.icons.rounded.Search
|
||||
import androidx.compose.material3.Button
|
||||
@@ -51,6 +52,7 @@ import androidx.compose.ui.unit.Dp
|
||||
import androidx.compose.ui.unit.dp
|
||||
import coil.compose.AsyncImage
|
||||
import de.mm20.launcher2.badges.Badge
|
||||
import de.mm20.launcher2.badges.BadgeIcon
|
||||
import de.mm20.launcher2.icons.CustomIconWithPreview
|
||||
import de.mm20.launcher2.icons.IconPack
|
||||
import de.mm20.launcher2.search.SavableSearchable
|
||||
@@ -106,22 +108,13 @@ fun CustomizeSearchableSheet(
|
||||
val iconSize = 64.dp
|
||||
val iconSizePx = iconSize.toPixels()
|
||||
val icon by remember { viewModel.getIcon(iconSizePx.toInt()) }.collectAsState(null)
|
||||
val primaryColor = MaterialTheme.colorScheme.onSecondary
|
||||
val badgeDrawable = remember {
|
||||
InsetDrawable(
|
||||
AppCompatResources.getDrawable(context, R.drawable.ic_edit),
|
||||
8
|
||||
).also {
|
||||
it.setTint(primaryColor.toArgb())
|
||||
}
|
||||
}
|
||||
|
||||
ShapedLauncherIcon(
|
||||
size = iconSize,
|
||||
icon = { icon },
|
||||
badge = {
|
||||
Badge(
|
||||
icon = badgeDrawable
|
||||
icon = BadgeIcon(Icons.Rounded.Edit)
|
||||
)
|
||||
},
|
||||
modifier = Modifier.clickable {
|
||||
|
||||
Reference in New Issue
Block a user