packages feed

hum-0.1.0.0: src/Hum/Attributes.hs

-- |

module Hum.Attributes where

import           Brick.AttrMap
import           Brick.Types
import           Brick.Widgets.Core
import           Brick.Widgets.List             ( listAttr
                                                , listSelectedAttr
                                                , listSelectedFocusedAttr
                                                )
import qualified Brick.Util                    as BU
import           Graphics.Vty                   ( defAttr )
import qualified Graphics.Vty                  as Vty


humAttrMap :: AttrMap
humAttrMap = attrMap
  defAttr
  [ (listAttr               , Vty.withStyle (BU.fg Vty.white) Vty.defaultStyleMask)
  , (listSelectedAttr       , Vty.withStyle defAttr Vty.underline)
  , (listSelectedFocusedAttr, Vty.withStyle defAttr Vty.reverseVideo)
  , (listHighlightedAttr    , BU.fg Vty.yellow)
  , (headerAttr             , Vty.withStyle defAttr Vty.underline)
  , (queueAlbumAttr         , BU.fg Vty.red)
  , (queueTrackAttr         , BU.fg Vty.magenta)
  , (queueTitleAttr         , BU.fg Vty.cyan)
  , (queueArtistAttr        , BU.fg Vty.green)
  , (queueTimeAttr          , BU.fg Vty.blue)
  , (queueDateAttr          , BU.fg Vty.yellow)
  , ( queueNowPlayingAttr
    , Vty.withStyle (Vty.withStyle defAttr Vty.bold) Vty.underline
    )
  , (queueTitleBoldAttr, Vty.withStyle defAttr Vty.bold)
  , (editorAttr          , BU.bg Vty.black)
  ]

wobAttr :: Vty.Attr
wobAttr = BU.fg Vty.white

queueAttr, queueAlbumAttr, queueTitleAttr, queueTrackAttr, queueArtistAttr, queueTimeAttr, queueDateAttr
  :: AttrName
queueAttr = "queue"
queueAlbumAttr = queueAttr <> "album"
queueTitleAttr = queueAttr <> "title"
queueTrackAttr = queueAttr <> "track"
queueArtistAttr = queueAttr <> "artist"
queueTimeAttr = queueAttr <> "time"
queueDateAttr = queueAttr <> "date"

headerAttr :: AttrName
headerAttr = "header"

listHighlightedAttr :: AttrName
listHighlightedAttr = listAttr <> "highlighted"
queueNowPlayingAttr :: AttrName
queueNowPlayingAttr = queueAttr <> "now playing"

queueTitleBoldAttr :: AttrName
queueTitleBoldAttr = queueTitleAttr <> "bold"


editorAttr :: AttrName
editorAttr = "editor"

highlightOverQueueAttrs :: Widget n -> Widget n
highlightOverQueueAttrs = updateAttrMap
  (mapAttrNames
    (   (listHighlightedAttr, )
    <$> [ queueAlbumAttr
        , queueTrackAttr
        , queueTitleAttr
        , queueArtistAttr
        , queueTimeAttr
        ]
    )
  )