#40 basic timer overview screen (to be extended)
This commit is contained in:
parent
79dcede47b
commit
049138bbc5
1 changed files with 100 additions and 0 deletions
|
@ -1,2 +1,102 @@
|
|||
package be.ugent.sel.studeez.screens.timer_overview
|
||||
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Row
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.material.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.collectAsState
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.unit.sp
|
||||
import androidx.hilt.navigation.compose.hiltViewModel
|
||||
import be.ugent.sel.studeez.R
|
||||
import be.ugent.sel.studeez.common.composable.BasicButton
|
||||
import be.ugent.sel.studeez.common.composable.PrimaryScreenTemplate
|
||||
import be.ugent.sel.studeez.common.ext.basicButton
|
||||
import be.ugent.sel.studeez.common.ext.card
|
||||
import be.ugent.sel.studeez.data.local.models.timer_info.CustomTimerInfo
|
||||
import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo
|
||||
import be.ugent.sel.studeez.resources
|
||||
|
||||
@Composable
|
||||
fun TimerOverviewScreen(
|
||||
openAndPopUp: (String, String) -> Unit,
|
||||
viewModel: TimerOverviewViewModel = hiltViewModel()
|
||||
) {
|
||||
|
||||
val timers = viewModel.getUserTimers().collectAsState(initial = emptyList())
|
||||
|
||||
PrimaryScreenTemplate(
|
||||
title = resources().getString(R.string.timers),
|
||||
openAndPopUp = openAndPopUp
|
||||
) {
|
||||
|
||||
Column {
|
||||
LazyColumn(
|
||||
verticalArrangement = Arrangement.spacedBy(7.dp)
|
||||
) {
|
||||
// Default Timers, cannot be edited
|
||||
items(viewModel.getDefaultTimers()) {
|
||||
TimerEntry(timerInfo = it, canEdit = false)
|
||||
}
|
||||
|
||||
// User timers, can be edited
|
||||
items(timers.value) {
|
||||
TimerEntry(timerInfo = it, true) { timerInfo ->
|
||||
viewModel.update(timerInfo)
|
||||
}
|
||||
}
|
||||
}
|
||||
BasicButton(R.string.add_timer, Modifier.basicButton()) {
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun TimerEntry(timerInfo: TimerInfo, canEdit: Boolean, update: (TimerInfo) -> Unit = {}) {
|
||||
Row(
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
horizontalArrangement = Arrangement.SpaceBetween
|
||||
) {
|
||||
Column {
|
||||
Text(
|
||||
text = timerInfo.name,
|
||||
fontWeight = FontWeight.Bold,
|
||||
fontSize = 20.sp
|
||||
)
|
||||
Text(
|
||||
text = timerInfo.description,
|
||||
fontWeight = FontWeight.Light,
|
||||
fontSize = 15.sp
|
||||
)
|
||||
}
|
||||
if (canEdit) {
|
||||
BasicButton(R.string.edit, Modifier.card()) {
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
fun TimerEntryPreview() {
|
||||
val timerInfo = CustomTimerInfo(
|
||||
"my preview timer",
|
||||
"This is the description of the timer",
|
||||
60
|
||||
)
|
||||
TimerEntry(timerInfo = timerInfo, true) { }
|
||||
}
|
Reference in a new issue