From 703f0127d6f0e7191962970cf3f519f2e9fe1aa9 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Sun, 26 Sep 2021 12:49:51 +0200 Subject: [PATCH] Make Preference disableable --- .../ui/component/preferences/Preference.kt | 87 ++++++++++--------- 1 file changed, 45 insertions(+), 42 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 289fdce1..b7d55a98 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 @@ -2,15 +2,14 @@ package de.mm20.launcher2.ui.component.preferences 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.material.* import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.unit.dp +import de.mm20.launcher2.ui.ktx.conditional @Composable fun Preference( @@ -18,52 +17,56 @@ fun Preference( title: String, summary: String? = null, onClick: () -> Unit = {}, - controls: @Composable (() -> Unit)? = null + controls: @Composable (() -> Unit)? = null, + enabled: Boolean = true ) { - Surface( - modifier = Modifier.fillMaxWidth(), - elevation = 0.dp + CompositionLocalProvider( + LocalContentAlpha provides if (enabled) ContentAlpha.high else ContentAlpha.disabled ) { - Row( - verticalAlignment = Alignment.CenterVertically, - modifier = Modifier - .fillMaxWidth() - .clickable(onClick = onClick) - .padding(horizontal = 16.dp, vertical = 16.dp), + Surface( + modifier = Modifier.fillMaxWidth(), + elevation = 0.dp ) { - Box( - modifier = Modifier.width(56.dp), - contentAlignment = Alignment.CenterStart + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier + .fillMaxWidth() + .conditional(enabled, Modifier.clickable(onClick = onClick)) + .padding(horizontal = 16.dp, vertical = 16.dp), ) { - 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) + 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