Fix preference disabled state alpha

This commit is contained in:
MM20 2022-01-01 21:21:38 +01:00
parent 89db713e24
commit 1a3fde5bf5
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389

View File

@ -2,13 +2,13 @@ package de.mm20.launcher2.ui.component.preferences
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.material.ContentAlpha
import androidx.compose.material.LocalContentAlpha
import androidx.compose.material3.*
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.unit.dp
@ -21,48 +21,44 @@ fun Preference(
controls: @Composable (() -> Unit)? = null,
enabled: Boolean = true
) {
CompositionLocalProvider(
LocalContentAlpha provides if (enabled) ContentAlpha.high else ContentAlpha.disabled
Row(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier
.fillMaxWidth()
.clickable(enabled = enabled, onClick = onClick)
.padding(horizontal = 16.dp, vertical = 16.dp)
.alpha(if (enabled) 1f else 0.38f),
) {
Row(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier
.fillMaxWidth()
.clickable(enabled = enabled, onClick = onClick)
.padding(horizontal = 16.dp, vertical = 16.dp),
Box(
modifier = Modifier.width(56.dp),
contentAlignment = Alignment.CenterStart
) {
if (icon != null) {
Icon(
modifier = Modifier.padding(start = 4.dp),
imageVector = icon,
contentDescription = null,
tint = MaterialTheme.colorScheme.primary,
)
}
}
Column(
modifier = Modifier.weight(1f)
) {
Text(text = title, style = MaterialTheme.typography.titleMedium)
if (summary != null) {
Text(
text = summary,
style = MaterialTheme.typography.bodyMedium,
modifier = Modifier.padding(top = 1.dp)
)
}
}
if (controls != null) {
Box(
modifier = Modifier.width(56.dp),
contentAlignment = Alignment.CenterStart
modifier = Modifier.padding(start = 24.dp)
) {
if (icon != null) {
Icon(
modifier = Modifier.padding(start = 4.dp),
imageVector = icon,
contentDescription = null,
tint = MaterialTheme.colorScheme.primary,
)
}
}
Column(
modifier = Modifier.weight(1f)
) {
Text(text = title, style = MaterialTheme.typography.titleMedium)
if (summary != null) {
Text(
text = summary,
style = MaterialTheme.typography.bodyMedium,
modifier = Modifier.padding(top = 1.dp)
)
}
}
if (controls != null) {
Box(
modifier = Modifier.padding(start = 24.dp)
) {
controls()
}
controls()
}
}
}