diff --git a/app/src/main/java/com/bnyro/clock/ui/common/ExampleTimers.kt b/app/src/main/java/com/bnyro/clock/ui/common/ExampleTimers.kt new file mode 100644 index 00000000..e8739efc --- /dev/null +++ b/app/src/main/java/com/bnyro/clock/ui/common/ExampleTimers.kt @@ -0,0 +1,35 @@ +package com.bnyro.clock.ui.common + +data class ExampleTimer( + val seconds: Int, +) { + // Write a getter for formattedTime that returns a String in the format of "HH:MM:SS" + val formattedTime: String + get() { + val hours = seconds / 3600; + val minutes = (seconds % 3600) / 60; + val seconds = seconds % 60; + + return if (hours == 0) { + String.format("%02d:%02d", minutes, seconds); + } else { + String.format("%02d:%02d:%02d", hours, minutes, seconds); + } + } + + companion object { + val exampleTimers = listOf( + 60, + 60 * 2, + 60 * 5, + 60 * 10, + 60 * 13, + 60 * 15, + 60 * 20, + 60 * 30, + 60 * 60, + 60 * 90, + 60 * 120, + ).map { ExampleTimer(it) } + } +} diff --git a/app/src/main/java/com/bnyro/clock/ui/model/TimerModel.kt b/app/src/main/java/com/bnyro/clock/ui/model/TimerModel.kt index 1328e725..8cdcf22d 100644 --- a/app/src/main/java/com/bnyro/clock/ui/model/TimerModel.kt +++ b/app/src/main/java/com/bnyro/clock/ui/model/TimerModel.kt @@ -154,4 +154,18 @@ class TimerModel : ViewModel() { fun clear() { timePickerSecondsState = INITIAL_SECONDS_STATE } + + fun setSeconds(seconds: Int) { + val remainingSeconds = seconds % 60 + val minutes = (seconds - remainingSeconds) / 60 + val remainingMinutes = minutes % 60 + val hours = (minutes - remainingMinutes) / 60 + val remainingHours = hours % 24 + + timePickerSecondsState = INITIAL_SECONDS_STATE + + addSeconds(remainingSeconds) + addMinutes(remainingMinutes) + addHours(remainingHours) + } } diff --git a/app/src/main/java/com/bnyro/clock/ui/screens/TimerScreen.kt b/app/src/main/java/com/bnyro/clock/ui/screens/TimerScreen.kt index 3f5d1cd6..0bc7f999 100644 --- a/app/src/main/java/com/bnyro/clock/ui/screens/TimerScreen.kt +++ b/app/src/main/java/com/bnyro/clock/ui/screens/TimerScreen.kt @@ -1,8 +1,10 @@ package com.bnyro.clock.ui.screens +import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize @@ -10,6 +12,7 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add @@ -42,6 +45,10 @@ import com.bnyro.clock.R import com.bnyro.clock.extensions.addZero import com.bnyro.clock.obj.NumberKeypadOperation import com.bnyro.clock.obj.WatchState +import androidx.compose.foundation.lazy.items +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import com.bnyro.clock.ui.common.ExampleTimer import com.bnyro.clock.ui.components.ClickableIcon import com.bnyro.clock.ui.components.DialogButton import com.bnyro.clock.ui.components.FormattedTimerTime @@ -127,6 +134,7 @@ fun TimerScreen(timerModel: TimerModel) { ) } } + Spacer(modifier = Modifier.height(16.dp)) Row( modifier = Modifier.padding(bottom = 16.dp) ) { @@ -148,6 +156,26 @@ fun TimerScreen(timerModel: TimerModel) { Icon(imageVector = Icons.Default.PlayArrow, contentDescription = null) } } + LazyRow( + contentPadding = PaddingValues(horizontal = 16.dp), + horizontalArrangement = Arrangement.spacedBy(16.dp), + ) { + items(ExampleTimer.exampleTimers) { timer -> + Button( + onClick = { + timerModel.setSeconds(timer.seconds) + createNew = false + timerModel.startTimer(context) + }, + colors = ButtonDefaults.filledTonalButtonColors(), + ) { + Text( + timer.formattedTime, + ) + } + } + } + Spacer(modifier = Modifier.height(32.dp)) } } else { LazyColumn(