feat: SliderPreferenceWidget

This commit is contained in:
Ahmad Ansori Palembani 2024-05-31 06:26:49 +07:00
parent 579484eba4
commit 2fc6ab1b62
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
2 changed files with 42 additions and 11 deletions

View file

@ -17,6 +17,7 @@ import dev.yokai.presentation.component.preference.widget.EditTextPreferenceWidg
import dev.yokai.presentation.component.preference.widget.InfoWidget
import dev.yokai.presentation.component.preference.widget.ListPreferenceWidget
import dev.yokai.presentation.component.preference.widget.MultiSelectListPreferenceWidget
import dev.yokai.presentation.component.preference.widget.SliderPreferenceWidget
import dev.yokai.presentation.component.preference.widget.SwitchPreferenceWidget
import dev.yokai.presentation.component.preference.widget.TextPreferenceWidget
import dev.yokai.presentation.component.preference.widget.TrackingPreferenceWidget
@ -78,23 +79,18 @@ internal fun PreferenceItem(
)
}
is Preference.PreferenceItem.SliderPreference -> {
// TODO: use different composable?
// FIXME: Add the actual thing
Text(text = "Hello World")
/*
SliderItem(
label = item.title,
SliderPreferenceWidget(
title = item.title,
subtitle = item.subtitle.takeUnless { it.isNullOrEmpty() } ?: item.value.toString(),
value = item.value,
min = item.min,
max = item.max,
value = item.value,
valueText = item.subtitle.takeUnless { it.isNullOrEmpty() } ?: item.value.toString(),
onChange = {
onValueChange = {
scope.launch {
item.onValueChanged(it)
item.onValueChanged(it.toInt())
}
},
)
*/
}
is Preference.PreferenceItem.ListPreference<*> -> {
val value by item.pref.collectAsState()

View file

@ -0,0 +1,35 @@
package dev.yokai.presentation.component.preference.widget
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Slider
import androidx.compose.material3.SliderState
import androidx.compose.material3.Switch
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
@Composable
fun SliderPreferenceWidget(
modifier: Modifier = Modifier,
title: String,
subtitle: String? = null,
icon: ImageVector? = null,
value: Int,
min: Int,
max: Int,
onValueChange: (Float) -> Unit,
) {
TextPreferenceWidget(
modifier = modifier,
title = title,
subtitle = subtitle,
icon = icon,
widget = {
Slider(
value = value.toFloat(),
onValueChange = onValueChange,
valueRange = min.toFloat()..max.toFloat()
)
},
)
}