#26 Show selected time

This commit is contained in:
Tibo De Peuter 2023-04-30 12:26:29 +02:00
parent 024ce85266
commit 3bf0157adc
2 changed files with 48 additions and 36 deletions

View file

@ -18,12 +18,12 @@ import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo
import be.ugent.sel.studeez.resources import be.ugent.sel.studeez.resources
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.flowOf
import java.util.*
data class TimerSelectionActions( data class TimerSelectionActions(
val getAllTimers: () -> Flow<List<TimerInfo>>, val getAllTimers: () -> Flow<List<TimerInfo>>,
val startSession: (TimerInfo) -> Unit, val startSession: (TimerInfo) -> Unit,
val pickDuration: (Context, CustomTimerInfo) -> Unit val pickDuration: (Context) -> Unit,
val customTimeStudyTime: Int
) )
fun getTimerSelectionActions( fun getTimerSelectionActions(
@ -33,21 +33,20 @@ fun getTimerSelectionActions(
return TimerSelectionActions( return TimerSelectionActions(
getAllTimers = viewModel::getAllTimers, getAllTimers = viewModel::getAllTimers,
startSession = { viewModel.startSession(open, it) }, startSession = { viewModel.startSession(open, it) },
pickDuration = { context, timerInfo -> pickDuration = { context ->
val mCalendar = Calendar.getInstance() val dialog = TimePickerDialog(
val mHour = mCalendar[Calendar.HOUR]
val mMinute = mCalendar[Calendar.MINUTE]
val mTimePickerDialog = TimePickerDialog(
context, context,
{ _, hour : Int, minute: Int -> timerInfo.studyTime = hour * 60 * 60 + minute * 60 }, { _, hour: Int, minute: Int ->
mHour, viewModel.customTimerStudyTime.value = hour * 60 * 60 + minute * 60
mMinute, },
0,
0,
true true
) )
mTimePickerDialog.show() dialog.show()
} },
customTimeStudyTime = viewModel.customTimerStudyTime.value
) )
} }
@ -76,28 +75,7 @@ fun TimerSelectionScreen(
LazyColumn { LazyColumn {
// Custom timer with duration selection button // Custom timer with duration selection button
item { item {
val timerInfo = CustomTimerInfo( CustomTimerEntry(timerSelectionActions)
name = resources().getString(R.string.custom_name),
description = resources().getString(R.string.custom_name),
studyTime = 0
)
val context = LocalContext.current
TimerEntry(
timerInfo = timerInfo,
leftButton = {
StealthButton(
text = R.string.start,
onClick = { timerSelectionActions.startSession(timerInfo) }
)
},
rightButton = {
NotInternationalisedButton(
text = resources().getString(R.string.pick_time),
onClick = { timerSelectionActions.pickDuration(context, timerInfo) }
)
}
)
} }
// All timers // All timers
@ -116,11 +94,39 @@ fun TimerSelectionScreen(
} }
} }
@Composable
fun CustomTimerEntry(
timerSelectionActions: TimerSelectionActions
) {
val timerInfo = CustomTimerInfo(
name = resources().getString(R.string.custom_name),
description = resources().getString(R.string.custom_description),
studyTime = timerSelectionActions.customTimeStudyTime
)
val context = LocalContext.current
TimerEntry(
timerInfo = timerInfo,
leftButton = {
StealthButton(
text = R.string.start,
onClick = { timerSelectionActions.startSession(timerInfo) }
)
},
rightButton = {
NotInternationalisedButton(
text = String.format("%02d:%02d", timerInfo.studyTime / 3600, (timerInfo.studyTime % 3600) / 60),
onClick = { timerSelectionActions.pickDuration(context) }
)
}
)
}
@Preview @Preview
@Composable @Composable
fun TimerSelectionPreview() { fun TimerSelectionPreview() {
TimerSelectionScreen( TimerSelectionScreen(
timerSelectionActions = TimerSelectionActions({ flowOf() }, {}, { _, _ -> {}}), timerSelectionActions = TimerSelectionActions({ flowOf() }, {}, { {} }, 0),
popUp = {} popUp = {}
) )
} }

View file

@ -1,5 +1,9 @@
package be.ugent.sel.studeez.screens.timer_selection package be.ugent.sel.studeez.screens.timer_selection
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import be.ugent.sel.studeez.data.SelectedTimerState import be.ugent.sel.studeez.data.SelectedTimerState
import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo import be.ugent.sel.studeez.data.local.models.timer_info.TimerInfo
import be.ugent.sel.studeez.domain.LogService import be.ugent.sel.studeez.domain.LogService
@ -17,6 +21,8 @@ class TimerSelectionViewModel @Inject constructor(
logService: LogService logService: LogService
) : StudeezViewModel(logService) { ) : StudeezViewModel(logService) {
var customTimerStudyTime: MutableState<Int> = mutableStateOf(0)
fun getAllTimers() : Flow<List<TimerInfo>> { fun getAllTimers() : Flow<List<TimerInfo>> {
return timerDAO.getAllTimers() return timerDAO.getAllTimers()
} }