Make Preference disableable

This commit is contained in:
MM20 2021-09-26 12:49:51 +02:00
parent a7536f649c
commit 703f0127d6
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389

View File

@ -2,15 +2,14 @@ package de.mm20.launcher2.ui.component.preferences
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.* import androidx.compose.foundation.layout.*
import androidx.compose.material.Icon import androidx.compose.material.*
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import de.mm20.launcher2.ui.ktx.conditional
@Composable @Composable
fun Preference( fun Preference(
@ -18,7 +17,11 @@ fun Preference(
title: String, title: String,
summary: String? = null, summary: String? = null,
onClick: () -> Unit = {}, onClick: () -> Unit = {},
controls: @Composable (() -> Unit)? = null controls: @Composable (() -> Unit)? = null,
enabled: Boolean = true
) {
CompositionLocalProvider(
LocalContentAlpha provides if (enabled) ContentAlpha.high else ContentAlpha.disabled
) { ) {
Surface( Surface(
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
@ -28,7 +31,7 @@ fun Preference(
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.clickable(onClick = onClick) .conditional(enabled, Modifier.clickable(onClick = onClick))
.padding(horizontal = 16.dp, vertical = 16.dp), .padding(horizontal = 16.dp, vertical = 16.dp),
) { ) {
Box( Box(
@ -40,7 +43,7 @@ fun Preference(
modifier = Modifier.padding(start = 4.dp), modifier = Modifier.padding(start = 4.dp),
imageVector = icon, imageVector = icon,
contentDescription = null, contentDescription = null,
tint = MaterialTheme.colors.primary tint = MaterialTheme.colors.primary,
) )
} }
} }
@ -65,5 +68,5 @@ fun Preference(
} }
} }
} }
}
} }