module Matterhorn.Events.Global
  ( globalKeybindings
  , globalKeyHandlers
  )
where

import           Matterhorn.Command
import           Matterhorn.Types
import           Matterhorn.State.Channels
import           Matterhorn.State.ChannelList
import           Matterhorn.State.Teams

import           Matterhorn.Events.Keybindings


globalKeybindings :: KeyConfig -> KeyHandlerMap
globalKeybindings :: KeyConfig -> KeyHandlerMap
globalKeybindings = [KeyEventHandler] -> KeyConfig -> KeyHandlerMap
mkKeybindings [KeyEventHandler]
globalKeyHandlers

globalKeyHandlers :: [KeyEventHandler]
globalKeyHandlers :: [KeyEventHandler]
globalKeyHandlers =
    [ KeyEvent -> Text -> MH () -> KeyEventHandler
mkKb KeyEvent
ToggleMessagePreviewEvent Text
"Toggle message preview"
        MH ()
toggleMessagePreview

    , KeyEvent -> Text -> MH () -> KeyEventHandler
mkKb KeyEvent
ToggleChannelListVisibleEvent Text
"Toggle channel list visibility"
        MH ()
toggleChannelListVisibility

    , KeyEvent -> Text -> MH () -> KeyEventHandler
mkKb KeyEvent
ToggleExpandedChannelTopicsEvent Text
"Toggle display of expanded channel topics"
        MH ()
toggleExpandedChannelTopics

    , KeyEvent -> Text -> MH () -> KeyEventHandler
mkKb KeyEvent
NextTeamEvent Text
"Switch to the next available team"
        MH ()
nextTeam

    , KeyEvent -> Text -> MH () -> KeyEventHandler
mkKb KeyEvent
PrevTeamEvent Text
"Switch to the previous available team"
        MH ()
prevTeam

    , KeyEvent -> Text -> MH () -> KeyEventHandler
mkKb KeyEvent
MoveCurrentTeamLeftEvent Text
"Move the current team to the left in the team list"
        MH ()
moveCurrentTeamLeft

    , KeyEvent -> Text -> MH () -> KeyEventHandler
mkKb KeyEvent
MoveCurrentTeamRightEvent Text
"Move the current team to the right in the team list"
        MH ()
moveCurrentTeamRight

    , KeyEvent -> Text -> MH () -> KeyEventHandler
mkKb
        KeyEvent
QuitEvent
        Text
"Quit"
        MH ()
requestQuit
    ]