packages feed

taskell-1.3.6.0: src/Events/Actions/Normal.hs

{-# LANGUAGE NoImplicitPrelude #-}

module Events.Actions.Normal
    ( event
    ) where

import ClassyPrelude hiding (delete)

import Data.Char                 (isDigit)
import Events.State
import Events.State.Modal.Detail (editDue, showDetail)
import Events.State.Types        (Stateful)
import Graphics.Vty.Input.Events

-- Normal
event :: Event -> Stateful
-- quit
event (EvKey (KChar 'q') _) = quit
-- add/edit
event (EvKey (KChar 'e') _) = (startEdit =<<) . store
event (EvKey (KChar 'A') _) = (startEdit =<<) . store
event (EvKey (KChar 'i') _) = (startEdit =<<) . store
event (EvKey (KChar 'C') _) = (startEdit =<<) . (clearItem =<<) . store
event (EvKey (KChar 'a') _) = (startCreate =<<) . (newItem =<<) . store
event (EvKey (KChar 'O') _) = (startCreate =<<) . (above =<<) . store
event (EvKey (KChar 'o') _) = (startCreate =<<) . (below =<<) . store
-- add list
event (EvKey (KChar 'N') _) = (createListStart =<<) . store
event (EvKey (KChar 'E') _) = (editListStart =<<) . store
event (EvKey (KChar 'X') _) = (write =<<) . (deleteCurrentList =<<) . store
-- navigation
event (EvKey (KChar 'k') _) = previous
event (EvKey (KChar 'j') _) = next
event (EvKey (KChar 'h') _) = left
event (EvKey (KChar 'l') _) = right
event (EvKey (KChar 'G') _) = bottom
-- moving items
event (EvKey (KChar 'K') _) = (write =<<) . (up =<<) . store
event (EvKey (KChar 'J') _) = (write =<<) . (down =<<) . store
event (EvKey (KChar 'H') _) = (write =<<) . (bottom =<<) . (left =<<) . (moveLeft =<<) . store
event (EvKey (KChar 'L') _) = (write =<<) . (bottom =<<) . (right =<<) . (moveRight =<<) . store
event (EvKey (KChar ' ') _) = (write =<<) . (moveRight =<<) . store
event (EvKey (KChar 'm') _) = showMoveTo
-- removing items
event (EvKey (KChar 'D') _) = (write =<<) . (delete =<<) . store
-- undo
event (EvKey (KChar 'u') _) = (write =<<) . undo
-- moving lists
event (EvKey (KChar '>') _) = (write =<<) . (listRight =<<) . store
event (EvKey (KChar '<') _) = (write =<<) . (listLeft =<<) . store
-- search
event (EvKey (KChar '/') _) = searchMode
-- help
event (EvKey (KChar '?') _) = showHelp
-- subtasks
event (EvKey KEnter _) = showDetail
event (EvKey (KChar '@') _) = (editDue =<<) . (store =<<) . showDetail
-- selecting lists
event (EvKey (KChar n) _)
    | isDigit n = selectList n
    | otherwise = pure
-- fallback
event _ = pure