{-# LANGUAGE NoImplicitPrelude #-} module UI.Draw.Main ( renderMain ) where import ClassyPrelude import Brick import Control.Lens ((^.)) import Data.Sequence (mapWithIndex) import Events.State.Types (lists) import IO.Config.Layout (padding, statusBar) import UI.Draw.Main.List (renderList) import UI.Draw.Main.Search (renderSearch) import UI.Draw.Main.StatusBar (renderStatusBar) import UI.Draw.Types (DSWidget, DrawState (..)) import UI.Types (ResourceName (..)) renderMain :: DSWidget renderMain = do ls <- (^. lists) <$> asks dsState listWidgets <- toList <$> sequence (renderList `mapWithIndex` ls) pad <- padding <$> asks dsLayout let mainWidget = viewport RNLists Horizontal . padTopBottom pad $ hBox listWidgets showStatusBar <- statusBar <$> asks dsLayout sb <- renderStatusBar let sb' = if showStatusBar then sb else emptyWidget renderSearch (mainWidget <=> sb')