taskell-1.7.0.0: src/UI/Draw.hs
{-# LANGUAGE NoImplicitPrelude #-}
module UI.Draw
( draw
, chooseCursor
) where
import ClassyPrelude
import Control.Lens ((^.))
import Control.Monad.Reader (runReader)
import Brick
import Events.State (normalise)
import Events.State.Types (State, mode)
import Events.State.Types.Mode (DetailMode (..), ModalType (..), Mode (..))
import IO.Config.Layout (Config)
import IO.Keyboard.Types (Bindings)
import UI.Draw.Main (renderMain)
import UI.Draw.Modal (renderModal)
import UI.Draw.Types (DrawState (DrawState), ReaderDrawState, TWidget)
import UI.Types (ResourceName (..))
-- draw
renderApp :: ReaderDrawState [TWidget]
renderApp = sequence [renderModal, renderMain]
draw :: Config -> Bindings -> Bool -> State -> [TWidget]
draw layout bindings debug state =
runReader renderApp (DrawState layout bindings debug (normalise state))
-- cursors
chooseCursor :: State -> [CursorLocation ResourceName] -> Maybe (CursorLocation ResourceName)
chooseCursor state =
case normalise state ^. mode of
Insert {} -> showCursorNamed RNCursor
Search -> showCursorNamed RNCursor
Modal (Detail _ (DetailInsert _)) -> showCursorNamed RNCursor
_ -> neverShowCursor state