#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 | ||||
| 
 | ||||
| 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 | ||||
| 
 | ||||
| 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 | ||||
| 
 | ||||
| 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 | ||||
| 
 | ||||
| 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 | ||||
| 
 | ||||
| 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 | ||||
| 
 | ||||
| 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
	
	 lbarraga
						lbarraga