#40 timer info class and subclasses, used for display of a timer

This commit is contained in:
lbarraga 2023-04-16 23:20:38 +02:00
parent 66e68493e4
commit 0c183b9cc7
20 changed files with 210 additions and 27 deletions

View file

@ -0,0 +1,4 @@
package be.ugent.sel.studeez.data.local.models.timer_functional
class FunctionalCustomTimer {
}

View file

@ -0,0 +1,4 @@
package be.ugent.sel.studeez.data.local.models.timer_functional
class FunctionalEndlessTimer {
}

View file

@ -0,0 +1,4 @@
package be.ugent.sel.studeez.data.local.models.timer_functional
class FunctionalPomodoroTimer {
}

View file

@ -0,0 +1,4 @@
package be.ugent.sel.studeez.data.local.models.timer_functional
class FunctionalTimer {
}

View file

@ -0,0 +1,3 @@
package be.ugent.sel.studeez.data.local.models.timer_functional
data class HoursMinutesSeconds()

View file

@ -0,0 +1,4 @@
package be.ugent.sel.studeez.data.local.models.timer_functional
class Time {
}

View file

@ -0,0 +1,31 @@
package be.ugent.sel.studeez.data.local.models.timer_info
import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalPomodoroTimer
import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer
class BreakTimerInfo(
name: String,
description: String,
private val studyTime: Int,
private val breakTime: Int,
private val repeats: Int,
id: String = ""
): TimerInfo(id, name, description) {
override fun getFunctionalTimer(): FunctionalTimer {
return FunctionalPomodoroTimer(studyTime, breakTime, repeats)
}
override fun asJson() : Map<String, Any> {
return mapOf(
"type" to "break",
"name" to name,
"description" to description,
"studyTime" to studyTime,
"breakTime" to breakTime,
"repeats" to repeats,
)
}
}

View file

@ -0,0 +1,27 @@
package be.ugent.sel.studeez.data.local.models.timer_info
import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalCustomTimer
import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer
class CustomTimerInfo(
name: String,
description: String,
private val studyTime: Int,
id: String = ""
): TimerInfo(id, name, description) {
override fun getFunctionalTimer(): FunctionalTimer {
return FunctionalCustomTimer(studyTime)
}
override fun asJson() : Map<String, Any> {
return mapOf(
"type" to "custom",
"name" to name,
"description" to description,
"studyTime" to studyTime,
)
}
}

View file

@ -0,0 +1,25 @@
package be.ugent.sel.studeez.data.local.models.timer_info
import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalEndlessTimer
import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer
class EndlessTimerInfo(
name: String,
description: String,
id: String = ""
): TimerInfo(id, name, description) {
override fun getFunctionalTimer(): FunctionalTimer {
return FunctionalEndlessTimer()
}
override fun asJson() : Map<String, Any> {
return mapOf(
"type" to "endless",
"name" to name,
"description" to description
)
}
}

View file

@ -0,0 +1,26 @@
package be.ugent.sel.studeez.data.local.models.timer_info
import be.ugent.sel.studeez.data.local.models.timer_functional.FunctionalTimer
/**
* Deze klasse stelt de de info van een timer weer. Elke timer heeft een id, naam en descriptie
*/
abstract class TimerInfo(
val id: String,
val name: String,
val description: String
) {
/**
* Geef de functionele timer terug die kan gebruikt worden tijden een sessie.
*/
abstract fun getFunctionalTimer(): FunctionalTimer
/**
* Geef deze timer weer als json. Wordt gebruikt om terug op te slaan in de databank.
* TODO implementaties hebben nog hardgecodeerde strings.
*/
abstract fun asJson(): Map<String, Any>
}

View file

@ -0,0 +1,16 @@
package be.ugent.sel.studeez.data.local.models.timer_info
import com.google.firebase.firestore.DocumentId
/**
* Timers uit de databank (remote config en firestore) worden als eerste stap omgezet naar dit type.
*/
data class TimerJson(
val type: String = "",
val name: String = "",
val description: String = "",
val studyTime: Int = 0,
val breakTime: Int = 0,
val repeats: Int = 0,
@DocumentId val id: String = ""
)

View file

@ -0,0 +1,7 @@
package be.ugent.sel.studeez.data.local.models.timer_info
enum class TimerType {
BREAK,
ENDLESS,
CUSTOM
}