Add some very basic task list interaction
This commit is contained in:
parent
b524441d9c
commit
902c23eb83
5 changed files with 108 additions and 14 deletions
|
|
@ -1,14 +1,15 @@
|
|||
{-# LANGUAGE RecordWildCards #-}
|
||||
|
||||
module TaskMachine.UI where
|
||||
|
||||
--import Data.Monoid
|
||||
--
|
||||
import qualified Brick as B
|
||||
import qualified Brick.Themes as B
|
||||
import qualified Brick.Widgets.List as B
|
||||
import qualified Brick as B
|
||||
import qualified Brick.Focus as B
|
||||
import qualified Brick.Themes as B
|
||||
import qualified Graphics.Vty.Input.Events as VTY
|
||||
|
||||
import TaskMachine.UI.NewTask
|
||||
import TaskMachine.UI.TaskList
|
||||
import TaskMachine.UI.TopBar
|
||||
import TaskMachine.UI.Types
|
||||
--import qualified Database.SQLite.Simple as DB
|
||||
--import qualified Brick.Themes as B
|
||||
|
|
@ -44,13 +45,33 @@ Edit _____________________________
|
|||
-- [_] display loaded tasks in UI
|
||||
|
||||
drawUIState :: UIState -> [B.Widget RName]
|
||||
drawUIState UIState{..} = [B.renderList (renderLTask taskEdit) True taskList]
|
||||
drawUIState s =
|
||||
let wTopBar = const placeholderTopBar
|
||||
wTaskList = renderTaskList (taskList s) (taskEdit s)
|
||||
wNewTask = const placeholderNewTask
|
||||
in pure $ case B.focusGetCurrent (focus s) of
|
||||
Nothing -> B.vBox [wTopBar False, wTaskList False, wNewTask False] -- should never happen
|
||||
(Just BRTopBar) -> B.vBox [wTopBar True, wTaskList False, wNewTask False]
|
||||
(Just BRTaskList) -> B.vBox [wTopBar False, wTaskList True, wNewTask False]
|
||||
(Just BRNewTask) -> B.vBox [wTopBar False, wTaskList False, wNewTask True ]
|
||||
|
||||
updateUIState :: UIState -> B.BrickEvent RName () -> B.EventM RName (B.Next UIState)
|
||||
updateUIState s e =
|
||||
case B.focusGetCurrent (focus s) of
|
||||
Nothing -> undefined
|
||||
(Just BRTopBar) -> placeholderUpdate s e
|
||||
(Just BRTaskList) -> updateTaskList s e
|
||||
(Just BRNewTask) -> placeholderUpdate s e
|
||||
|
||||
placeholderUpdate :: UIState -> B.BrickEvent RName () -> B.EventM RName (B.Next UIState)
|
||||
placeholderUpdate s (B.VtyEvent (VTY.EvKey VTY.KEsc [])) = B.halt s
|
||||
placeholderUpdate s _ = B.continue s
|
||||
|
||||
myApp :: B.Theme -> B.App UIState () RName
|
||||
myApp theme = B.App
|
||||
{ B.appDraw = drawUIState
|
||||
, B.appChooseCursor = B.neverShowCursor
|
||||
, B.appHandleEvent = B.resizeOrQuit
|
||||
, B.appChooseCursor = B.showFirstCursor
|
||||
, B.appHandleEvent = updateUIState
|
||||
, B.appStartEvent = pure
|
||||
, B.appAttrMap = const attrMap
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue