module Matterhorn.Events.ShowHelp where import Prelude () import Matterhorn.Prelude import Brick import Brick.Keybindings import qualified Graphics.Vty as Vty import Network.Mattermost.Types ( TeamId ) import Matterhorn.Constants import Matterhorn.Types onEventShowHelp :: TeamId -> Vty.Event -> MH Bool onEventShowHelp :: TeamId -> Event -> MH Bool onEventShowHelp TeamId tId = [Event -> MH Bool] -> Event -> MH Bool handleEventWith [ (KeyConfig KeyEvent -> KeyDispatcher KeyEvent MH) -> Event -> MH Bool mhHandleKeyboardEvent (TeamId -> KeyConfig KeyEvent -> KeyDispatcher KeyEvent MH helpKeybindings TeamId tId) , TeamId -> Event -> MH Bool closeHelp TeamId tId ] closeHelp :: TeamId -> Vty.Event -> MH Bool closeHelp :: TeamId -> Event -> MH Bool closeHelp TeamId tId (Vty.EvKey {}) = do TeamId -> MH () popMode TeamId tId Bool -> MH Bool forall a. a -> MH a forall (m :: * -> *) a. Monad m => a -> m a return Bool True closeHelp TeamId _ Event _ = Bool -> MH Bool forall a. a -> MH a forall (m :: * -> *) a. Monad m => a -> m a return Bool False helpKeybindings :: TeamId -> KeyConfig KeyEvent -> KeyDispatcher KeyEvent MH helpKeybindings :: TeamId -> KeyConfig KeyEvent -> KeyDispatcher KeyEvent MH helpKeybindings TeamId tId KeyConfig KeyEvent kc = KeyConfig KeyEvent -> [KeyEventHandler KeyEvent MH] -> KeyDispatcher KeyEvent MH forall k (m :: * -> *). Ord k => KeyConfig k -> [KeyEventHandler k m] -> KeyDispatcher k m unsafeKeyDispatcher KeyConfig KeyEvent kc (TeamId -> [KeyEventHandler KeyEvent MH] helpKeyHandlers TeamId tId) helpKeyHandlers :: TeamId -> [MHKeyEventHandler] helpKeyHandlers :: TeamId -> [KeyEventHandler KeyEvent MH] helpKeyHandlers TeamId tId = [ KeyEvent -> Text -> MH () -> KeyEventHandler KeyEvent MH forall k (m :: * -> *). k -> Text -> m () -> KeyEventHandler k m onEvent KeyEvent ScrollUpEvent Text "Scroll up" (MH () -> KeyEventHandler KeyEvent MH) -> MH () -> KeyEventHandler KeyEvent MH forall a b. (a -> b) -> a -> b $ EventM Name ChatState () -> MH () forall a. EventM Name ChatState a -> MH a mh (EventM Name ChatState () -> MH ()) -> EventM Name ChatState () -> MH () forall a b. (a -> b) -> a -> b $ ViewportScroll Name -> forall s. Int -> EventM Name s () forall n. ViewportScroll n -> forall s. Int -> EventM n s () vScrollBy (Name -> ViewportScroll Name forall n. n -> ViewportScroll n viewportScroll Name HelpViewport) (-Int 1) , KeyEvent -> Text -> MH () -> KeyEventHandler KeyEvent MH forall k (m :: * -> *). k -> Text -> m () -> KeyEventHandler k m onEvent KeyEvent ScrollDownEvent Text "Scroll down" (MH () -> KeyEventHandler KeyEvent MH) -> MH () -> KeyEventHandler KeyEvent MH forall a b. (a -> b) -> a -> b $ EventM Name ChatState () -> MH () forall a. EventM Name ChatState a -> MH a mh (EventM Name ChatState () -> MH ()) -> EventM Name ChatState () -> MH () forall a b. (a -> b) -> a -> b $ ViewportScroll Name -> forall s. Int -> EventM Name s () forall n. ViewportScroll n -> forall s. Int -> EventM n s () vScrollBy (Name -> ViewportScroll Name forall n. n -> ViewportScroll n viewportScroll Name HelpViewport) Int 1 , KeyEvent -> Text -> MH () -> KeyEventHandler KeyEvent MH forall k (m :: * -> *). k -> Text -> m () -> KeyEventHandler k m onEvent KeyEvent PageUpEvent Text "Page up" (MH () -> KeyEventHandler KeyEvent MH) -> MH () -> KeyEventHandler KeyEvent MH forall a b. (a -> b) -> a -> b $ EventM Name ChatState () -> MH () forall a. EventM Name ChatState a -> MH a mh (EventM Name ChatState () -> MH ()) -> EventM Name ChatState () -> MH () forall a b. (a -> b) -> a -> b $ ViewportScroll Name -> forall s. Int -> EventM Name s () forall n. ViewportScroll n -> forall s. Int -> EventM n s () vScrollBy (Name -> ViewportScroll Name forall n. n -> ViewportScroll n viewportScroll Name HelpViewport) (-Int 1 Int -> Int -> Int forall a. Num a => a -> a -> a * Int pageAmount) , KeyEvent -> Text -> MH () -> KeyEventHandler KeyEvent MH forall k (m :: * -> *). k -> Text -> m () -> KeyEventHandler k m onEvent KeyEvent PageDownEvent Text "Page down" (MH () -> KeyEventHandler KeyEvent MH) -> MH () -> KeyEventHandler KeyEvent MH forall a b. (a -> b) -> a -> b $ EventM Name ChatState () -> MH () forall a. EventM Name ChatState a -> MH a mh (EventM Name ChatState () -> MH ()) -> EventM Name ChatState () -> MH () forall a b. (a -> b) -> a -> b $ ViewportScroll Name -> forall s. Int -> EventM Name s () forall n. ViewportScroll n -> forall s. Int -> EventM n s () vScrollBy (Name -> ViewportScroll Name forall n. n -> ViewportScroll n viewportScroll Name HelpViewport) (Int 1 Int -> Int -> Int forall a. Num a => a -> a -> a * Int pageAmount) , KeyEvent -> Text -> MH () -> KeyEventHandler KeyEvent MH forall k (m :: * -> *). k -> Text -> m () -> KeyEventHandler k m onEvent KeyEvent CancelEvent Text "Close the help window" (MH () -> KeyEventHandler KeyEvent MH) -> MH () -> KeyEventHandler KeyEvent MH forall a b. (a -> b) -> a -> b $ TeamId -> MH () popMode TeamId tId , KeyEvent -> Text -> MH () -> KeyEventHandler KeyEvent MH forall k (m :: * -> *). k -> Text -> m () -> KeyEventHandler k m onEvent KeyEvent ScrollBottomEvent Text "Scroll to the end of the help" (MH () -> KeyEventHandler KeyEvent MH) -> MH () -> KeyEventHandler KeyEvent MH forall a b. (a -> b) -> a -> b $ EventM Name ChatState () -> MH () forall a. EventM Name ChatState a -> MH a mh (EventM Name ChatState () -> MH ()) -> EventM Name ChatState () -> MH () forall a b. (a -> b) -> a -> b $ ViewportScroll Name -> forall s. EventM Name s () forall n. ViewportScroll n -> forall s. EventM n s () vScrollToEnd (Name -> ViewportScroll Name forall n. n -> ViewportScroll n viewportScroll Name HelpViewport) , KeyEvent -> Text -> MH () -> KeyEventHandler KeyEvent MH forall k (m :: * -> *). k -> Text -> m () -> KeyEventHandler k m onEvent KeyEvent ScrollTopEvent Text "Scroll to the beginning of the help" (MH () -> KeyEventHandler KeyEvent MH) -> MH () -> KeyEventHandler KeyEvent MH forall a b. (a -> b) -> a -> b $ EventM Name ChatState () -> MH () forall a. EventM Name ChatState a -> MH a mh (EventM Name ChatState () -> MH ()) -> EventM Name ChatState () -> MH () forall a b. (a -> b) -> a -> b $ ViewportScroll Name -> forall s. EventM Name s () forall n. ViewportScroll n -> forall s. EventM n s () vScrollToBeginning (Name -> ViewportScroll Name forall n. n -> ViewportScroll n viewportScroll Name HelpViewport) ]