diff options
Diffstat (limited to 'src/Model')
-rw-r--r-- | src/Model/Timer.elm | 27 | ||||
-rw-r--r-- | src/Model/TimerState.elm | 8 |
2 files changed, 22 insertions, 13 deletions
diff --git a/src/Model/Timer.elm b/src/Model/Timer.elm index 754a62a..b73016d 100644 --- a/src/Model/Timer.elm +++ b/src/Model/Timer.elm @@ -8,12 +8,14 @@ module Model.Timer import List import Time (Time) +import Model.TimerState (..) + type alias Timer = { creationTime : Time , name : String , initialTime : Time , currentTime : Time - , isRunning : Bool + , state : TimerState } initialTimer : Time -> String -> Timer @@ -23,23 +25,22 @@ initialTimer creationTime name = , name = name , initialTime = initialTime , currentTime = initTime initialTime - , isRunning = False + , state = Idle } substractTimerTime : Time -> Timer -> Timer substractTimerTime time timer = - if timer.isRunning + if timer.state == Running then - if timer.currentTime - time <= 0.0 - then - { timer - | currentTime <- 0.0 - , isRunning <- False - } - else - { timer - | currentTime <- timer.currentTime - time - } + let newTime = timer.currentTime - time + in if newTime <= 0.0 + then + { timer + | currentTime <- 0.0 + , state <- Ringing + } + else + { timer | currentTime <- newTime } else timer diff --git a/src/Model/TimerState.elm b/src/Model/TimerState.elm new file mode 100644 index 0000000..dbbcb80 --- /dev/null +++ b/src/Model/TimerState.elm @@ -0,0 +1,8 @@ +module Model.TimerState + ( TimerState(..) + ) where + +type TimerState = + Idle + | Running + | Ringing |