taskell-1.3.5.0: src/Events/Actions/Insert.hs
{-# LANGUAGE NoImplicitPrelude #-}
module Events.Actions.Insert
( event
) where
import ClassyPrelude
import Control.Lens ((&), (.~), (^.))
import Events.State
import Events.State.Types
import Events.State.Types.Mode (InsertMode (..), InsertType (..), Mode (Insert))
import Graphics.Vty.Input.Events (Event (EvKey), Key (KEnter, KEsc))
import qualified UI.Field as F (event)
event :: Event -> Stateful
event (EvKey KEnter _) state =
case state ^. mode of
Insert IList ICreate _ ->
(write =<<) . (startCreate =<<) . (newItem =<<) . (store =<<) $ createList state
Insert IList IEdit _ -> (write =<<) . (normalMode =<<) $ finishListTitle state
Insert ITask ICreate _ ->
(write =<<) . (below =<<) . (removeBlank =<<) . (store =<<) $ finishTask state
Insert ITask IEdit _ ->
(write =<<) . (removeBlank =<<) . (normalMode =<<) $ finishTask state
_ -> return state
event (EvKey KEsc _) state =
case state ^. mode of
Insert IList ICreate _ -> (normalMode =<<) . (write =<<) $ createList state
Insert IList IEdit _ -> (write =<<) . (normalMode =<<) $ finishListTitle state
Insert ITask _ _ -> (write =<<) . (removeBlank =<<) . (normalMode =<<) $ finishTask state
_ -> return state
event e state =
return $
case state ^. mode of
Insert iType iMode field -> state & mode .~ Insert iType iMode (F.event e field)
_ -> state