glirc-2.40.1: src/Client/Commands/Toggles.hs
{-# Language OverloadedStrings, TemplateHaskell #-}
{-|
Module : Client.Commands.Toggles
Description : View modality command implementations
Copyright : (c) Eric Mertens, 2016-2020
License : ISC
Maintainer : emertens@gmail.com
-}
module Client.Commands.Toggles (togglesCommands) where
import Client.Commands.Docs (togglesDocs, cmdDoc)
import Client.Commands.TabCompletion (noClientTab)
import Client.Commands.Types
import Client.Configuration (EditMode(SingleLineEditor, MultiLineEditor), LayoutMode(OneColumn, TwoColumn))
import Client.State
import Control.Lens (over, set)
togglesCommands :: CommandSection
togglesCommands = CommandSection "View toggles"
[ Command
(pure "toggle-detail")
(pure ())
$(togglesDocs `cmdDoc` "toggle-detail")
$ ClientCommand cmdToggleDetail noClientTab
, Command
(pure "toggle-activity-bar")
(pure ())
$(togglesDocs `cmdDoc` "toggle-activity-bar")
$ ClientCommand cmdToggleActivityBar noClientTab
, Command
(pure "toggle-show-ping")
(pure ())
$(togglesDocs `cmdDoc` "toggle-show-ping")
$ ClientCommand cmdToggleShowPing noClientTab
, Command
(pure "toggle-metadata")
(pure ())
$(togglesDocs `cmdDoc` "toggle-metadata")
$ ClientCommand cmdToggleMetadata noClientTab
, Command
(pure "toggle-layout")
(pure ())
$(togglesDocs `cmdDoc` "toggle-layout")
$ ClientCommand cmdToggleLayout noClientTab
, Command
(pure "toggle-editor")
(pure ())
$(togglesDocs `cmdDoc` "toggle-editor")
$ ClientCommand cmdToggleEditor noClientTab
, Command
(pure "toggle-edit-lock")
(pure ())
$(togglesDocs `cmdDoc` "toggle-edit-lock")
$ ClientCommand cmdToggleEditLock noClientTab
]
cmdToggleDetail :: ClientCommand ()
cmdToggleDetail st _ = commandSuccess (over clientDetailView not st)
cmdToggleActivityBar :: ClientCommand ()
cmdToggleActivityBar st _ = commandSuccess (over clientActivityBar not st)
cmdToggleShowPing :: ClientCommand ()
cmdToggleShowPing st _ = commandSuccess (over clientShowPing not st)
cmdToggleMetadata :: ClientCommand ()
cmdToggleMetadata st _ = commandSuccess (clientToggleHideMeta st)
cmdToggleLayout :: ClientCommand ()
cmdToggleLayout st _ = commandSuccess (set clientScroll 0 (over clientLayout aux st))
where
aux OneColumn = TwoColumn
aux TwoColumn = OneColumn
cmdToggleEditor :: ClientCommand ()
cmdToggleEditor st _ = commandSuccess (over clientEditMode aux st)
where
aux SingleLineEditor = MultiLineEditor
aux MultiLineEditor = SingleLineEditor
cmdToggleEditLock :: ClientCommand ()
cmdToggleEditLock st _ = commandSuccess (over clientEditLock not st)