From 9c22ec4f379c5c4f47ec8691e3c5569eea30f808 Mon Sep 17 00:00:00 2001
From: Jens Nolte <jens@nightmarestudio.de>
Date: Sun, 8 Dec 2019 05:28:18 +0100
Subject: [PATCH] Add types for new internal text format

---
 src/QBar/Core.hs | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/src/QBar/Core.hs b/src/QBar/Core.hs
index fd0ae51..db2155d 100644
--- a/src/QBar/Core.hs
+++ b/src/QBar/Core.hs
@@ -85,7 +85,38 @@ data Bar = Bar {
 data BarUpdateChannel = BarUpdateChannel (IO ())
 type BarUpdateEvent = Event.Event
 
+newtype BlockText = BlockText [BlockTextSegment]
+instance Semigroup BlockText where
+  (BlockText a) <> (BlockText b) = BlockText (a <> b)
+instance Monoid BlockText where
+  mempty = BlockText []
 
+data BlockTextSegment = BlockTextSegment {
+    active :: Bool,
+    importance :: Importance,
+    text :: T.Text
+  }
+  | PangoTextSegment T.Text
+
+type Importance = Float
+
+mkText :: Bool -> Importance -> T.Text -> BlockText
+mkText active importance text = BlockText [BlockTextSegment { text, active, importance }]
+
+activeImportantText :: Importance -> T.Text -> BlockText
+activeImportantText = mkText True
+
+importantText :: Importance -> T.Text -> BlockText
+importantText = mkText False
+
+activeText :: T.Text -> BlockText
+activeText = mkText True 0
+
+normalText :: T.Text -> BlockText
+normalText = mkText False 0
+
+pangoText :: T.Text -> BlockText
+pangoText pango = BlockText [PangoTextSegment pango]
 
 defaultColor :: T.Text
 defaultColor = "#969896"
-- 
GitLab