#30 timerEdit screen and viewmodel
This commit is contained in:
parent
d1c23fce48
commit
6d8f9befb3
2 changed files with 105 additions and 1 deletions
|
@ -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) {} }
|
||||
//}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
}
|
Reference in a new issue