content: module Matterhorn.Events.ThemeListWindow
    ( onEventThemeListWindow
    , themeListWindowKeyHandlers
    )
  where
  
  import           Prelude ()
  import           Matterhorn.Prelude
  
  import           Brick.Keybindings
  import qualified Graphics.Vty as Vty
  
  import           Network.Mattermost.Types ( TeamId )
  
  import           Matterhorn.State.ThemeListWindow
  import           Matterhorn.State.ListWindow
  import           Matterhorn.Types
  
  
  onEventThemeListWindow :: TeamId -> Vty.Event -> MH ()
  onEventThemeListWindow tId =
      void . onEventListWindow (csTeam(tId).tsThemeListWindow)
          (themeListWindowKeybindings tId)
  
  -- | The keybindings we want to use while viewing a user list window
  themeListWindowKeybindings :: TeamId -> KeyConfig KeyEvent -> KeyDispatcher KeyEvent MH
  themeListWindowKeybindings tId kc = unsafeKeyDispatcher kc (themeListWindowKeyHandlers tId)
  
  themeListWindowKeyHandlers :: TeamId -> [MHKeyEventHandler]
  themeListWindowKeyHandlers tId =
      [ onEvent CancelEvent "Close the theme list"
        (exitListWindow tId (csTeam(tId).tsThemeListWindow))
      , onEvent SearchSelectUpEvent "Select the previous theme" $
        themeListSelectUp tId
      , onEvent SearchSelectDownEvent "Select the next theme" $
        themeListSelectDown tId
      , onEvent PageDownEvent "Page down in the theme list" $
        themeListPageDown tId
      , onEvent PageUpEvent "Page up in the theme list" $
        themeListPageUp tId
      , onEvent ActivateListItemEvent "Switch to the selected color theme"
        (listWindowActivateCurrent tId (csTeam(tId).tsThemeListWindow))
      ]
  