#30 timerEdit screen and viewmodel

This commit is contained in:
lbarraga 2023-05-01 13:04:06 +02:00
parent d1c23fce48
commit 6d8f9befb3
2 changed files with 105 additions and 1 deletions

View file

@ -1,2 +1,82 @@
package be.ugent.sel.studeez.screens.timer_edit
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import be.ugent.sel.studeez.common.composable.SecondaryScreenTemplate
import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo
import be.ugent.sel.studeez.screens.timer_edit.editScreens.AbstractTimerEditScreen
import be.ugent.sel.studeez.ui.theme.StudeezTheme
data class TimerEditActions(
val getTimerInfo: () -> TimerInfo,
val saveTimer: (TimerInfo) -> Unit
)
fun getTimerEditActions(
viewModel: TimerEditViewModel,
open: (String) -> Unit
): TimerEditActions {
return TimerEditActions(
getTimerInfo = viewModel::getTimerInfo,
saveTimer = viewModel::saveTimer
)
}
@Composable
fun TimerEditRoute(
open: (String) -> Unit,
popUp: () -> Unit,
viewModel: TimerEditViewModel,
) {
TimerEditScreen(
timerEditActions = getTimerEditActions(viewModel, open),
popUp = popUp
)
}
@Composable
fun TimerEditScreen(
timerEditActions: TimerEditActions,
popUp: () -> Unit
) {
SecondaryScreenTemplate(title = "Edit Timer", popUp = { /*TODO*/ }) {
val timerEditScreen = timerEditActions.getTimerInfo().accept(GetTimerEditScreen())
timerEditScreen { timerInfo -> timerEditActions.saveTimer(timerInfo) }
}
}
//@Preview
//@Composable
//fun TimerEditScreenPreview() {
// val editEntries: List<EditEntry> = listOf(
// EditEntry("Name", "MyTimer") {},
// EditEntry("Description", "Dit is een leuke timer") {},
// EditEntry("StudyTime", "25") {}
// )
// val actions = TimerEditActions { editEntries }
// StudeezTheme { TimerEditScreen(timerEditActions = actions) {} }
//}

View file

@ -1,4 +1,28 @@
package be.ugent.sel.studeez.screens.timer_edit
class TimerEditViewModel {
import be.ugent.sel.studeez.data.EditTimerState
import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo
import be.ugent.sel.studeez.domain.LogService
import be.ugent.sel.studeez.domain.TimerDAO
import be.ugent.sel.studeez.screens.StudeezViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
@HiltViewModel
class TimerEditViewModel @Inject constructor(
private val editTimerState: EditTimerState,
private val timerDAO: TimerDAO,
logService: LogService
) : StudeezViewModel(logService) {
private val timerInfo: TimerInfo = editTimerState.timerInfo
fun getTimerInfo(): TimerInfo {
return timerInfo
}
fun saveTimer(timerInfo: TimerInfo) {
timerDAO.updateTimer(timerInfo)
}
}