LazyColumn in progress of being fixed
This commit is contained in:
parent
2ca112ee0e
commit
535ef85c6d
1 changed files with 124 additions and 108 deletions
|
@ -1,7 +1,6 @@
|
|||
package be.ugent.sel.studeez.screens.timer_overview.add_timer
|
||||
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.fillMaxHeight
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
|
@ -22,6 +21,7 @@ import be.ugent.sel.studeez.R
|
|||
import be.ugent.sel.studeez.common.composable.BasicButton
|
||||
import be.ugent.sel.studeez.common.composable.SecondaryScreenTemplate
|
||||
import be.ugent.sel.studeez.resources
|
||||
import be.ugent.sel.studeez.ui.theme.StudeezTheme
|
||||
|
||||
data class AddTimerActions(
|
||||
val goBack: () -> Unit,
|
||||
|
@ -79,122 +79,137 @@ fun AddTimerScreen(
|
|||
title = resources().getString(R.string.add_timer),
|
||||
popUp = addTimerActions.goBack
|
||||
) {
|
||||
Column(
|
||||
LazyColumn(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.padding(16.dp)
|
||||
) {
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
horizontalArrangement = Arrangement.Center
|
||||
) {
|
||||
item {
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
horizontalArrangement = Arrangement.Center
|
||||
) {
|
||||
Text(
|
||||
text = "How long do you want to study?",
|
||||
textAlign = TextAlign.Center
|
||||
)
|
||||
}
|
||||
}
|
||||
item {
|
||||
Text(
|
||||
text = "How long do you want to study?",
|
||||
textAlign = TextAlign.Center
|
||||
text = "${uiState.studyTimeHours.toInt()} hour${ if (uiState.studyTimeHours == 1f) "" else "s"}"
|
||||
)
|
||||
}
|
||||
|
||||
LazyColumn(
|
||||
modifier = Modifier
|
||||
.padding(16.dp)
|
||||
) {
|
||||
item{
|
||||
item {
|
||||
Slider(
|
||||
value = uiState.studyTimeHours,
|
||||
onValueChange = {
|
||||
addTimerActions.onStudyTimeHoursChange(it)
|
||||
},
|
||||
steps = 8,
|
||||
valueRange = 1f..10f,
|
||||
enabled = true
|
||||
)
|
||||
}
|
||||
item {
|
||||
Text(
|
||||
text = "${uiState.studyTimeMinutes.toInt()} minutes"
|
||||
)
|
||||
}
|
||||
item {
|
||||
Slider(
|
||||
value = uiState.studyTimeMinutes,
|
||||
onValueChange = {
|
||||
addTimerActions.onStudyTimeMinutesChange(it)
|
||||
},
|
||||
steps = 11,
|
||||
valueRange = 0f..60f,
|
||||
enabled = true
|
||||
)
|
||||
}
|
||||
item {
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
horizontalArrangement = Arrangement.Center
|
||||
) {
|
||||
Text(
|
||||
text = "${uiState.studyTimeHours.toInt()} hour${ if (uiState.studyTimeHours == 1f) "" else "s"}"
|
||||
text = "With breaks?",
|
||||
)
|
||||
Slider(
|
||||
value = uiState.studyTimeHours,
|
||||
onValueChange = {
|
||||
addTimerActions.onStudyTimeHoursChange(it)
|
||||
},
|
||||
steps = 8,
|
||||
valueRange = 1f..10f,
|
||||
enabled = true
|
||||
Checkbox(
|
||||
checked = uiState.withBreaks,
|
||||
onCheckedChange = { addTimerActions.onWithBreaksChange(it) }
|
||||
)
|
||||
|
||||
Text(
|
||||
text = "${uiState.studyTimeMinutes.toInt()} minutes"
|
||||
}
|
||||
}
|
||||
item {
|
||||
Text(
|
||||
text = if (uiState.withBreaks) "breaks of ${uiState.breakTime.toInt()} minutes" else "",
|
||||
)
|
||||
}
|
||||
item {
|
||||
Slider(
|
||||
value = uiState.breakTime,
|
||||
onValueChange = {
|
||||
addTimerActions.onBreakTimeChange(it)
|
||||
},
|
||||
steps = 11,
|
||||
valueRange = 0f..60f,
|
||||
enabled = uiState.withBreaks
|
||||
)
|
||||
}
|
||||
item {
|
||||
Text(
|
||||
text = if (uiState.withBreaks) "${uiState.repeats.toInt()} breaks" else ""
|
||||
)
|
||||
}
|
||||
item {
|
||||
Slider(
|
||||
value = uiState.repeats,
|
||||
onValueChange = {
|
||||
addTimerActions.onRepeatsChange(it)
|
||||
},
|
||||
steps = 8,
|
||||
valueRange = 1f..10f,
|
||||
enabled = uiState.withBreaks
|
||||
)
|
||||
}
|
||||
item {
|
||||
Text(
|
||||
text = "Timer name"
|
||||
)
|
||||
}
|
||||
item {
|
||||
TextField(
|
||||
value = uiState.name,
|
||||
onValueChange = { addTimerActions.onNameChange(it) }
|
||||
)
|
||||
}
|
||||
item {
|
||||
Text(
|
||||
text = "Timer description"
|
||||
)
|
||||
}
|
||||
item {
|
||||
TextField(
|
||||
value = uiState.description,
|
||||
onValueChange = { addTimerActions.onDescriptionChange(it) }
|
||||
)
|
||||
}
|
||||
item {
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.fillMaxHeight(),
|
||||
verticalAlignment = Alignment.Bottom,
|
||||
horizontalArrangement = Arrangement.Center
|
||||
) {
|
||||
BasicButton(
|
||||
text = R.string.add_timer,
|
||||
modifier = Modifier,
|
||||
onClick = addTimerActions.addTimer
|
||||
)
|
||||
Slider(
|
||||
value = uiState.studyTimeMinutes,
|
||||
onValueChange = {
|
||||
addTimerActions.onStudyTimeMinutesChange(it)
|
||||
},
|
||||
steps = 11,
|
||||
valueRange = 0f..60f,
|
||||
enabled = true
|
||||
)
|
||||
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
horizontalArrangement = Arrangement.Center
|
||||
) {
|
||||
Text(
|
||||
text = "With breaks?",
|
||||
)
|
||||
Checkbox(
|
||||
checked = uiState.withBreaks,
|
||||
onCheckedChange = { addTimerActions.onWithBreaksChange(it) }
|
||||
)
|
||||
}
|
||||
|
||||
Text(
|
||||
text = if (uiState.withBreaks) "breaks of ${uiState.breakTime.toInt()} minutes" else "",
|
||||
)
|
||||
Slider(
|
||||
value = uiState.breakTime,
|
||||
onValueChange = {
|
||||
addTimerActions.onBreakTimeChange(it)
|
||||
},
|
||||
steps = 11,
|
||||
valueRange = 0f..60f,
|
||||
enabled = uiState.withBreaks
|
||||
)
|
||||
|
||||
Text(
|
||||
text = if (uiState.withBreaks) "${uiState.repeats.toInt()} breaks" else ""
|
||||
)
|
||||
Slider(
|
||||
value = uiState.repeats,
|
||||
onValueChange = {
|
||||
addTimerActions.onRepeatsChange(it)
|
||||
},
|
||||
steps = 8,
|
||||
valueRange = 1f..10f,
|
||||
enabled = uiState.withBreaks
|
||||
)
|
||||
|
||||
Text(
|
||||
text = "Timer name"
|
||||
)
|
||||
TextField(
|
||||
value = uiState.name,
|
||||
onValueChange = { addTimerActions.onNameChange(it) }
|
||||
)
|
||||
|
||||
Text(
|
||||
text = "Timer description"
|
||||
)
|
||||
TextField(
|
||||
value = uiState.description,
|
||||
onValueChange = { addTimerActions.onDescriptionChange(it) }
|
||||
)
|
||||
|
||||
Row(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.fillMaxHeight(),
|
||||
verticalAlignment = Alignment.Bottom,
|
||||
horizontalArrangement = Arrangement.Center
|
||||
) {
|
||||
BasicButton(
|
||||
text = R.string.add_timer,
|
||||
modifier = Modifier,
|
||||
onClick = addTimerActions.addTimer
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -203,9 +218,10 @@ fun AddTimerScreen(
|
|||
|
||||
@Preview
|
||||
@Composable
|
||||
fun AddTimerScreenPreview() {
|
||||
fun AddTimerScreenPreview() { StudeezTheme {
|
||||
AddTimerScreen(
|
||||
addTimerActions = AddTimerActions({}, {}, {}, {}, {}, {}, {}, {}, {}),
|
||||
uiState = AddTimerUiState()
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
Reference in a new issue