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