added getview function

This commit is contained in:
Lukas Barragan Torres 2023-04-25 15:20:28 +02:00
parent c73c06b11c
commit 7fe7416388
10 changed files with 293 additions and 230 deletions

View file

@ -1,21 +1,26 @@
package be.ugent.sel.studeez.data.local.models.timer_functional
import be.ugent.sel.studeez.screens.session.sessionScreens.CustomSessionScreen
import be.ugent.sel.studeez.screens.session.sessionScreens.AbstractSessionScreen
class FunctionalCustomTimer(studyTime: Int) : FunctionalTimer(studyTime) {
override fun tick() {
if (time.time == 0) {
view = StudyState.DONE
} else {
if (!hasEnded()) {
time.minOne()
}
}
override fun hasEnded(): Boolean {
return view == StudyState.DONE
}
override fun hasCurrentCountdownEnded(): Boolean {
return time.time == 0
}
override fun hasCurrentCountdownEnded(): Boolean {
return hasEnded()
}
override fun getView(): AbstractSessionScreen {
return CustomSessionScreen(this)
}
}

View file

@ -1,6 +1,9 @@
package be.ugent.sel.studeez.data.local.models.timer_functional
class FunctionalEndlessTimer() : FunctionalTimer(0) {
import be.ugent.sel.studeez.screens.session.sessionScreens.EndlessSessionScreen
import be.ugent.sel.studeez.screens.session.sessionScreens.AbstractSessionScreen
class FunctionalEndlessTimer : FunctionalTimer(0) {
override fun hasEnded(): Boolean {
return false
@ -13,4 +16,8 @@ class FunctionalEndlessTimer() : FunctionalTimer(0) {
override fun tick() {
time.plusOne()
}
override fun getView(): AbstractSessionScreen {
return EndlessSessionScreen()
}
}

View file

@ -1,5 +1,8 @@
package be.ugent.sel.studeez.data.local.models.timer_functional
import be.ugent.sel.studeez.screens.session.sessionScreens.BreakSessionScreen
import be.ugent.sel.studeez.screens.session.sessionScreens.AbstractSessionScreen
class FunctionalPomodoroTimer(
private var studyTime: Int,
private var breakTime: Int, repeats: Int
@ -9,18 +12,15 @@ class FunctionalPomodoroTimer(
var isInBreak = false
override fun tick() {
if (time.time == 0 && breaksRemaining == 0) {
view = StudyState.DONE
if (hasEnded()) {
return
}
if (time.time == 0) {
if (hasCurrentCountdownEnded()) {
if (isInBreak) {
breaksRemaining--
view = StudyState.FOCUS_REMAINING
time.time = studyTime
} else {
view = StudyState.BREAK
time.time = breakTime
}
isInBreak = !isInBreak
@ -29,10 +29,18 @@ class FunctionalPomodoroTimer(
}
override fun hasEnded(): Boolean {
return breaksRemaining == 0 && time.time == 0
return !hasBreaksRemaining() && hasCurrentCountdownEnded()
}
private fun hasBreaksRemaining(): Boolean {
return breaksRemaining > 0
}
override fun hasCurrentCountdownEnded(): Boolean {
return time.time == 0
}
override fun getView(): AbstractSessionScreen {
return BreakSessionScreen(this)
}
}

View file

@ -1,8 +1,8 @@
package be.ugent.sel.studeez.data.local.models.timer_functional
import be.ugent.sel.studeez.screens.session.sessionScreens.AbstractSessionScreen
abstract class FunctionalTimer(initialValue: Int) {
val time: Time = Time(initialValue)
var view: StudyState = StudyState.FOCUS
fun getHoursMinutesSeconds(): HoursMinutesSeconds {
return time.getAsHMS()
@ -14,8 +14,6 @@ abstract class FunctionalTimer(initialValue: Int) {
abstract fun hasCurrentCountdownEnded(): Boolean
enum class StudyState {
FOCUS, DONE, BREAK, FOCUS_REMAINING
}
abstract fun getView(): AbstractSessionScreen
}