{-# 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))