From f07ba6fced7b1669bd4b2fdd0d7c94819ed9a1b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolf-Martell=20Montw=C3=A9?= Date: Thu, 12 Sep 2024 12:47:54 +0200 Subject: [PATCH] Add Dot and Star icons --- .../ui/catalog/ui/atom/items/IconItems.kt | 27 +++++++++++++++++-- .../compose/designsystem/atom/icon/Icons.kt | 12 +++++++-- .../designsystem/atom/icon/filled/Dot.kt | 27 +++++++++++++++++++ .../core/ui/compose/theme2/ThemeSizes.kt | 3 ++- .../theme2/default/DefaultThemeSizes.kt | 3 ++- .../permissions/ui/PermissionBox.kt | 2 +- 6 files changed, 67 insertions(+), 7 deletions(-) create mode 100644 core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/icon/filled/Dot.kt diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/items/IconItems.kt b/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/items/IconItems.kt index 240fc81363..bd508fe6e5 100644 --- a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/items/IconItems.kt +++ b/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/ui/atom/items/IconItems.kt @@ -3,6 +3,7 @@ package app.k9mail.ui.catalog.ui.atom.items import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.grid.LazyGridScope import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -24,6 +25,28 @@ fun LazyGridScope.iconItems() { sectionHeaderItem( text = "Compose Icons", ) + sectionSubtitleItem(text = "Sizes") + defaultItem { + IconItem( + name = "Small", + imageVector = Icons.Outlined.Info, + modifier = Modifier.size(MainTheme.sizes.iconSmall), + ) + } + defaultItem { + IconItem( + name = "Default", + imageVector = Icons.Outlined.Info, + modifier = Modifier.size(MainTheme.sizes.icon), + ) + } + defaultItem { + IconItem( + name = "Large", + imageVector = Icons.Outlined.Info, + modifier = Modifier.size(MainTheme.sizes.iconLarge), + ) + } sectionSubtitleItem(text = "Filled") getIconsFor(Icons.Filled) sectionSubtitleItem(text = "Outlined") @@ -81,13 +104,13 @@ private fun IconItem( ) { Column( modifier = Modifier - .padding(defaultItemPadding()) - .then(modifier), + .padding(defaultItemPadding()), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.spacedBy(MainTheme.spacings.default), ) { Icon( imageVector = imageVector, + modifier = modifier, ) TextBodySmall(text = name) } diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/icon/Icons.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/icon/Icons.kt index 2bd04f6b54..ba8173f3df 100644 --- a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/icon/Icons.kt +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/icon/Icons.kt @@ -4,6 +4,7 @@ import androidx.compose.material.icons.automirrored.outlined.ArrowBack import androidx.compose.material.icons.filled.Cancel import androidx.compose.material.icons.filled.CheckCircle import androidx.compose.material.icons.filled.Outbox +import androidx.compose.material.icons.filled.Star import androidx.compose.material.icons.filled.VisibilityOff import androidx.compose.material.icons.outlined.AccountCircle import androidx.compose.material.icons.outlined.Check @@ -16,16 +17,23 @@ import androidx.compose.material.icons.outlined.Menu import androidx.compose.material.icons.outlined.Security import androidx.compose.material.icons.outlined.Visibility import androidx.compose.ui.graphics.vector.ImageVector +import app.k9mail.core.ui.compose.designsystem.atom.icon.filled.Dot import androidx.compose.material.icons.Icons as MaterialIcons // We're using getters so not all icons are loaded into memory as soon as one of the nested objects is accessed. object Icons { object Filled { + val Cancel: ImageVector + get() = MaterialIcons.Filled.Cancel + val CheckCircle: ImageVector get() = MaterialIcons.Filled.CheckCircle - val Cancel: ImageVector - get() = MaterialIcons.Filled.Cancel + val Dot: ImageVector + get() = MaterialIcons.Filled.Dot + + val Star: ImageVector + get() = MaterialIcons.Filled.Star } object Outlined { diff --git a/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/icon/filled/Dot.kt b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/icon/filled/Dot.kt new file mode 100644 index 0000000000..cc85e7bf1c --- /dev/null +++ b/core/ui/compose/designsystem/src/main/kotlin/app/k9mail/core/ui/compose/designsystem/atom/icon/filled/Dot.kt @@ -0,0 +1,27 @@ +package app.k9mail.core.ui.compose.designsystem.atom.icon.filled + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.materialIcon +import androidx.compose.material.icons.materialPath +import androidx.compose.ui.graphics.vector.ImageVector + +@Suppress("MagicNumber") +val Icons.Filled.Dot: ImageVector + get() { + if (instance != null) { + return instance!! + } + instance = materialIcon(name = "Filled.Dot") { + materialPath { + moveTo(12.0f, 6.0f) + curveToRelative(-3.31f, 0.0f, -6.0f, 2.69f, -6.0f, 6.0f) + reflectiveCurveToRelative(2.69f, 6.0f, 6.0f, 6.0f) + reflectiveCurveToRelative(6.0f, -2.69f, 6.0f, -6.0f) + reflectiveCurveToRelative(-2.69f, -6.0f, -6.0f, -6.0f) + close() + } + } + return instance!! + } + +private var instance: ImageVector? = null diff --git a/core/ui/compose/theme2/common/src/main/kotlin/app/k9mail/core/ui/compose/theme2/ThemeSizes.kt b/core/ui/compose/theme2/common/src/main/kotlin/app/k9mail/core/ui/compose/theme2/ThemeSizes.kt index 9ddb6140e8..6d4f80c92a 100644 --- a/core/ui/compose/theme2/common/src/main/kotlin/app/k9mail/core/ui/compose/theme2/ThemeSizes.kt +++ b/core/ui/compose/theme2/common/src/main/kotlin/app/k9mail/core/ui/compose/theme2/ThemeSizes.kt @@ -14,8 +14,9 @@ data class ThemeSizes( val huge: Dp, val huger: Dp, + val iconSmall: Dp, val icon: Dp, - val largeIcon: Dp, + val iconLarge: Dp, val topBarHeight: Dp, val bottomBarHeight: Dp, diff --git a/core/ui/compose/theme2/common/src/main/kotlin/app/k9mail/core/ui/compose/theme2/default/DefaultThemeSizes.kt b/core/ui/compose/theme2/common/src/main/kotlin/app/k9mail/core/ui/compose/theme2/default/DefaultThemeSizes.kt index 4db563b49f..fb84c4cfd4 100644 --- a/core/ui/compose/theme2/common/src/main/kotlin/app/k9mail/core/ui/compose/theme2/default/DefaultThemeSizes.kt +++ b/core/ui/compose/theme2/common/src/main/kotlin/app/k9mail/core/ui/compose/theme2/default/DefaultThemeSizes.kt @@ -12,8 +12,9 @@ val defaultThemeSizes = ThemeSizes( huge = 256.dp, huger = 384.dp, + iconSmall = 16.dp, icon = 24.dp, - largeIcon = 32.dp, + iconLarge = 32.dp, topBarHeight = 64.dp, bottomBarHeight = 80.dp, diff --git a/feature/onboarding/permissions/src/main/kotlin/app/k9mail/feature/onboarding/permissions/ui/PermissionBox.kt b/feature/onboarding/permissions/src/main/kotlin/app/k9mail/feature/onboarding/permissions/ui/PermissionBox.kt index f3fbed4b0f..665a156ef2 100644 --- a/feature/onboarding/permissions/src/main/kotlin/app/k9mail/feature/onboarding/permissions/ui/PermissionBox.kt +++ b/feature/onboarding/permissions/src/main/kotlin/app/k9mail/feature/onboarding/permissions/ui/PermissionBox.kt @@ -85,7 +85,7 @@ private fun IconWithPermissionStateOverlay( permissionState: UiPermissionState, ) { Box { - val iconSize = MainTheme.sizes.largeIcon + val iconSize = MainTheme.sizes.iconLarge val overlayIconSize = iconSize / 2 val overlayIconOffset = overlayIconSize / 2 val scalingFactor = iconSize / icon.image.defaultHeight