From a7536f649cd1d2567f19840edec5cf93acd1d6b5 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Sun, 26 Sep 2021 12:44:51 +0200 Subject: [PATCH] Make Preference icon optional --- .../ui/component/preferences/Preference.kt | 68 +++++++++++-------- 1 file changed, 41 insertions(+), 27 deletions(-) diff --git a/ui/src/main/java/de/mm20/launcher2/ui/component/preferences/Preference.kt b/ui/src/main/java/de/mm20/launcher2/ui/component/preferences/Preference.kt index ae210492..289fdce1 100644 --- a/ui/src/main/java/de/mm20/launcher2/ui/component/preferences/Preference.kt +++ b/ui/src/main/java/de/mm20/launcher2/ui/component/preferences/Preference.kt @@ -4,6 +4,7 @@ import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.material.Icon import androidx.compose.material.MaterialTheme +import androidx.compose.material.Surface import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -13,43 +14,56 @@ import androidx.compose.ui.unit.dp @Composable fun Preference( - icon: ImageVector, + icon: ImageVector?, title: String, summary: String? = null, onClick: () -> Unit = {}, controls: @Composable (() -> Unit)? = null ) { - Row( - verticalAlignment = Alignment.CenterVertically, - modifier = Modifier - .fillMaxWidth() - .clickable(onClick = onClick) - .padding(horizontal = 16.dp, vertical = 16.dp), + Surface( + modifier = Modifier.fillMaxWidth(), + elevation = 0.dp ) { - Icon( - imageVector = icon, - contentDescription = null, - modifier = Modifier.padding(end = 24.dp), - tint = MaterialTheme.colors.primary - ) - Column( - modifier = Modifier.weight(1f) + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier + .fillMaxWidth() + .clickable(onClick = onClick) + .padding(horizontal = 16.dp, vertical = 16.dp), ) { - Text(text = title, style = MaterialTheme.typography.subtitle2) - if (summary != null) { - Text( - text = summary, - style = MaterialTheme.typography.body1, - modifier = Modifier.padding(top = 1.dp) - ) - } - } - if (controls != null) { Box( - modifier = Modifier.padding(start = 24.dp) + modifier = Modifier.width(56.dp), + contentAlignment = Alignment.CenterStart ) { - controls() + if (icon != null) { + Icon( + modifier = Modifier.padding(start = 4.dp), + imageVector = icon, + contentDescription = null, + tint = MaterialTheme.colors.primary + ) + } + } + Column( + modifier = Modifier.weight(1f) + ) { + Text(text = title, style = MaterialTheme.typography.subtitle2) + if (summary != null) { + Text( + text = summary, + style = MaterialTheme.typography.body1, + modifier = Modifier.padding(top = 1.dp) + ) + } + } + if (controls != null) { + Box( + modifier = Modifier.padding(start = 24.dp) + ) { + controls() + } } } } + } \ No newline at end of file