From 2071b31f72dabd281c9a9e3c597359335a320e99 Mon Sep 17 00:00:00 2001 From: Rune Dyselinck Date: Mon, 17 Apr 2023 22:13:56 +0200 Subject: [PATCH 1/4] Timer geeft nu correcte UI + timer kan manueel gestopt worden --- .../studeez/screens/session/SessionScreen.kt | 110 +++++++++++++++--- .../screens/session/SessionViewModel.kt | 5 + 2 files changed, 102 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionScreen.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionScreen.kt index d69470e..e1f0a9b 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionScreen.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionScreen.kt @@ -1,19 +1,23 @@ package be.ugent.sel.studeez.screens.session -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.Text +import androidx.compose.material.TextButton import androidx.compose.runtime.* +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign -import androidx.compose.ui.unit.TextUnit +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.hilt.navigation.compose.hiltViewModel -import be.ugent.sel.studeez.R -import be.ugent.sel.studeez.common.composable.PrimaryScreenTemplate -import be.ugent.sel.studeez.resources +import be.ugent.sel.studeez.domain.implementation.LogServiceImpl +import be.ugent.sel.studeez.navigation.StudeezDestinations import kotlinx.coroutines.delay @Composable @@ -22,12 +26,33 @@ fun SessionScreen( openAndPopUp: (String, String) -> Unit, viewModel: SessionViewModel = hiltViewModel() ) { - PrimaryScreenTemplate( - title = resources().getString(R.string.start_session), - open = open, - openAndPopUp = openAndPopUp - ) { + Column( + modifier = Modifier.padding(10.dp) + ) { Timer(viewModel) + + Box( + contentAlignment = Alignment.Center, + modifier = Modifier + .fillMaxWidth() + .padding(50.dp) + ) { + TextButton( + onClick = { open(StudeezDestinations.HOME_SCREEN) }, + modifier = Modifier + .padding(horizontal = 20.dp) + .border(1.dp, Color.Red, RoundedCornerShape(32.dp)) + .background(Color.Transparent) + ) { + Text( + text = "End session", + color = Color.Red, + fontWeight = FontWeight.Bold, + fontSize = 18.sp, + modifier = Modifier.padding(1.dp) + ) + } + } } } @@ -44,10 +69,12 @@ private fun Timer(viewModel: SessionViewModel = hiltViewModel()) { Column { Text( text = "${hms.hours} : ${hms.minutes} : ${hms.seconds}", - modifier = Modifier.fillMaxWidth(), + modifier = Modifier + .fillMaxWidth() + .padding(50.dp), textAlign = TextAlign.Center, fontWeight = FontWeight.Bold, - fontSize = 80.sp + fontSize = 40.sp, ) Text( text = viewModel.getTimer().getViewString(), @@ -56,5 +83,62 @@ private fun Timer(viewModel: SessionViewModel = hiltViewModel()) { fontWeight = FontWeight.Light, fontSize = 30.sp ) + + Box( + contentAlignment = Alignment.Center, + modifier = Modifier + .fillMaxWidth() + .padding(50.dp) + ) { + Box( + contentAlignment = Alignment.Center, + modifier = Modifier + .padding(16.dp) + .background(Color.Blue, RoundedCornerShape(32.dp)) + ) { + Text( + text = viewModel.getTask(), + color = Color.White, + fontSize = 18.sp, + fontWeight = FontWeight.Bold, + modifier = Modifier + .padding(vertical = 4.dp, horizontal = 20.dp) + ) + } + } + } +} + +@Preview +@Composable +fun Screen() { + val viewModel = SessionViewModel(LogServiceImpl()) + Column( + modifier = Modifier.padding(10.dp) + ) { + Timer(viewModel) + + Box( + contentAlignment = Alignment.Center, + modifier = Modifier + .fillMaxWidth() + .padding(50.dp) + ) { + TextButton( + onClick = {}, + modifier = Modifier + .padding(vertical = 1.dp, horizontal = 20.dp) + .border(1.dp, Color.Red, RoundedCornerShape(32.dp)) + .background(Color.Transparent) + ) { + Text( + text = "End session", + color = Color.Red, + fontWeight = FontWeight.Bold, + fontSize = 18.sp, + modifier = Modifier.padding(1.dp) + ) + } + } } } \ No newline at end of file diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionViewModel.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionViewModel.kt index 7326212..e58f031 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionViewModel.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionViewModel.kt @@ -13,8 +13,13 @@ class SessionViewModel @Inject constructor( ) : StudeezViewModel(logService) { private val timer: FunctionalTimer = FunctionalPomodoroTimer(15, 5, 3) + private val task : String = "No task selected" // placeholder for tasks implementation fun getTimer() : FunctionalTimer { return timer } + + fun getTask(): String { + return task + } } \ No newline at end of file From 18d11ffbbd700ebf36848e64446883787ee55c0f Mon Sep 17 00:00:00 2001 From: Rune Dyselinck Date: Tue, 18 Apr 2023 15:15:41 +0200 Subject: [PATCH 2/4] Timer speelt notificatie bij het start en einde van een pauze --- .idea/inspectionProfiles/Project_Default.xml | 5 +++ .../timer_functional/FunctionalTimer.kt | 3 ++ .../studeez/screens/session/SessionScreen.kt | 32 +++++++++++++++++-- 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml index 44ca2d9..53a1745 100644 --- a/.idea/inspectionProfiles/Project_Default.xml +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -37,5 +37,10 @@