{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedLists #-}
module Events.Actions.Normal
( event
, events
) where
import ClassyPrelude hiding (delete)
import Data.Char (isDigit)
import Data.Map.Strict (Map)
import Events.State
import Events.State.Modal.Detail (editDue, showDetail)
import Events.State.Types (Stateful)
import Graphics.Vty.Input.Events
events :: Map Text Stateful
events
=
[ ("quit", quit)
, ("undo", (write =<<) . undo)
, ("search", searchMode)
, ("help", showHelp)
, ("previous", previous)
, ("next", next)
, ("left", left)
, ("right", right)
, ("bottom", bottom)
, ("new", (startCreate =<<) . (newItem =<<) . store)
, ("newAbove", (startCreate =<<) . (above =<<) . store)
, ("newBelow", (startCreate =<<) . (below =<<) . store)
, ("edit", (startEdit =<<) . store)
, ("clear", (startEdit =<<) . (clearItem =<<) . store)
, ("delete", (write =<<) . (delete =<<) . store)
, ("detail", showDetail)
, ("dueDate", (editDue =<<) . (store =<<) . showDetail)
, ("moveUp", (write =<<) . (up =<<) . store)
, ("moveDown", (write =<<) . (down =<<) . store)
, ("moveLeft", (write =<<) . (bottom =<<) . (left =<<) . (moveLeft =<<) . store)
, ("moveRight", (write =<<) . (bottom =<<) . (right =<<) . (moveRight =<<) . store)
, ("moveMenu", showMoveTo)
, ("listNew", (createListStart =<<) . store)
, ("listEdit", (editListStart =<<) . store)
, ("listDelete", (write =<<) . (deleteCurrentList =<<) . store)
, ("listRight", (write =<<) . (listRight =<<) . store)
, ("listLeft", (write =<<) . (listLeft =<<) . store)
]
event :: Event -> Stateful
event (EvKey (KChar n) _)
| isDigit n = selectList n
| otherwise = pure
event _ = pure