aboutsummaryrefslogtreecommitdiff
path: root/src/Model
diff options
context:
space:
mode:
Diffstat (limited to 'src/Model')
-rw-r--r--src/Model/Edition/Edition.elm34
-rw-r--r--src/Model/Edition/NameEdition.elm15
-rw-r--r--src/Model/Edition/TimeEdition.elm (renamed from src/Model/TimerEdition.elm)29
-rw-r--r--src/Model/Model.elm9
-rw-r--r--src/Model/Timer.elm8
5 files changed, 63 insertions, 32 deletions
diff --git a/src/Model/Edition/Edition.elm b/src/Model/Edition/Edition.elm
new file mode 100644
index 0000000..89a0b52
--- /dev/null
+++ b/src/Model/Edition/Edition.elm
@@ -0,0 +1,34 @@
+module Model.Edition.Edition
+ ( Edition
+ , Kind(..)
+ , newEdition
+ , keyCodeToChar
+ ) where
+
+import Keyboard (KeyCode)
+
+import Model.Id (..)
+import Model.Edition.NameEdition as NameEdition
+import Model.Edition.TimeEdition as TimeEdition
+
+type alias Edition =
+ { id : Id
+ , kind : Kind
+ , chars : List Char
+ }
+
+type Kind =
+ Name
+ | Time
+
+newEdition id kind =
+ { id = id
+ , kind = kind
+ , chars = []
+ }
+
+keyCodeToChar : Kind -> KeyCode -> Maybe Char
+keyCodeToChar kind =
+ case kind of
+ Name -> NameEdition.keyCodeToChar
+ Time -> TimeEdition.keyCodeToChar
diff --git a/src/Model/Edition/NameEdition.elm b/src/Model/Edition/NameEdition.elm
new file mode 100644
index 0000000..18224ea
--- /dev/null
+++ b/src/Model/Edition/NameEdition.elm
@@ -0,0 +1,15 @@
+module Model.Edition.NameEdition
+ ( keyCodeToChar
+ , renderNameEdition
+ ) where
+
+import Char
+import Keyboard (KeyCode)
+import String
+import List
+
+keyCodeToChar : KeyCode -> Maybe Char
+keyCodeToChar = Just << Char.fromCode
+
+renderNameEdition : List Char -> String
+renderNameEdition = String.fromList << List.reverse
diff --git a/src/Model/TimerEdition.elm b/src/Model/Edition/TimeEdition.elm
index 2ec98b7..6999b25 100644
--- a/src/Model/TimerEdition.elm
+++ b/src/Model/Edition/TimeEdition.elm
@@ -1,8 +1,5 @@
-module Model.TimerEdition
- ( TimerEdition
- , Numbers
- , newTimerEdition
- , keyCodeToNumberChar
+module Model.Edition.TimeEdition
+ ( keyCodeToChar
, toTime
, toMinutesAndSeconds
) where
@@ -13,25 +10,11 @@ import Array
import String
import Keyboard (KeyCode)
-import Model.Id (..)
-
import Utils.List (..)
import Utils.Maybe (..)
-type alias TimerEdition =
- { id : Id
- , numbers : Numbers
- }
-
-type alias Numbers = List Char
-
-newTimerEdition id =
- { id = id
- , numbers = []
- }
-
-keyCodeToNumberChar : KeyCode -> Maybe Char
-keyCodeToNumberChar code =
+keyCodeToChar : KeyCode -> Maybe Char
+keyCodeToChar code =
List.map (flip keyCodeToCharFromZero code) zeroKeyCodes
|> List.foldl orElse Nothing
@@ -46,14 +29,14 @@ keyCodeToCharFromZero zero code =
|> Array.get (code - zero)
else Nothing
-toTime : Numbers -> Time
+toTime : List Char -> Time
toTime numbers =
numbers
|> toMinutesAndSeconds
|> \(a, b) -> (stringToInt a, stringToInt b)
|> \(minutes, seconds) -> (toFloat minutes) * 60 * 1000 + (toFloat seconds) * 1000
-toMinutesAndSeconds : Numbers -> (String, String)
+toMinutesAndSeconds : List Char -> (String, String)
toMinutesAndSeconds numbers =
numbers
|> List.take 4
diff --git a/src/Model/Model.elm b/src/Model/Model.elm
index b929261..c45300b 100644
--- a/src/Model/Model.elm
+++ b/src/Model/Model.elm
@@ -10,7 +10,7 @@ import Time (Time)
import List
import Model.Timer (..)
-import Model.TimerEdition (..)
+import Model.Edition.Edition (..)
import Model.Id (..)
import Model.IdGenerator (..)
@@ -18,17 +18,16 @@ type alias Model =
{ currentTime : Time
, timers : Dict Id Timer
, timerIdGenerator : IdGenerator
- , timerEdition : Maybe TimerEdition
+ , edition : Maybe Edition
}
initialModel : Time -> Model
initialModel initialTime =
let (id, idGenerator) = getId initialIdGenerator
- timerName = "Timer " ++ (toString id)
in { currentTime = initialTime
- , timers = Dict.insert id (initialTimer initialTime timerName) Dict.empty
+ , timers = Dict.insert id (initialTimer initialTime) Dict.empty
, timerIdGenerator = idGenerator
- , timerEdition = Nothing
+ , edition = Nothing
}
numberOfTimers : Model -> Int
diff --git a/src/Model/Timer.elm b/src/Model/Timer.elm
index f05c487..35850fc 100644
--- a/src/Model/Timer.elm
+++ b/src/Model/Timer.elm
@@ -11,17 +11,17 @@ import Model.TimerState (..)
type alias Timer =
{ creationTime : Time
- , name : String
+ , name : Maybe String
, initialTime : Time
, currentTime : Time
, state : TimerState
}
-initialTimer : Time -> String -> Timer
-initialTimer creationTime name =
+initialTimer : Time -> Timer
+initialTimer creationTime =
let initialTime = 5 * 60 * 1000
in { creationTime = creationTime
- , name = name
+ , name = Nothing
, initialTime = initialTime
, currentTime = initTime initialTime
, state = Idle