module Taskell.UI.Theme
( titleAttr
, statusBarAttr
, titleCurrentAttr
, taskCurrentAttr
, subtaskCurrentAttr
, subtaskCompleteAttr
, subtaskIncompleteAttr
, taskAttr
, disabledAttr
, dlToAttr
, defaultTheme
) where
import Brick (AttrName, attrName)
import Brick.Themes (Theme, newTheme)
import Brick.Util (fg, on)
import Graphics.Vty
import Taskell.Data.Date (Deadline (..))
statusBarAttr :: AttrName
statusBarAttr :: AttrName
statusBarAttr = String -> AttrName
attrName String
"statusBar"
titleAttr :: AttrName
titleAttr :: AttrName
titleAttr = String -> AttrName
attrName String
"title"
titleCurrentAttr :: AttrName
titleCurrentAttr :: AttrName
titleCurrentAttr = String -> AttrName
attrName String
"titleCurrent"
taskCurrentAttr :: AttrName
taskCurrentAttr :: AttrName
taskCurrentAttr = String -> AttrName
attrName String
"taskCurrent"
taskAttr :: AttrName
taskAttr :: AttrName
taskAttr = String -> AttrName
attrName String
"task"
subtaskCurrentAttr :: AttrName
subtaskCurrentAttr :: AttrName
subtaskCurrentAttr = String -> AttrName
attrName String
"subtaskCurrent"
subtaskCompleteAttr :: AttrName
subtaskCompleteAttr :: AttrName
subtaskCompleteAttr = String -> AttrName
attrName String
"subtaskComplete"
subtaskIncompleteAttr :: AttrName
subtaskIncompleteAttr :: AttrName
subtaskIncompleteAttr = String -> AttrName
attrName String
"subtaskIncomplete"
disabledAttr :: AttrName
disabledAttr :: AttrName
disabledAttr = String -> AttrName
attrName String
"disabled"
dlDue, dlSoon, dlFar :: AttrName
dlDue :: AttrName
dlDue = String -> AttrName
attrName String
"dlDue"
dlSoon :: AttrName
dlSoon = String -> AttrName
attrName String
"dlSoon"
dlFar :: AttrName
dlFar = String -> AttrName
attrName String
"dlFar"
dlToAttr :: Deadline -> AttrName
dlToAttr :: Deadline -> AttrName
dlToAttr Deadline
dl =
case Deadline
dl of
Deadline
Plenty -> AttrName
dlFar
Deadline
ThisWeek -> AttrName
dlSoon
Deadline
Tomorrow -> AttrName
dlSoon
Deadline
Today -> AttrName
dlDue
Deadline
Passed -> AttrName
dlDue
defaultTheme :: Theme
defaultTheme :: Theme
defaultTheme =
Attr -> [(AttrName, Attr)] -> Theme
newTheme
Attr
defAttr
[ (AttrName
statusBarAttr, Color
black Color -> Color -> Attr
`on` Color
green)
, (AttrName
titleAttr, Color -> Attr
fg Color
green)
, (AttrName
titleCurrentAttr, Color -> Attr
fg Color
blue)
, (AttrName
taskCurrentAttr, Color -> Attr
fg Color
magenta)
, (AttrName
subtaskCurrentAttr, Color -> Attr
fg Color
magenta)
, (AttrName
subtaskIncompleteAttr, Color -> Attr
fg Color
blue)
, (AttrName
subtaskCompleteAttr, Color -> Attr
fg Color
yellow)
, (AttrName
taskCurrentAttr, Color -> Attr
fg Color
magenta)
, (AttrName
disabledAttr, Color -> Attr
fg Color
yellow)
, (AttrName
dlDue, Color -> Attr
fg Color
red)
, (AttrName
dlSoon, Color -> Attr
fg Color
yellow)
, (AttrName
dlFar, Color -> Attr
fg Color
green)
]