glirc-2.27: src/Client/View/IgnoreList.hs
{-# Language OverloadedStrings #-}
{-|
Module : Client.View.IgnoreList
Description : Line renderers for ignore mask list view
Copyright : (c) Eric Mertens, 2016
License : ISC
Maintainer : emertens@gmail.com
This module renders the lines used to list the ignore masks.
-}
module Client.View.IgnoreList
( ignoreListLines
) where
import Client.Image.PackedImage
import Client.Image.Palette
import Client.Image.Message
import Graphics.Vty.Attributes
import Irc.Identifier
import Data.HashSet (HashSet)
import Data.Foldable
import Control.Lens
-- | Render the lines used in a channel mask list.
ignoreListLines ::
HashSet Identifier {- ^ ignore masks -} ->
Palette {- ^ palette -} ->
[Image']
ignoreListLines ignores pal =
summaryLine ignores pal :
[ text' defAttr (cleanText (idText mask)) | mask <- toList ignores ]
-- | Render a summary describing the number of ignore masks.
summaryLine ::
HashSet Identifier {- ^ ignore masks -} ->
Palette {- ^ palette -} ->
Image'
summaryLine ignores pal
| null ignores = text' (view palError pal) "Ignore list empty"
| otherwise = text' (view palLabel pal) "Ignore entries: "
<> string defAttr (show (length ignores))