Migrate More screen to Compose (#6990)

This commit is contained in:
arkon
2022-04-23 15:51:50 -04:00
committed by GitHub
parent 8933b41937
commit c25cffafc6
7 changed files with 341 additions and 175 deletions

View File

@@ -11,12 +11,14 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.widthIn
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Switch
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.unit.dp
import eu.kanade.core.prefs.PreferenceMutableState
import eu.kanade.presentation.util.horizontalPadding
@Composable
@@ -29,7 +31,7 @@ fun Divider() {
@Composable
fun PreferenceRow(
title: String,
icon: ImageVector? = null,
painter: Painter? = null,
onClick: () -> Unit = {},
onLongClick: () -> Unit = {},
subtitle: String? = null,
@@ -50,18 +52,18 @@ fun PreferenceRow(
.heightIn(min = height)
.combinedClickable(
onLongClick = onLongClick,
onClick = onClick
onClick = onClick,
),
verticalAlignment = Alignment.CenterVertically
) {
if (icon != null) {
if (painter != null) {
Icon(
imageVector = icon,
painter = painter,
modifier = Modifier
.padding(horizontal = horizontalPadding)
.size(24.dp),
tint = MaterialTheme.colorScheme.primary,
contentDescription = null
contentDescription = null,
)
}
Column(
@@ -88,3 +90,23 @@ fun PreferenceRow(
}
}
}
@Composable
fun SwitchPreference(
preference: PreferenceMutableState<Boolean>,
title: String,
subtitle: String? = null,
painter: Painter? = null,
) {
PreferenceRow(
title = title,
subtitle = subtitle,
painter = painter,
action = {
Switch(checked = preference.value, onCheckedChange = null)
// TODO: remove this once switch checked state is fixed: https://issuetracker.google.com/issues/228336571
Text(preference.value.toString())
},
onClick = { preference.value = !preference.value },
)
}