module Penny.Cabin.Balance.Options where
import qualified Data.Text as X
import qualified Penny.Lincoln as L
import qualified Penny.Cabin.Chunk as Chunk
import qualified Penny.Cabin.Colors as C
import qualified Penny.Cabin.Options as O
import qualified Penny.Shield as S
import qualified Penny.Cabin.Colors.DarkBackground as DB
import qualified Penny.Copper.DateTime as DT
import qualified Penny.Lincoln.Balance as Bal
data Options = Options {
drCrColors :: C.DrCrColors
, baseColors :: C.BaseColors
, balanceFormat :: L.BottomLine -> X.Text
, colorPref :: Chunk.Colors
, showZeroBalances :: O.ShowZeroBalances
, convert :: Maybe (L.Commodity, L.DateTime)
, defaultTimeZone :: DT.DefaultTimeZone
}
balanceAsIs :: L.BottomLine -> X.Text
balanceAsIs n = case n of
L.Zero -> X.pack "--"
L.NonZero c -> X.pack . show . L.unQty . Bal.qty $ c
defaultOptions :: S.Runtime -> Options
defaultOptions rt = Options {
drCrColors = DB.drCrColors
, baseColors = DB.baseColors
, balanceFormat = balanceAsIs
, colorPref = O.maxCapableColors rt
, showZeroBalances = O.ShowZeroBalances False
, convert = Nothing
, defaultTimeZone = DT.utcDefault }