commit
666502e19f
3 changed files with 62 additions and 6 deletions
|
@ -2,7 +2,8 @@ package be.ugent.sel.studeez.data.local.models.timer_functional
|
||||||
|
|
||||||
class FunctionalPomodoroTimer(
|
class FunctionalPomodoroTimer(
|
||||||
private var studyTime: Int,
|
private var studyTime: Int,
|
||||||
private var breakTime: Int, repeats: Int
|
private var breakTime: Int,
|
||||||
|
val repeats: Int
|
||||||
) : FunctionalTimer(studyTime) {
|
) : FunctionalTimer(studyTime) {
|
||||||
|
|
||||||
var breaksRemaining = repeats
|
var breaksRemaining = repeats
|
||||||
|
|
|
@ -100,6 +100,8 @@ abstract class AbstractSessionScreen {
|
||||||
fontSize = 30.sp
|
fontSize = 30.sp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
MidSection()
|
||||||
|
|
||||||
Box(
|
Box(
|
||||||
contentAlignment = Alignment.Center, modifier = Modifier
|
contentAlignment = Alignment.Center, modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
|
@ -126,6 +128,11 @@ abstract class AbstractSessionScreen {
|
||||||
@Composable
|
@Composable
|
||||||
abstract fun motivationString(): String
|
abstract fun motivationString(): String
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
open fun MidSection() {
|
||||||
|
// Default has no midsection, unless overwritten.
|
||||||
|
}
|
||||||
|
|
||||||
abstract fun callMediaPlayer()
|
abstract fun callMediaPlayer()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,20 @@
|
||||||
package be.ugent.sel.studeez.screens.session.sessionScreens
|
package be.ugent.sel.studeez.screens.session.sessionScreens
|
||||||
|
|
||||||
import android.media.MediaPlayer
|
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.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.R
|
||||||
import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalPomodoroTimer
|
import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalPomodoroTimer
|
||||||
import be.ugent.sel.studeez.resources
|
import be.ugent.sel.studeez.resources
|
||||||
|
@ -12,6 +25,37 @@ class BreakSessionScreen(
|
||||||
private var mediaplayer: MediaPlayer?
|
private var mediaplayer: MediaPlayer?
|
||||||
): AbstractSessionScreen() {
|
): 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
|
@Composable
|
||||||
override fun motivationString(): String {
|
override fun motivationString(): String {
|
||||||
if (funPomoDoroTimer.isInBreak) {
|
if (funPomoDoroTimer.isInBreak) {
|
||||||
|
@ -22,11 +66,7 @@ class BreakSessionScreen(
|
||||||
return resources().getString(AppText.state_done)
|
return resources().getString(AppText.state_done)
|
||||||
}
|
}
|
||||||
|
|
||||||
return resources().getQuantityString(
|
return resources().getString(AppText.state_focus)
|
||||||
R.plurals.state_focus_remaining,
|
|
||||||
funPomoDoroTimer.breaksRemaining,
|
|
||||||
funPomoDoroTimer.breaksRemaining
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun callMediaPlayer() {
|
override fun callMediaPlayer() {
|
||||||
|
@ -43,3 +83,11 @@ class BreakSessionScreen(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Preview
|
||||||
|
@Composable
|
||||||
|
fun MidsectionPreview() {
|
||||||
|
val funPomoDoroTimer = FunctionalPomodoroTimer(15, 60, 5)
|
||||||
|
val breakSessionScreen = BreakSessionScreen(funPomoDoroTimer, MediaPlayer())
|
||||||
|
breakSessionScreen.MidSection()
|
||||||
|
}
|
Reference in a new issue