#65 functional timer abstract class and subclasses
This commit is contained in:
parent
89eda17bc2
commit
d7f316675c
6 changed files with 97 additions and 6 deletions
|
@ -1,4 +1,16 @@
|
||||||
package be.ugent.sel.studeez.data.local.models.timer_functional
|
package be.ugent.sel.studeez.data.local.models.timer_functional
|
||||||
|
|
||||||
class FunctionalCustomTimer {
|
class FunctionalCustomTimer(studyTime: Int): FunctionalTimer(studyTime) {
|
||||||
|
|
||||||
|
override fun tick() {
|
||||||
|
if (time.getTime() == 0) {
|
||||||
|
view = "Done!"
|
||||||
|
} else {
|
||||||
|
time.minOne()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun hasEnded(): Boolean {
|
||||||
|
return time.getTime() == 0
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,4 +1,12 @@
|
||||||
package be.ugent.sel.studeez.data.local.models.timer_functional
|
package be.ugent.sel.studeez.data.local.models.timer_functional
|
||||||
|
|
||||||
class FunctionalEndlessTimer {
|
class FunctionalEndlessTimer() : FunctionalTimer(0){
|
||||||
|
|
||||||
|
override fun hasEnded(): Boolean {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun tick() {
|
||||||
|
time.plusOne()
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,4 +1,34 @@
|
||||||
package be.ugent.sel.studeez.data.local.models.timer_functional
|
package be.ugent.sel.studeez.data.local.models.timer_functional
|
||||||
|
|
||||||
class FunctionalPomodoroTimer {
|
class FunctionalPomodoroTimer(
|
||||||
|
private var studyTime: Int,
|
||||||
|
private var breakTime: Int, repeats: Int
|
||||||
|
): FunctionalTimer(studyTime) {
|
||||||
|
|
||||||
|
private var breaksRemaining = repeats
|
||||||
|
private var isInBreak = false
|
||||||
|
|
||||||
|
override fun tick() {
|
||||||
|
if (time.getTime() == 0 && breaksRemaining == 0){
|
||||||
|
view = "Done!"
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (time.getTime() == 0) {
|
||||||
|
if (isInBreak) {
|
||||||
|
breaksRemaining--
|
||||||
|
view = "Focus! ($breaksRemaining breaks remaining)"
|
||||||
|
time.setTime(studyTime)
|
||||||
|
} else {
|
||||||
|
view = "Take a break!"
|
||||||
|
time.setTime(breakTime)
|
||||||
|
}
|
||||||
|
isInBreak = !isInBreak
|
||||||
|
}
|
||||||
|
time.minOne()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun hasEnded(): Boolean {
|
||||||
|
return breaksRemaining == 0 && time.getTime() == 0
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,4 +1,19 @@
|
||||||
package be.ugent.sel.studeez.data.local.models.timer_functional
|
package be.ugent.sel.studeez.data.local.models.timer_functional
|
||||||
|
|
||||||
class FunctionalTimer {
|
abstract class FunctionalTimer(initialValue: Int) {
|
||||||
|
protected val time: Time = Time(initialValue)
|
||||||
|
protected var view: String = "Focus"
|
||||||
|
|
||||||
|
fun getHoursMinutesSeconds(): HoursMinutesSeconds {
|
||||||
|
return time.getAsHMS()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getViewString(): String {
|
||||||
|
return view
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract fun tick()
|
||||||
|
|
||||||
|
abstract fun hasEnded(): Boolean
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,3 +1,3 @@
|
||||||
package be.ugent.sel.studeez.data.local.models.timer_functional
|
package be.ugent.sel.studeez.data.local.models.timer_functional
|
||||||
|
|
||||||
data class HoursMinutesSeconds()
|
data class HoursMinutesSeconds(val hours: Int, val minutes: Int, val seconds: Int)
|
|
@ -1,4 +1,30 @@
|
||||||
package be.ugent.sel.studeez.data.local.models.timer_functional
|
package be.ugent.sel.studeez.data.local.models.timer_functional
|
||||||
|
|
||||||
class Time {
|
class Time(initialTime: Int) {
|
||||||
|
|
||||||
|
private var time = initialTime
|
||||||
|
|
||||||
|
fun minOne() {
|
||||||
|
time--
|
||||||
|
}
|
||||||
|
|
||||||
|
fun plusOne() {
|
||||||
|
time++
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setTime(newTime: Int) {
|
||||||
|
time = newTime
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getTime(): Int {
|
||||||
|
return time
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getAsHMS(): HoursMinutesSeconds {
|
||||||
|
val hours: Int = time / (60 * 60)
|
||||||
|
val minutes: Int = (time / (60)) % 60
|
||||||
|
val seconds: Int = time % 60
|
||||||
|
return HoursMinutesSeconds(hours, minutes, seconds)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Reference in a new issue