aboutsummaryrefslogtreecommitdiff
path: root/src/Update/UpdateTimer.elm
diff options
context:
space:
mode:
Diffstat (limited to 'src/Update/UpdateTimer.elm')
-rw-r--r--src/Update/UpdateTimer.elm34
1 files changed, 28 insertions, 6 deletions
diff --git a/src/Update/UpdateTimer.elm b/src/Update/UpdateTimer.elm
index e45a3c2..2e0d9af 100644
--- a/src/Update/UpdateTimer.elm
+++ b/src/Update/UpdateTimer.elm
@@ -14,6 +14,7 @@ type TimerAction =
| ToggleRunning
| Stop
| SetTime Time
+ | SubstractTime Time
updateTimer : TimerAction -> Timer -> Timer
updateTimer action timer =
@@ -21,12 +22,19 @@ updateTimer action timer =
Pause ->
{ timer | state <- Idle }
ToggleRunning ->
- { timer
- | state <-
- if timer.currentTime > 0 && timer.state == Idle
- then Running
- else Idle
- }
+ if timer.state == Ringing
+ then
+ { timer
+ | currentTime <- initTime timer.initialTime
+ , state <- Running
+ }
+ else
+ { timer
+ | state <-
+ if timer.currentTime > 0 && timer.state == Idle
+ then Running
+ else Idle
+ }
Stop ->
{ timer
| currentTime <- initTime timer.initialTime
@@ -38,3 +46,17 @@ updateTimer action timer =
| initialTime <- time
, currentTime <- augmentedTime
}
+ SubstractTime time ->
+ if timer.state == Running
+ then
+ let newTime = timer.currentTime - time
+ in if newTime <= 0.0
+ then
+ { timer
+ | currentTime <- 0.0
+ , state <- Ringing
+ }
+ else
+ { timer | currentTime <- newTime }
+ else
+ timer