matterhorn-50200.16.0: src/Matterhorn/Events/ShowHelp.hs
module Matterhorn.Events.ShowHelp where
import Prelude ()
import Matterhorn.Prelude
import Brick
import qualified Graphics.Vty as Vty
import Network.Mattermost.Types ( TeamId )
import Matterhorn.Constants
import Matterhorn.Events.Keybindings
import Matterhorn.Types
onEventShowHelp :: TeamId -> Vty.Event -> MH Bool
onEventShowHelp tId =
handleKeyboardEvent (helpKeybindings tId) $ \ e -> case e of
Vty.EvKey _ _ -> popMode tId
_ -> return ()
helpKeybindings :: TeamId -> KeyConfig -> KeyHandlerMap
helpKeybindings tId = mkKeybindings (helpKeyHandlers tId)
helpKeyHandlers :: TeamId -> [KeyEventHandler]
helpKeyHandlers tId =
[ mkKb ScrollUpEvent "Scroll up" $
mh $ vScrollBy (viewportScroll HelpViewport) (-1)
, mkKb ScrollDownEvent "Scroll down" $
mh $ vScrollBy (viewportScroll HelpViewport) 1
, mkKb PageUpEvent "Page up" $
mh $ vScrollBy (viewportScroll HelpViewport) (-1 * pageAmount)
, mkKb PageDownEvent "Page down" $
mh $ vScrollBy (viewportScroll HelpViewport) (1 * pageAmount)
, mkKb CancelEvent "Return to the previous interface" $
popMode tId
, mkKb ScrollBottomEvent "Scroll to the end of the help" $
mh $ vScrollToEnd (viewportScroll HelpViewport)
, mkKb ScrollTopEvent "Scroll to the beginning of the help" $
mh $ vScrollToBeginning (viewportScroll HelpViewport)
]
popMode :: TeamId -> MH ()
popMode tId = do
ShowHelp _ prevMode <- use (csTeam(tId).tsMode)
setMode tId prevMode