taskell-1.9.3.0: src/Taskell/UI/Draw.hs
module Taskell.UI.Draw
( draw
, chooseCursor
) where
import ClassyPrelude
import Control.Lens ((^.))
import Control.Monad.Reader (runReader)
import Brick
import Taskell.Events.State (normalise)
import Taskell.Events.State.Types (State, mode)
import Taskell.Events.State.Types.Mode (DetailMode (..), ModalType (..), Mode (..))
import Taskell.IO.Config.Layout (Config)
import Taskell.IO.Keyboard.Types (Bindings)
import Taskell.UI.Draw.Main (renderMain)
import Taskell.UI.Draw.Modal (renderModal)
import Taskell.UI.Draw.Types (DrawState (DrawState), ReaderDrawState, TWidget)
import Taskell.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