mediaplayer out of view
This commit is contained in:
commit
46d60e100b
16 changed files with 326 additions and 271 deletions
|
@ -3,19 +3,27 @@ package be.ugent.sel.studeez.data.local.models.timer_functional
|
|||
class FunctionalCustomTimer(studyTime: Int) : FunctionalTimer(studyTime) {
|
||||
|
||||
override fun tick() {
|
||||
if (time.time == 0) {
|
||||
view = StudyState.DONE
|
||||
} else {
|
||||
if (!hasEnded()) {
|
||||
time.minOne()
|
||||
} else {
|
||||
mediaPlayer?.setOnCompletionListener {
|
||||
mediaPlayer!!.release()
|
||||
mediaPlayer = null
|
||||
}
|
||||
mediaPlayer?.start()
|
||||
}
|
||||
}
|
||||
|
||||
override fun hasEnded(): Boolean {
|
||||
return view == StudyState.DONE
|
||||
}
|
||||
|
||||
override fun hasCurrentCountdownEnded(): Boolean {
|
||||
return time.time == 0
|
||||
}
|
||||
|
||||
override fun hasCurrentCountdownEnded(): Boolean {
|
||||
return hasEnded()
|
||||
}
|
||||
|
||||
override fun <T> accept(visitor: FunctionalTimerVisitor<T>): T {
|
||||
return visitor.visitFunctionalCustomTimer(this)
|
||||
}
|
||||
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
package be.ugent.sel.studeez.data.local.models.timer_functional
|
||||
|
||||
class FunctionalEndlessTimer() : FunctionalTimer(0) {
|
||||
class FunctionalEndlessTimer : FunctionalTimer(0) {
|
||||
|
||||
override fun hasEnded(): Boolean {
|
||||
return false
|
||||
|
@ -13,4 +13,8 @@ class FunctionalEndlessTimer() : FunctionalTimer(0) {
|
|||
override fun tick() {
|
||||
time.plusOne()
|
||||
}
|
||||
|
||||
override fun <T> accept(visitor: FunctionalTimerVisitor<T>): T {
|
||||
return visitor.visitFunctionalEndlessTimer(this)
|
||||
}
|
||||
}
|
|
@ -9,18 +9,19 @@ class FunctionalPomodoroTimer(
|
|||
var isInBreak = false
|
||||
|
||||
override fun tick() {
|
||||
if (time.time == 0 && breaksRemaining == 0) {
|
||||
view = StudyState.DONE
|
||||
if (hasEnded()) {
|
||||
mediaPlayer?.setOnCompletionListener {
|
||||
mediaPlayer!!.release()
|
||||
mediaPlayer = null
|
||||
}
|
||||
mediaPlayer?.start()
|
||||
return
|
||||
}
|
||||
|
||||
if (time.time == 0) {
|
||||
} else if (hasCurrentCountdownEnded()) {
|
||||
mediaPlayer?.start()
|
||||
if (isInBreak) {
|
||||
breaksRemaining--
|
||||
view = StudyState.FOCUS_REMAINING
|
||||
time.time = studyTime
|
||||
} else {
|
||||
view = StudyState.BREAK
|
||||
time.time = breakTime
|
||||
}
|
||||
isInBreak = !isInBreak
|
||||
|
@ -29,10 +30,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 <T> accept(visitor: FunctionalTimerVisitor<T>): T {
|
||||
return visitor.visitFunctionalBreakTimer(this)
|
||||
}
|
||||
}
|
|
@ -1,8 +1,10 @@
|
|||
package be.ugent.sel.studeez.data.local.models.timer_functional
|
||||
|
||||
import android.media.MediaPlayer
|
||||
|
||||
abstract class FunctionalTimer(initialValue: Int) {
|
||||
var time: Time = Time(initialValue)
|
||||
var view: StudyState = StudyState.FOCUS
|
||||
val time: Time = Time(initialValue)
|
||||
var mediaPlayer: MediaPlayer? = null
|
||||
|
||||
fun getHoursMinutesSeconds(): HoursMinutesSeconds {
|
||||
return time.getAsHMS()
|
||||
|
@ -14,8 +16,5 @@ abstract class FunctionalTimer(initialValue: Int) {
|
|||
|
||||
abstract fun hasCurrentCountdownEnded(): Boolean
|
||||
|
||||
enum class StudyState {
|
||||
FOCUS, DONE, BREAK, FOCUS_REMAINING
|
||||
}
|
||||
|
||||
abstract fun <T> accept(visitor: FunctionalTimerVisitor<T>): T
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package be.ugent.sel.studeez.data.local.models.timer_functional
|
||||
|
||||
interface FunctionalTimerVisitor<T> {
|
||||
|
||||
fun visitFunctionalCustomTimer(functionalCustomTimer: FunctionalCustomTimer): T
|
||||
|
||||
fun visitFunctionalEndlessTimer(functionalEndlessTimer: FunctionalEndlessTimer): T
|
||||
|
||||
fun visitFunctionalBreakTimer(functionalPomodoroTimer: FunctionalPomodoroTimer): T
|
||||
|
||||
}
|
Reference in a new issue