From 6938b3e868ca5ebd48ff45d576054098dd0811a3 Mon Sep 17 00:00:00 2001 From: lbarraga Date: Mon, 15 May 2023 12:52:57 +0200 Subject: [PATCH 01/18] #118 AbstractSessionScreen -> this file --- .../composables/BreakTimerScreenComposable.kt | 2 + .../CustomTimerSessionScreenComposable.kt | 2 + .../EndlessTimerSessionScreenComposable.kt | 4 ++ .../composables/SessionScreenComposable.kt | 67 +++++++++++++++++++ .../composables/TimerComposable.kt | 2 + 5 files changed, 77 insertions(+) create mode 100644 app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt create mode 100644 app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/CustomTimerSessionScreenComposable.kt create mode 100644 app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/EndlessTimerSessionScreenComposable.kt create mode 100644 app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/SessionScreenComposable.kt create mode 100644 app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/TimerComposable.kt diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt new file mode 100644 index 0000000..da72fe0 --- /dev/null +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt @@ -0,0 +1,2 @@ +package be.ugent.sel.studeez.screens.session.sessionScreens.composables + diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/CustomTimerSessionScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/CustomTimerSessionScreenComposable.kt new file mode 100644 index 0000000..da72fe0 --- /dev/null +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/CustomTimerSessionScreenComposable.kt @@ -0,0 +1,2 @@ +package be.ugent.sel.studeez.screens.session.sessionScreens.composables + diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/EndlessTimerSessionScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/EndlessTimerSessionScreenComposable.kt new file mode 100644 index 0000000..683b284 --- /dev/null +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/EndlessTimerSessionScreenComposable.kt @@ -0,0 +1,4 @@ +package be.ugent.sel.studeez.screens.session.sessionScreens.composables + +class EndlessTimerSessionScreenComposable { +} \ No newline at end of file diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/SessionScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/SessionScreenComposable.kt new file mode 100644 index 0000000..d148e19 --- /dev/null +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/SessionScreenComposable.kt @@ -0,0 +1,67 @@ +package be.ugent.sel.studeez.screens.session.sessionScreens.composables + +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.Text +import androidx.compose.material.TextButton +import androidx.compose.runtime.Composable +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.unit.dp +import androidx.compose.ui.unit.sp +import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer +import be.ugent.sel.studeez.screens.session.SessionActions + +@Composable +fun SessionScreen( + open: (String) -> Unit, + sessionActions: SessionActions, + motivationString: @Composable () -> String +) { + Column( + modifier = Modifier.padding(10.dp) + ) { + Timer(sessionActions = sessionActions, motivationString = motivationString) + Box( + contentAlignment = Alignment.Center, modifier = Modifier + .fillMaxWidth() + .padding(50.dp) + ) { + EndSessionButton(sessionActions = sessionActions) + } + } +} + +@Composable +fun EndSessionButton(sessionActions: SessionActions) { + TextButton( + onClick = { + sessionActions.releaseMediaPlayer + sessionActions.endSession() + }, + modifier = Modifier + .padding(horizontal = 20.dp) + .border(1.dp, Color.Red, RoundedCornerShape(32.dp)) + .background(Color.Transparent) + ) { + EndsessionText() + } +} + +@Composable +fun EndsessionText() { + 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/sessionScreens/composables/TimerComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/TimerComposable.kt new file mode 100644 index 0000000..ba3f71d --- /dev/null +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/TimerComposable.kt @@ -0,0 +1,2 @@ +package be.ugent.sel.studeez.screens.session.sessionScreens + From 5073e5cb224c8a77d0d67a3309558403dd7aa9cf Mon Sep 17 00:00:00 2001 From: lbarraga Date: Mon, 15 May 2023 12:54:07 +0200 Subject: [PATCH 02/18] #118 subclass of AbstractSessionScreen -> this file --- .../composables/BreakTimerScreenComposable.kt | 36 +++++++++++++++++++ .../CustomTimerSessionScreenComposable.kt | 27 ++++++++++++++ .../EndlessTimerSessionScreenComposable.kt | 22 +++++++++++- 3 files changed, 84 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt index da72fe0..11cce8d 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt @@ -1,2 +1,38 @@ package be.ugent.sel.studeez.screens.session.sessionScreens.composables +import androidx.compose.runtime.Composable +import be.ugent.sel.studeez.R +import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalPomodoroTimer +import be.ugent.sel.studeez.resources +import be.ugent.sel.studeez.screens.session.SessionActions + +@Composable +fun BreakSessionScreenComposable( + open: (String) -> Unit, + sessionActions: SessionActions, + pomodoroTimer: FunctionalPomodoroTimer +) { + SessionScreen( + open = open, + sessionActions = sessionActions + ) { + motivationString(pomodoroTimer = pomodoroTimer) + } +} + +@Composable +private fun motivationString(pomodoroTimer: FunctionalPomodoroTimer): String { + if (pomodoroTimer.isInBreak) { + return resources().getString(R.string.state_take_a_break) + } + + if (pomodoroTimer.hasEnded()) { + return resources().getString(R.string.state_done) + } + + return resources().getQuantityString( + R.plurals.state_focus_remaining, + pomodoroTimer.breaksRemaining, + pomodoroTimer.breaksRemaining + ) +} \ No newline at end of file diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/CustomTimerSessionScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/CustomTimerSessionScreenComposable.kt index da72fe0..bafcb19 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/CustomTimerSessionScreenComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/CustomTimerSessionScreenComposable.kt @@ -1,2 +1,29 @@ package be.ugent.sel.studeez.screens.session.sessionScreens.composables +import androidx.compose.runtime.Composable +import be.ugent.sel.studeez.R +import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalCustomTimer +import be.ugent.sel.studeez.resources +import be.ugent.sel.studeez.screens.session.SessionActions + +@Composable +fun CustomTimerSessionScreenComposable( + open: (String) -> Unit, + sessionActions: SessionActions, + customTimer: FunctionalCustomTimer +) { + SessionScreen( + open = open, + sessionActions = sessionActions + ) { + motivationString(customTimer = customTimer) + } +} + +@Composable +private fun motivationString(customTimer: FunctionalCustomTimer): String { + if (customTimer.hasEnded()) { + return resources().getString(R.string.state_done) + } + return resources().getString(R.string.state_focus) +} \ No newline at end of file diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/EndlessTimerSessionScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/EndlessTimerSessionScreenComposable.kt index 683b284..b223f52 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/EndlessTimerSessionScreenComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/EndlessTimerSessionScreenComposable.kt @@ -1,4 +1,24 @@ package be.ugent.sel.studeez.screens.session.sessionScreens.composables -class EndlessTimerSessionScreenComposable { +import androidx.compose.runtime.Composable +import be.ugent.sel.studeez.R +import be.ugent.sel.studeez.resources +import be.ugent.sel.studeez.screens.session.SessionActions + +@Composable +fun EndlessTimerSessionScreenComposable( + open: (String) -> Unit, + sessionActions: SessionActions, +) { + SessionScreen( + open = open, + sessionActions = sessionActions + ) { + motivationString() + } +} + +@Composable +private fun motivationString(): String { + return resources().getString(R.string.state_focus) } \ No newline at end of file From fdd0429e320b69d9e5ff9648cb4be898ce4e0ef4 Mon Sep 17 00:00:00 2001 From: lbarraga Date: Mon, 15 May 2023 12:54:37 +0200 Subject: [PATCH 03/18] TimerComposable als apparte file --- .../composables/TimerComposable.kt | 92 ++++++++++++++++++- 1 file changed, 91 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/TimerComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/TimerComposable.kt index ba3f71d..6123a8a 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/TimerComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/TimerComposable.kt @@ -1,2 +1,92 @@ -package be.ugent.sel.studeez.screens.session.sessionScreens +package be.ugent.sel.studeez.screens.session.sessionScreens.composables +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.Text +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.dp +import androidx.compose.ui.unit.sp +import be.ugent.sel.studeez.data.local.models.timer_functional.HoursMinutesSeconds +import be.ugent.sel.studeez.screens.session.SessionActions +import kotlinx.coroutines.delay +import kotlin.time.Duration.Companion.seconds + +@Composable +fun Timer( + sessionActions: SessionActions, + motivationString: @Composable () -> String +) { + var tikker by remember { mutableStateOf(false) } + LaunchedEffect(tikker) { + delay(1.seconds) + sessionActions.getTimer().tick() + // callMediaPlayer() TODO + tikker = !tikker + } + + val hms = sessionActions.getTimer().getHoursMinutesSeconds() + Column { + + TimerClock(hms) + MotivationText(text = motivationString()) + + 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)) + ) { + TaskText(taskName = sessionActions.getTask()) + } + } + } +} + +@Composable +fun TimerClock(hms: HoursMinutesSeconds) { + Text( + text = hms.toString(), + modifier = Modifier + .fillMaxWidth() + .padding(50.dp), + textAlign = TextAlign.Center, + fontWeight = FontWeight.Bold, + fontSize = 40.sp, + ) +} + +@Composable +fun MotivationText(text: String) { + Text( + text = text, + modifier = Modifier.fillMaxWidth(), + textAlign = TextAlign.Center, + fontWeight = FontWeight.Light, + fontSize = 30.sp + ) +} + +@Composable +fun TaskText(taskName: String) { + Text( + text = taskName, + color = Color.White, + fontSize = 18.sp, + fontWeight = FontWeight.Bold, + modifier = Modifier.padding(vertical = 4.dp, horizontal = 20.dp) + ) +} \ No newline at end of file From 492775565c014b131f8821ec5220198f35b0b80e Mon Sep 17 00:00:00 2001 From: lbarraga Date: Mon, 15 May 2023 13:23:11 +0200 Subject: [PATCH 04/18] #118 integrated dots in composition --- .../composables/BreakTimerScreenComposable.kt | 39 ++++++++++++++++++- .../composables/SessionScreenComposable.kt | 10 ++++- .../composables/TimerComposable.kt | 4 +- 3 files changed, 48 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt index 11cce8d..b548591 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt @@ -1,6 +1,14 @@ package be.ugent.sel.studeez.screens.session.sessionScreens.composables +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.CircleShape import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp import be.ugent.sel.studeez.R import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalPomodoroTimer import be.ugent.sel.studeez.resources @@ -14,12 +22,39 @@ fun BreakSessionScreenComposable( ) { SessionScreen( open = open, - sessionActions = sessionActions + sessionActions = sessionActions, + midSection = { Dots(pomodoroTimer) }, + motivationString = { motivationString(pomodoroTimer = pomodoroTimer) } + ) +} + +@Composable +private fun Dots(pomodoroTimer: FunctionalPomodoroTimer) { + Row( + modifier = Modifier.fillMaxWidth(), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.Center, ) { - motivationString(pomodoroTimer = pomodoroTimer) + repeat(pomodoroTimer.repeats - pomodoroTimer.breaksRemaining) { + Dot(color = Color.DarkGray) + } + if (!pomodoroTimer.isInBreak) Dot(Color.Green) else Dot(Color.DarkGray) + repeat(pomodoroTimer.breaksRemaining - 1) { + Dot(color = Color.Gray) + } } } +@Composable +private fun Dot(color: Color) { + Box(modifier = Modifier + .padding(5.dp) + .size(10.dp) + .clip(CircleShape) + .background(color)) +} + + @Composable private fun motivationString(pomodoroTimer: FunctionalPomodoroTimer): String { if (pomodoroTimer.isInBreak) { diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/SessionScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/SessionScreenComposable.kt index d148e19..5ed29f8 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/SessionScreenComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/SessionScreenComposable.kt @@ -23,12 +23,18 @@ import be.ugent.sel.studeez.screens.session.SessionActions fun SessionScreen( open: (String) -> Unit, sessionActions: SessionActions, - motivationString: @Composable () -> String + midSection: @Composable () -> Unit = {}, + motivationString: @Composable () -> String, + ) { Column( modifier = Modifier.padding(10.dp) ) { - Timer(sessionActions = sessionActions, motivationString = motivationString) + Timer( + sessionActions = sessionActions, + motivationString = motivationString, + midSection = midSection + ) Box( contentAlignment = Alignment.Center, modifier = Modifier .fillMaxWidth() diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/TimerComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/TimerComposable.kt index 6123a8a..3b65599 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/TimerComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/TimerComposable.kt @@ -23,7 +23,8 @@ import kotlin.time.Duration.Companion.seconds @Composable fun Timer( sessionActions: SessionActions, - motivationString: @Composable () -> String + motivationString: @Composable () -> String, + midSection: @Composable () -> Unit ) { var tikker by remember { mutableStateOf(false) } LaunchedEffect(tikker) { @@ -39,6 +40,7 @@ fun Timer( TimerClock(hms) MotivationText(text = motivationString()) + Box( contentAlignment = Alignment.Center, modifier = Modifier .fillMaxWidth() From b614f7d530204521f910892466893f13fe87769c Mon Sep 17 00:00:00 2001 From: lbarraga Date: Mon, 15 May 2023 16:30:13 +0200 Subject: [PATCH 05/18] Dots now returns an int --- .../composables/BreakTimerScreenComposable.kt | 21 +++++++++++-------- .../composables/GetSessionScreenComposable.kt | 4 ++++ .../composables/SessionScreenComposable.kt | 4 ++-- .../composables/TimerComposable.kt | 4 ++-- 4 files changed, 20 insertions(+), 13 deletions(-) create mode 100644 app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/GetSessionScreenComposable.kt diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt index b548591..89bcc24 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt @@ -3,6 +3,7 @@ package be.ugent.sel.studeez.screens.session.sessionScreens.composables import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -18,18 +19,18 @@ import be.ugent.sel.studeez.screens.session.SessionActions fun BreakSessionScreenComposable( open: (String) -> Unit, sessionActions: SessionActions, - pomodoroTimer: FunctionalPomodoroTimer + pomodoroTimer: FunctionalPomodoroTimer, ) { SessionScreen( open = open, sessionActions = sessionActions, - midSection = { Dots(pomodoroTimer) }, - motivationString = { motivationString(pomodoroTimer = pomodoroTimer) } + midSection = { Dots(pomodoroTimer = pomodoroTimer) }, + motivationString = { motivationString (pomodoroTimer = pomodoroTimer) } ) } @Composable -private fun Dots(pomodoroTimer: FunctionalPomodoroTimer) { +private fun Dots(pomodoroTimer: FunctionalPomodoroTimer): Int { Row( modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically, @@ -43,6 +44,7 @@ private fun Dots(pomodoroTimer: FunctionalPomodoroTimer) { Dot(color = Color.Gray) } } + return pomodoroTimer.breaksRemaining } @Composable @@ -65,9 +67,10 @@ private fun motivationString(pomodoroTimer: FunctionalPomodoroTimer): String { return resources().getString(R.string.state_done) } - return resources().getQuantityString( - R.plurals.state_focus_remaining, - pomodoroTimer.breaksRemaining, - pomodoroTimer.breaksRemaining - ) + return resources().getString(R.string.state_focus) +} + +@Composable +private fun test(pomodoroTimer: FunctionalPomodoroTimer): String { + return pomodoroTimer.breaksRemaining.toString() } \ No newline at end of file diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/GetSessionScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/GetSessionScreenComposable.kt new file mode 100644 index 0000000..3f8762b --- /dev/null +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/GetSessionScreenComposable.kt @@ -0,0 +1,4 @@ +package be.ugent.sel.studeez.screens.session.sessionScreens.composables + +class GetSessionScreenComposable { +} \ No newline at end of file diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/SessionScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/SessionScreenComposable.kt index 5ed29f8..b31ee45 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/SessionScreenComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/SessionScreenComposable.kt @@ -23,7 +23,7 @@ import be.ugent.sel.studeez.screens.session.SessionActions fun SessionScreen( open: (String) -> Unit, sessionActions: SessionActions, - midSection: @Composable () -> Unit = {}, + midSection: @Composable () -> Int = {0}, motivationString: @Composable () -> String, ) { @@ -33,7 +33,7 @@ fun SessionScreen( Timer( sessionActions = sessionActions, motivationString = motivationString, - midSection = midSection + MidSection = midSection ) Box( contentAlignment = Alignment.Center, modifier = Modifier diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/TimerComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/TimerComposable.kt index 3b65599..87a6839 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/TimerComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/TimerComposable.kt @@ -24,7 +24,7 @@ import kotlin.time.Duration.Companion.seconds fun Timer( sessionActions: SessionActions, motivationString: @Composable () -> String, - midSection: @Composable () -> Unit + MidSection: @Composable () -> Int ) { var tikker by remember { mutableStateOf(false) } LaunchedEffect(tikker) { @@ -39,7 +39,7 @@ fun Timer( TimerClock(hms) MotivationText(text = motivationString()) - + MidSection() Box( contentAlignment = Alignment.Center, modifier = Modifier From 052ebb8c32996f48ec376d17cab9e35891b3802d Mon Sep 17 00:00:00 2001 From: lbarraga Date: Mon, 15 May 2023 16:31:36 +0200 Subject: [PATCH 06/18] #118 new visitor for session screen --- .../composables/GetSessionScreenComposable.kt | 47 ++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/GetSessionScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/GetSessionScreenComposable.kt index 3f8762b..bae4d92 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/GetSessionScreenComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/GetSessionScreenComposable.kt @@ -1,4 +1,49 @@ package be.ugent.sel.studeez.screens.session.sessionScreens.composables -class GetSessionScreenComposable { +import android.media.MediaPlayer +import androidx.compose.runtime.Composable +import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalCustomTimer +import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalEndlessTimer +import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalPomodoroTimer +import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimerVisitor +import be.ugent.sel.studeez.screens.session.SessionActions +import be.ugent.sel.studeez.screens.session.sessionScreens.AbstractSessionScreen +import be.ugent.sel.studeez.screens.session.sessionScreens.BreakSessionScreen +import be.ugent.sel.studeez.screens.session.sessionScreens.CustomSessionScreen +import be.ugent.sel.studeez.screens.session.sessionScreens.EndlessSessionScreen + +class GetSessionScreenComposable( + private val mediaplayer: MediaPlayer?, + private val open: (String) -> Unit, + private val sessionActions: SessionActions + ) : + FunctionalTimerVisitor<@Composable () -> Unit> { + + override fun visitFunctionalCustomTimer(functionalCustomTimer: FunctionalCustomTimer): @Composable () -> Unit { + return { CustomTimerSessionScreenComposable( + open = open, + sessionActions = sessionActions, + customTimer = functionalCustomTimer + ) + } + } + + override fun visitFunctionalEndlessTimer(functionalEndlessTimer: FunctionalEndlessTimer): @Composable () -> Unit { + return { + EndlessTimerSessionScreenComposable( + open = open, + sessionActions = sessionActions, + ) + } + } + + override fun visitFunctionalBreakTimer(functionalPomodoroTimer: FunctionalPomodoroTimer): @Composable () -> Unit { + return { + BreakSessionScreenComposable( + open = open, + sessionActions = sessionActions, + pomodoroTimer = functionalPomodoroTimer + ) + } + } } \ No newline at end of file From 4466f3646f9d730be0b1f8009be25174552a2cfc Mon Sep 17 00:00:00 2001 From: lbarraga Date: Mon, 15 May 2023 16:34:19 +0200 Subject: [PATCH 07/18] #118 gebruik nieuwe visitor om sessionScreen te instantieren --- .../ugent/sel/studeez/screens/session/SessionRoute.kt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionRoute.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionRoute.kt index 084ff43..959bc74 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionRoute.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionRoute.kt @@ -5,9 +5,12 @@ import android.media.RingtoneManager import android.net.Uri import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalContext +import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalPomodoroTimer import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer import be.ugent.sel.studeez.screens.session.sessionScreens.AbstractSessionScreen import be.ugent.sel.studeez.screens.session.sessionScreens.GetSessionScreen +import be.ugent.sel.studeez.screens.session.sessionScreens.composables.BreakSessionScreenComposable +import be.ugent.sel.studeez.screens.session.sessionScreens.composables.GetSessionScreenComposable data class SessionActions( val getTimer: () -> FunctionalTimer, @@ -47,10 +50,8 @@ fun SessionRoute( mediaplayer = mediaplayer ) - val sessionScreen: AbstractSessionScreen = viewModel.getTimer().accept(GetSessionScreen(mediaplayer)) + val sessionActions = getSessionActions(viewModel, openAndPopUp, mediaplayer) + val sessionScreen = viewModel.getTimer().accept(GetSessionScreenComposable(mediaplayer, open, sessionActions)) - sessionScreen( - open = open, - sessionActions = getSessionActions(viewModel, openAndPopUp, mediaplayer) - ) + sessionScreen() } From 4519bf2e3037766c979a8f32b485dbe7f8bfee5a Mon Sep 17 00:00:00 2001 From: lbarraga Date: Mon, 15 May 2023 18:57:24 +0200 Subject: [PATCH 08/18] added soundplayer --- .../session/sessionScreens/GetSessionScreen.kt | 18 ------------------ .../session/sessionScreens/SoundPlayer.kt | 4 ++++ .../composables/BreakTimerScreenComposable.kt | 9 +++------ .../CustomTimerSessionScreenComposable.kt | 5 ++++- 4 files changed, 11 insertions(+), 25 deletions(-) delete mode 100644 app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/GetSessionScreen.kt create mode 100644 app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/SoundPlayer.kt diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/GetSessionScreen.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/GetSessionScreen.kt deleted file mode 100644 index 98b2d5e..0000000 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/GetSessionScreen.kt +++ /dev/null @@ -1,18 +0,0 @@ -package be.ugent.sel.studeez.screens.session.sessionScreens - -import android.media.MediaPlayer -import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalCustomTimer -import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalEndlessTimer -import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalPomodoroTimer -import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimerVisitor - -class GetSessionScreen(private val mediaplayer: MediaPlayer?) : FunctionalTimerVisitor { - override fun visitFunctionalCustomTimer(functionalCustomTimer: FunctionalCustomTimer): AbstractSessionScreen = - CustomSessionScreen(functionalCustomTimer, mediaplayer) - - override fun visitFunctionalEndlessTimer(functionalEndlessTimer: FunctionalEndlessTimer): AbstractSessionScreen = - EndlessSessionScreen() - - override fun visitFunctionalBreakTimer(functionalPomodoroTimer: FunctionalPomodoroTimer): AbstractSessionScreen = - BreakSessionScreen(functionalPomodoroTimer, mediaplayer) -} \ No newline at end of file diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/SoundPlayer.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/SoundPlayer.kt new file mode 100644 index 0000000..f9c0942 --- /dev/null +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/SoundPlayer.kt @@ -0,0 +1,4 @@ +package be.ugent.sel.studeez.screens.session.sessionScreens + +class SoundPlayer { +} \ No newline at end of file diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt index 89bcc24..57d73e2 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt @@ -3,7 +3,6 @@ package be.ugent.sel.studeez.screens.session.sessionScreens.composables import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -14,17 +13,20 @@ import be.ugent.sel.studeez.R import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalPomodoroTimer import be.ugent.sel.studeez.resources import be.ugent.sel.studeez.screens.session.SessionActions +import be.ugent.sel.studeez.screens.session.sessionScreens.SoundPlayer @Composable fun BreakSessionScreenComposable( open: (String) -> Unit, sessionActions: SessionActions, pomodoroTimer: FunctionalPomodoroTimer, + soundPlayer: SoundPlayer, ) { SessionScreen( open = open, sessionActions = sessionActions, midSection = { Dots(pomodoroTimer = pomodoroTimer) }, + callMediaPlayer = { soundPlayer.playOn(pomodoroTimer.hasCurrentCountdownEnded()) }, motivationString = { motivationString (pomodoroTimer = pomodoroTimer) } ) } @@ -68,9 +70,4 @@ private fun motivationString(pomodoroTimer: FunctionalPomodoroTimer): String { } return resources().getString(R.string.state_focus) -} - -@Composable -private fun test(pomodoroTimer: FunctionalPomodoroTimer): String { - return pomodoroTimer.breaksRemaining.toString() } \ No newline at end of file diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/CustomTimerSessionScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/CustomTimerSessionScreenComposable.kt index bafcb19..5cdc62c 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/CustomTimerSessionScreenComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/CustomTimerSessionScreenComposable.kt @@ -5,15 +5,18 @@ import be.ugent.sel.studeez.R import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalCustomTimer import be.ugent.sel.studeez.resources import be.ugent.sel.studeez.screens.session.SessionActions +import be.ugent.sel.studeez.screens.session.sessionScreens.SoundPlayer @Composable fun CustomTimerSessionScreenComposable( open: (String) -> Unit, sessionActions: SessionActions, - customTimer: FunctionalCustomTimer + customTimer: FunctionalCustomTimer, + soundPlayer: SoundPlayer ) { SessionScreen( open = open, + callMediaPlayer = { soundPlayer.playOn(customTimer.hasEnded()) }, sessionActions = sessionActions ) { motivationString(customTimer = customTimer) From 4a04a703db101141b396f5d52f130bd10951d37f Mon Sep 17 00:00:00 2001 From: lbarraga Date: Mon, 15 May 2023 18:58:46 +0200 Subject: [PATCH 09/18] soundplayer wrapper to make mediaplayer easier to work with --- .../studeez/screens/session/SoundPlayer.kt | 29 +++++++++++++++++++ .../session/sessionScreens/SoundPlayer.kt | 4 --- 2 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/be/ugent/sel/studeez/screens/session/SoundPlayer.kt delete mode 100644 app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/SoundPlayer.kt diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/SoundPlayer.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/SoundPlayer.kt new file mode 100644 index 0000000..14fae19 --- /dev/null +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/SoundPlayer.kt @@ -0,0 +1,29 @@ +package be.ugent.sel.studeez.screens.session + +import android.content.Context +import android.media.MediaPlayer +import android.media.RingtoneManager + +class SoundPlayer(private val context: Context) { + + var oldValue: Boolean = false + var mediaPlayer: MediaPlayer = initPlayer() + + fun playOn(newValue: Boolean) { + if (oldValue != newValue) { + mediaPlayer.start() + mediaPlayer.setOnCompletionListener { + mediaPlayer = initPlayer() + } + oldValue = newValue + } + } + + + private fun initPlayer(): MediaPlayer { + return MediaPlayer.create( + context, + RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION) + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/SoundPlayer.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/SoundPlayer.kt deleted file mode 100644 index f9c0942..0000000 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/SoundPlayer.kt +++ /dev/null @@ -1,4 +0,0 @@ -package be.ugent.sel.studeez.screens.session.sessionScreens - -class SoundPlayer { -} \ No newline at end of file From 1db5a4160ea5c84b996b50df79286f291142bd1a Mon Sep 17 00:00:00 2001 From: lbarraga Date: Mon, 15 May 2023 19:00:36 +0200 Subject: [PATCH 10/18] refactor soundplayer location --- .../sessionScreens/composables/BreakTimerScreenComposable.kt | 2 +- .../composables/CustomTimerSessionScreenComposable.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt index 57d73e2..cac3509 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt @@ -13,7 +13,7 @@ import be.ugent.sel.studeez.R import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalPomodoroTimer import be.ugent.sel.studeez.resources import be.ugent.sel.studeez.screens.session.SessionActions -import be.ugent.sel.studeez.screens.session.sessionScreens.SoundPlayer +import be.ugent.sel.studeez.screens.session.SoundPlayer @Composable fun BreakSessionScreenComposable( diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/CustomTimerSessionScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/CustomTimerSessionScreenComposable.kt index 5cdc62c..ec3c2d8 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/CustomTimerSessionScreenComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/CustomTimerSessionScreenComposable.kt @@ -5,7 +5,7 @@ import be.ugent.sel.studeez.R import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalCustomTimer import be.ugent.sel.studeez.resources import be.ugent.sel.studeez.screens.session.SessionActions -import be.ugent.sel.studeez.screens.session.sessionScreens.SoundPlayer +import be.ugent.sel.studeez.screens.session.SoundPlayer @Composable fun CustomTimerSessionScreenComposable( From 47491089928c438ac9861d49da86da91802e0704 Mon Sep 17 00:00:00 2001 From: lbarraga Date: Mon, 15 May 2023 19:01:06 +0200 Subject: [PATCH 11/18] soundplayer to screens instead of mediaplayer --- .../composables/GetSessionScreenComposable.kt | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/GetSessionScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/GetSessionScreenComposable.kt index bae4d92..3780f42 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/GetSessionScreenComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/GetSessionScreenComposable.kt @@ -1,19 +1,15 @@ package be.ugent.sel.studeez.screens.session.sessionScreens.composables -import android.media.MediaPlayer import androidx.compose.runtime.Composable import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalCustomTimer import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalEndlessTimer import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalPomodoroTimer import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimerVisitor import be.ugent.sel.studeez.screens.session.SessionActions -import be.ugent.sel.studeez.screens.session.sessionScreens.AbstractSessionScreen -import be.ugent.sel.studeez.screens.session.sessionScreens.BreakSessionScreen -import be.ugent.sel.studeez.screens.session.sessionScreens.CustomSessionScreen -import be.ugent.sel.studeez.screens.session.sessionScreens.EndlessSessionScreen +import be.ugent.sel.studeez.screens.session.SoundPlayer class GetSessionScreenComposable( - private val mediaplayer: MediaPlayer?, + private val soundPlayer: SoundPlayer, private val open: (String) -> Unit, private val sessionActions: SessionActions ) : @@ -23,7 +19,8 @@ class GetSessionScreenComposable( return { CustomTimerSessionScreenComposable( open = open, sessionActions = sessionActions, - customTimer = functionalCustomTimer + soundPlayer = soundPlayer, + customTimer = functionalCustomTimer, ) } } @@ -42,6 +39,7 @@ class GetSessionScreenComposable( BreakSessionScreenComposable( open = open, sessionActions = sessionActions, + soundPlayer = soundPlayer, pomodoroTimer = functionalPomodoroTimer ) } From 8294d63e92d9c7445f7361077cde75f24581cb42 Mon Sep 17 00:00:00 2001 From: lbarraga Date: Mon, 15 May 2023 19:02:23 +0200 Subject: [PATCH 12/18] added callmedia to session screen --- .../sessionScreens/composables/SessionScreenComposable.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/SessionScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/SessionScreenComposable.kt index b31ee45..0d02add 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/SessionScreenComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/SessionScreenComposable.kt @@ -16,13 +16,13 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer import be.ugent.sel.studeez.screens.session.SessionActions @Composable fun SessionScreen( open: (String) -> Unit, sessionActions: SessionActions, + callMediaPlayer: () -> Unit = {}, midSection: @Composable () -> Int = {0}, motivationString: @Composable () -> String, @@ -32,6 +32,7 @@ fun SessionScreen( ) { Timer( sessionActions = sessionActions, + callMediaPlayer = callMediaPlayer, motivationString = motivationString, MidSection = midSection ) @@ -49,7 +50,6 @@ fun SessionScreen( fun EndSessionButton(sessionActions: SessionActions) { TextButton( onClick = { - sessionActions.releaseMediaPlayer sessionActions.endSession() }, modifier = Modifier From 53bdf7d21588a5f5199a3861d807a447343ab2f5 Mon Sep 17 00:00:00 2001 From: lbarraga Date: Mon, 15 May 2023 19:02:55 +0200 Subject: [PATCH 13/18] added callMediaPlayer call --- .../session/sessionScreens/composables/TimerComposable.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/TimerComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/TimerComposable.kt index 87a6839..cade06f 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/TimerComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/TimerComposable.kt @@ -23,6 +23,7 @@ import kotlin.time.Duration.Companion.seconds @Composable fun Timer( sessionActions: SessionActions, + callMediaPlayer: () -> Unit, motivationString: @Composable () -> String, MidSection: @Composable () -> Int ) { @@ -30,7 +31,7 @@ fun Timer( LaunchedEffect(tikker) { delay(1.seconds) sessionActions.getTimer().tick() - // callMediaPlayer() TODO + callMediaPlayer() tikker = !tikker } From 346b24aabe952a0d46f4b5f537901a71771631d6 Mon Sep 17 00:00:00 2001 From: lbarraga Date: Mon, 15 May 2023 19:05:43 +0200 Subject: [PATCH 14/18] give soundplayer to visitor --- .../studeez/screens/session/SessionRoute.kt | 14 +- .../sessionScreens/AbstractSessionScreen.kt | 150 ------------------ .../sessionScreens/BreakSessionScreen.kt | 93 ----------- .../sessionScreens/CustomSessionScreen.kt | 35 ---- .../sessionScreens/EndlessSessionScreen.kt | 16 -- 5 files changed, 3 insertions(+), 305 deletions(-) delete mode 100644 app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/AbstractSessionScreen.kt delete mode 100644 app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/BreakSessionScreen.kt delete mode 100644 app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/CustomSessionScreen.kt delete mode 100644 app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/EndlessSessionScreen.kt diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionRoute.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionRoute.kt index 959bc74..3572b5e 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionRoute.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionRoute.kt @@ -5,32 +5,23 @@ import android.media.RingtoneManager import android.net.Uri import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalContext -import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalPomodoroTimer import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer -import be.ugent.sel.studeez.screens.session.sessionScreens.AbstractSessionScreen -import be.ugent.sel.studeez.screens.session.sessionScreens.GetSessionScreen -import be.ugent.sel.studeez.screens.session.sessionScreens.composables.BreakSessionScreenComposable import be.ugent.sel.studeez.screens.session.sessionScreens.composables.GetSessionScreenComposable data class SessionActions( val getTimer: () -> FunctionalTimer, val getTask: () -> String, - val startMediaPlayer: () -> Unit, - val releaseMediaPlayer: () -> Unit, val endSession: () -> Unit ) private fun getSessionActions( viewModel: SessionViewModel, openAndPopUp: (String, String) -> Unit, - mediaplayer: MediaPlayer, ): SessionActions { return SessionActions( getTimer = viewModel::getTimer, getTask = viewModel::getTask, endSession = { viewModel.endSession(openAndPopUp) }, - startMediaPlayer = mediaplayer::start, - releaseMediaPlayer = mediaplayer::release, ) } @@ -50,8 +41,9 @@ fun SessionRoute( mediaplayer = mediaplayer ) - val sessionActions = getSessionActions(viewModel, openAndPopUp, mediaplayer) - val sessionScreen = viewModel.getTimer().accept(GetSessionScreenComposable(mediaplayer, open, sessionActions)) + val soundPlayer = SoundPlayer(LocalContext.current) + val sessionActions = getSessionActions(viewModel, openAndPopUp) + val sessionScreen = viewModel.getTimer().accept(GetSessionScreenComposable(soundPlayer, open, sessionActions)) sessionScreen() } diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/AbstractSessionScreen.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/AbstractSessionScreen.kt deleted file mode 100644 index 08a8a72..0000000 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/AbstractSessionScreen.kt +++ /dev/null @@ -1,150 +0,0 @@ -package be.ugent.sel.studeez.screens.session.sessionScreens - -import androidx.compose.foundation.background -import androidx.compose.foundation.border -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.Text -import androidx.compose.material.TextButton -import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue -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.tooling.preview.Preview -import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp -import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalEndlessTimer -import be.ugent.sel.studeez.screens.session.SessionActions -import kotlinx.coroutines.delay -import kotlin.time.Duration.Companion.seconds - -abstract class AbstractSessionScreen { - - @Composable - operator fun invoke( - open: (String) -> Unit, - sessionActions: SessionActions, - ) { - Column( - modifier = Modifier.padding(10.dp) - ) { - Timer( - sessionActions = sessionActions, - ) - Box( - contentAlignment = Alignment.Center, modifier = Modifier - .fillMaxWidth() - .padding(50.dp) - ) { - TextButton( - onClick = { - sessionActions.releaseMediaPlayer - sessionActions.endSession() - }, - 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) - ) - } - } - } - } - - @Composable - fun Timer( - sessionActions: SessionActions, - ) { - var tikker by remember { mutableStateOf(false) } - LaunchedEffect(tikker) { - delay(1.seconds) - sessionActions.getTimer().tick() - callMediaPlayer() - tikker = !tikker - } - - val hms = sessionActions.getTimer().getHoursMinutesSeconds() - Column { - Text( - text = hms.toString(), - modifier = Modifier - .fillMaxWidth() - .padding(50.dp), - textAlign = TextAlign.Center, - fontWeight = FontWeight.Bold, - fontSize = 40.sp, - ) - - Text( - text = motivationString(), - modifier = Modifier.fillMaxWidth(), - textAlign = TextAlign.Center, - fontWeight = FontWeight.Light, - fontSize = 30.sp - ) - - MidSection() - - 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 = sessionActions.getTask(), - color = Color.White, - fontSize = 18.sp, - fontWeight = FontWeight.Bold, - modifier = Modifier.padding(vertical = 4.dp, horizontal = 20.dp) - ) - } - } - } - } - - @Composable - abstract fun motivationString(): String - - @Composable - open fun MidSection() { - // Default has no midsection, unless overwritten. - } - - abstract fun callMediaPlayer() - -} - -@Preview -@Composable -fun TimerPreview() { - val sessionScreen = object : AbstractSessionScreen() { - @Composable - override fun motivationString(): String = "Test" - override fun callMediaPlayer() {} - - } - sessionScreen.Timer(sessionActions = SessionActions({ FunctionalEndlessTimer() }, { "Preview" }, {}, {}, {})) -} \ No newline at end of file diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/BreakSessionScreen.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/BreakSessionScreen.kt deleted file mode 100644 index 9c59b46..0000000 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/BreakSessionScreen.kt +++ /dev/null @@ -1,93 +0,0 @@ -package be.ugent.sel.studeez.screens.session.sessionScreens - -import android.media.MediaPlayer -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.* -import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.text.style.TextAlign -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp -import be.ugent.sel.studeez.R -import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalPomodoroTimer -import be.ugent.sel.studeez.resources -import be.ugent.sel.studeez.R.string as AppText - -class BreakSessionScreen( - private val funPomoDoroTimer: FunctionalPomodoroTimer, - private var mediaplayer: MediaPlayer? -): AbstractSessionScreen() { - - @Composable - override fun MidSection() { - Dots() - } - - @Composable - fun Dots() { - Row( - modifier = Modifier.fillMaxWidth(), - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.Center, - ) { - repeat(funPomoDoroTimer.repeats - funPomoDoroTimer.breaksRemaining) { - Dot(color = Color.DarkGray) - } - if (!funPomoDoroTimer.isInBreak) Dot(Color.Green) else Dot(Color.DarkGray) - repeat(funPomoDoroTimer.breaksRemaining - 1) { - Dot(color = Color.Gray) - } - } - } - - @Composable - private fun Dot(color: Color) { - Box(modifier = Modifier - .padding(5.dp) - .size(10.dp) - .clip(CircleShape) - .background(color)) - } - - @Composable - override fun motivationString(): String { - if (funPomoDoroTimer.isInBreak) { - return resources().getString(AppText.state_take_a_break) - } - - if (funPomoDoroTimer.hasEnded()) { - return resources().getString(AppText.state_done) - } - - return resources().getString(AppText.state_focus) - } - - override fun callMediaPlayer() { - if (funPomoDoroTimer.hasEnded()) { - mediaplayer?.let { it: MediaPlayer -> - it.setOnCompletionListener { - it.release() - mediaplayer = null - } - it.start() - } - } else if (funPomoDoroTimer.hasCurrentCountdownEnded()) { - mediaplayer?.start() - } - } -} - -@Preview -@Composable -fun MidsectionPreview() { - val funPomoDoroTimer = FunctionalPomodoroTimer(15, 60, 5) - val breakSessionScreen = BreakSessionScreen(funPomoDoroTimer, MediaPlayer()) - breakSessionScreen.MidSection() -} \ No newline at end of file diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/CustomSessionScreen.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/CustomSessionScreen.kt deleted file mode 100644 index 7fc60bc..0000000 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/CustomSessionScreen.kt +++ /dev/null @@ -1,35 +0,0 @@ -package be.ugent.sel.studeez.screens.session.sessionScreens - -import android.media.MediaPlayer -import androidx.compose.runtime.Composable -import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalCustomTimer -import be.ugent.sel.studeez.resources -import be.ugent.sel.studeez.R.string as AppText - - -class CustomSessionScreen( - private val functionalTimer: FunctionalCustomTimer, - private var mediaplayer: MediaPlayer? -): AbstractSessionScreen() { - - @Composable - override fun motivationString(): String { - if (functionalTimer.hasEnded()) { - return resources().getString(AppText.state_done) - } - return resources().getString(AppText.state_focus) - } - - override fun callMediaPlayer() { - if (functionalTimer.hasEnded()) { - mediaplayer?.let { it: MediaPlayer -> - it.setOnCompletionListener { - it.release() - mediaplayer = null - } - it.start() - } - } - } - -} \ No newline at end of file diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/EndlessSessionScreen.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/EndlessSessionScreen.kt deleted file mode 100644 index be67cff..0000000 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/EndlessSessionScreen.kt +++ /dev/null @@ -1,16 +0,0 @@ -package be.ugent.sel.studeez.screens.session.sessionScreens - -import androidx.compose.runtime.Composable -import be.ugent.sel.studeez.resources -import be.ugent.sel.studeez.R.string as AppText - - -class EndlessSessionScreen : AbstractSessionScreen() { - - @Composable - override fun motivationString(): String { - return resources().getString(AppText.state_focus) - } - - override fun callMediaPlayer() {} -} \ No newline at end of file From 9573a2eb5c8b91220ba8784ec80e5275933fec22 Mon Sep 17 00:00:00 2001 From: lbarraga Date: Mon, 15 May 2023 19:09:14 +0200 Subject: [PATCH 15/18] changed location of sessionscreens --- .../java/be/ugent/sel/studeez/screens/session/SessionRoute.kt | 2 +- .../{composables => }/BreakTimerScreenComposable.kt | 2 +- .../{composables => }/CustomTimerSessionScreenComposable.kt | 2 +- .../{composables => }/EndlessTimerSessionScreenComposable.kt | 2 +- .../{composables => }/GetSessionScreenComposable.kt | 2 +- .../sessionScreens/{composables => }/SessionScreenComposable.kt | 2 +- .../session/sessionScreens/{composables => }/TimerComposable.kt | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) rename app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/{composables => }/BreakTimerScreenComposable.kt (96%) rename app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/{composables => }/CustomTimerSessionScreenComposable.kt (93%) rename app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/{composables => }/EndlessTimerSessionScreenComposable.kt (87%) rename app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/{composables => }/GetSessionScreenComposable.kt (96%) rename app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/{composables => }/SessionScreenComposable.kt (96%) rename app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/{composables => }/TimerComposable.kt (97%) diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionRoute.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionRoute.kt index 3572b5e..0db1e73 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionRoute.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionRoute.kt @@ -6,7 +6,7 @@ import android.net.Uri import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalContext import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer -import be.ugent.sel.studeez.screens.session.sessionScreens.composables.GetSessionScreenComposable +import be.ugent.sel.studeez.screens.session.sessionScreens.GetSessionScreenComposable data class SessionActions( val getTimer: () -> FunctionalTimer, diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/BreakTimerScreenComposable.kt similarity index 96% rename from app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt rename to app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/BreakTimerScreenComposable.kt index cac3509..093c16a 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/BreakTimerScreenComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/BreakTimerScreenComposable.kt @@ -1,4 +1,4 @@ -package be.ugent.sel.studeez.screens.session.sessionScreens.composables +package be.ugent.sel.studeez.screens.session.sessionScreens import androidx.compose.foundation.background import androidx.compose.foundation.layout.* diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/CustomTimerSessionScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/CustomTimerSessionScreenComposable.kt similarity index 93% rename from app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/CustomTimerSessionScreenComposable.kt rename to app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/CustomTimerSessionScreenComposable.kt index ec3c2d8..a0c385c 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/CustomTimerSessionScreenComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/CustomTimerSessionScreenComposable.kt @@ -1,4 +1,4 @@ -package be.ugent.sel.studeez.screens.session.sessionScreens.composables +package be.ugent.sel.studeez.screens.session.sessionScreens import androidx.compose.runtime.Composable import be.ugent.sel.studeez.R diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/EndlessTimerSessionScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/EndlessTimerSessionScreenComposable.kt similarity index 87% rename from app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/EndlessTimerSessionScreenComposable.kt rename to app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/EndlessTimerSessionScreenComposable.kt index b223f52..4f1dbe3 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/EndlessTimerSessionScreenComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/EndlessTimerSessionScreenComposable.kt @@ -1,4 +1,4 @@ -package be.ugent.sel.studeez.screens.session.sessionScreens.composables +package be.ugent.sel.studeez.screens.session.sessionScreens import androidx.compose.runtime.Composable import be.ugent.sel.studeez.R diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/GetSessionScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/GetSessionScreenComposable.kt similarity index 96% rename from app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/GetSessionScreenComposable.kt rename to app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/GetSessionScreenComposable.kt index 3780f42..47ca52e 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/GetSessionScreenComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/GetSessionScreenComposable.kt @@ -1,4 +1,4 @@ -package be.ugent.sel.studeez.screens.session.sessionScreens.composables +package be.ugent.sel.studeez.screens.session.sessionScreens import androidx.compose.runtime.Composable import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalCustomTimer diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/SessionScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/SessionScreenComposable.kt similarity index 96% rename from app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/SessionScreenComposable.kt rename to app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/SessionScreenComposable.kt index 0d02add..c94d2a5 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/SessionScreenComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/SessionScreenComposable.kt @@ -1,4 +1,4 @@ -package be.ugent.sel.studeez.screens.session.sessionScreens.composables +package be.ugent.sel.studeez.screens.session.sessionScreens import androidx.compose.foundation.background import androidx.compose.foundation.border diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/TimerComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/TimerComposable.kt similarity index 97% rename from app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/TimerComposable.kt rename to app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/TimerComposable.kt index cade06f..2a29403 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/composables/TimerComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/TimerComposable.kt @@ -1,4 +1,4 @@ -package be.ugent.sel.studeez.screens.session.sessionScreens.composables +package be.ugent.sel.studeez.screens.session.sessionScreens import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box From 0487347c8f4882c51afa8bf0b6b64552f943c5d0 Mon Sep 17 00:00:00 2001 From: lbarraga Date: Mon, 15 May 2023 19:18:47 +0200 Subject: [PATCH 16/18] cleanup sessionroute --- .../studeez/screens/session/InvisibleSessionManager.kt | 10 ++++++++-- .../ugent/sel/studeez/screens/session/SessionRoute.kt | 9 +-------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/InvisibleSessionManager.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/InvisibleSessionManager.kt index 9051fa8..763fb1d 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/InvisibleSessionManager.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/InvisibleSessionManager.kt @@ -1,6 +1,10 @@ package be.ugent.sel.studeez.screens.session +import android.annotation.SuppressLint +import android.content.Context import android.media.MediaPlayer +import android.media.RingtoneManager +import android.net.Uri import kotlinx.coroutines.delay import javax.inject.Singleton import kotlin.time.Duration.Companion.seconds @@ -10,9 +14,11 @@ object InvisibleSessionManager { private var viewModel: SessionViewModel? = null private lateinit var mediaPlayer: MediaPlayer - fun setParameters(viewModel: SessionViewModel, mediaplayer: MediaPlayer) { + fun setParameters(viewModel: SessionViewModel, context: Context) { + val uri: Uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION) + this.mediaPlayer = MediaPlayer.create(context, uri) + this.mediaPlayer.isLooping = false this.viewModel = viewModel - this.mediaPlayer = mediaplayer } suspend fun updateTimer() { diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionRoute.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionRoute.kt index 0db1e73..9d1953b 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionRoute.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionRoute.kt @@ -31,15 +31,8 @@ fun SessionRoute( openAndPopUp: (String, String) -> Unit, viewModel: SessionViewModel, ) { - val context = LocalContext.current - val uri: Uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION) - val mediaplayer = MediaPlayer.create(context, uri) - mediaplayer.isLooping = false - InvisibleSessionManager.setParameters( - viewModel = viewModel, - mediaplayer = mediaplayer - ) + InvisibleSessionManager.setParameters(viewModel = viewModel, context = LocalContext.current) val soundPlayer = SoundPlayer(LocalContext.current) val sessionActions = getSessionActions(viewModel, openAndPopUp) From 6554a92f837285b43e200e7face8cdbd3e348671 Mon Sep 17 00:00:00 2001 From: lbarraga Date: Mon, 15 May 2023 19:20:42 +0200 Subject: [PATCH 17/18] remove imports sessionroute --- .../java/be/ugent/sel/studeez/screens/session/SessionRoute.kt | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionRoute.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionRoute.kt index 9d1953b..aeaf544 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionRoute.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/SessionRoute.kt @@ -1,8 +1,5 @@ package be.ugent.sel.studeez.screens.session -import android.media.MediaPlayer -import android.media.RingtoneManager -import android.net.Uri import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalContext import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer From 5ddd92a66fd6862b1755eb50fba70c25206ab721 Mon Sep 17 00:00:00 2001 From: lbarraga Date: Mon, 15 May 2023 20:58:37 +0200 Subject: [PATCH 18/18] 'merge' dots --- .../FunctionalPomodoroTimer.kt | 2 +- .../BreakTimerScreenComposable.kt | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalPomodoroTimer.kt b/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalPomodoroTimer.kt index 765fbcd..e754963 100644 --- a/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalPomodoroTimer.kt +++ b/app/src/main/java/be/ugent/sel/studeez/data/local/models/timer_functional/FunctionalPomodoroTimer.kt @@ -6,7 +6,7 @@ class FunctionalPomodoroTimer( val repeats: Int ) : FunctionalTimer(studyTime) { - var breaksRemaining = repeats + var breaksRemaining = repeats - 1 var isInBreak = false override fun tick() { diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/BreakTimerScreenComposable.kt b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/BreakTimerScreenComposable.kt index 093c16a..42ec4f7 100644 --- a/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/BreakTimerScreenComposable.kt +++ b/app/src/main/java/be/ugent/sel/studeez/screens/session/sessionScreens/BreakTimerScreenComposable.kt @@ -38,12 +38,18 @@ private fun Dots(pomodoroTimer: FunctionalPomodoroTimer): Int { verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.Center, ) { - repeat(pomodoroTimer.repeats - pomodoroTimer.breaksRemaining) { - Dot(color = Color.DarkGray) - } - if (!pomodoroTimer.isInBreak) Dot(Color.Green) else Dot(Color.DarkGray) - repeat(pomodoroTimer.breaksRemaining - 1) { - Dot(color = Color.Gray) + if (pomodoroTimer.hasEnded()) { + repeat(pomodoroTimer.repeats) { + Dot(Color.Green) + } + } else { + repeat(pomodoroTimer.repeats - pomodoroTimer.breaksRemaining - 1) { + Dot(color = Color.DarkGray) + } + if (!pomodoroTimer.isInBreak) Dot(Color.Green) else Dot(Color.DarkGray) + repeat(pomodoroTimer.breaksRemaining) { + Dot(color = Color.Gray) + } } } return pomodoroTimer.breaksRemaining