#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
|
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
|
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