summaryrefslogtreecommitdiffstats
path: root/TreeViewRaw.hs
diff options
context:
space:
mode:
Diffstat (limited to 'TreeViewRaw.hs')
-rw-r--r--TreeViewRaw.hs204
1 files changed, 204 insertions, 0 deletions
diff --git a/TreeViewRaw.hs b/TreeViewRaw.hs
new file mode 100644
index 0000000..babd42d
--- /dev/null
+++ b/TreeViewRaw.hs
@@ -0,0 +1,204 @@
+{-# LANGUAGE LambdaCase #-}
+
+module TreeViewRaw where
+
+import TreeView
+import Data.Tree
+import Trammel
+import qualified Notmuch
+import qualified Notmuch.Message as Notmuch
+import qualified Notmuch.SearchResult as Notmuch
+import qualified Data.CaseInsensitive as CI
+import qualified Data.List as L
+import qualified Data.Map as M
+import qualified Data.Text as T
+
+-- Maybe TreeView -> Tree TreeView -> Image
+--hPutTreeView h cur tv =
+-- treeImage (Just $ Z.label cursor) (Z.toTree cursor)
+
+renderTreeView :: TreeView -> Tree TreeView -> [String]
+renderTreeView cur _loc@(Node label children) =
+ [ colorize $ renderTreeView1 hasFocus label ] ++
+ concatMap (map (" "++) . renderTreeView cur) children
+ where
+ hasFocus = cur == label
+ colorize s =
+ if hasFocus
+ then pp $ SGR [31] s
+ else pp s
+
+
+renderTreeView1 :: Bool -> TreeView -> Trammel String
+renderTreeView1 hasFocus = \case
+
+ TVSearch s ->
+ Plain s
+
+ TVSearchResult sr -> Plain $
+ (padl 11 ' ' $ T.unpack $ Notmuch.searchDateRel sr)
+ ++ "("
+ ++ (show $ Notmuch.searchMatched sr)
+ ++ ") "
+ ++ (T.unpack $ Notmuch.searchSubject sr)
+ -- ++ " "
+ -- ++ (let Notmuch.ThreadID tid = Notmuch.searchThread sr in tid)
+
+ TVMessage m -> Plain $
+ (Notmuch.unMessageID $ Notmuch.messageId m)
+ ++ " "
+ ++ T.unpack (T.intercalate (T.pack ",") $ Notmuch.messageTags m)
+
+ TVMessageHeaderField m fieldName -> Plain $
+ let k = T.unpack $ CI.original fieldName
+ v = maybe "nothing"
+ T.unpack
+ (M.lookup fieldName $ Notmuch.messageHeaders m)
+ in k ++ ": " ++ v
+
+ TVMessagePart _ p -> Plain $
+ "part#"
+ ++ (show $ Notmuch.partID p)
+ ++ " "
+ ++ (T.unpack $ CI.original $ Notmuch.partContentType p)
+
+ TVMessageLine _ _ _ s ->
+ Plain s
+ -- | TVMessageLine Message MessagePart LineNr String
+
+
+ --TVMessage m ->
+ -- let col = if isOpen m then om else cm
+ -- in
+ -- string col (unMessageID $ messageId m)
+ -- <|>
+ -- translateX 1 (
+ -- horizCat $
+ -- intersperse (string col ", ") $
+ -- map (text' tagColor) $
+ -- messageTags m
+ -- )
+ s ->
+ Plain $ describe s
+-- let col = if isOpen m then om else cm
+-- in
+-- string col (unMessageID $ messageId m)
+-- <|>
+-- translateX 1 (
+-- horizCat $
+-- intersperse (string col ", ") $
+-- map (text' tagColor) $
+-- messageTags m
+-- )
+
+
+--hPutTreeView h hasFocus = \case
+-- TVMessage m ->
+-- putStr
+-- _ ->
+
+
+
+--
+--treeViewImage :: Bool -> TreeView -> Image
+--treeViewImage hasFocus = \case
+-- TVMessage m ->
+-- let col = if isOpen m then om else cm
+-- in
+-- string col (unMessageID $ messageId m)
+-- <|>
+-- translateX 1 (
+-- horizCat $
+-- intersperse (string col ", ") $
+-- map (text' tagColor) $
+-- messageTags m
+-- )
+--
+-- TVMessageHeaderField m fieldName ->
+-- let k = string mhf $ T.unpack $ CI.original fieldName
+-- v = maybe (string mhf_empty "nothing")
+-- (string mhf . T.unpack)
+-- (M.lookup fieldName $ messageHeaders m)
+-- in k <|> string mhf ": " <|> v
+--
+-- TVMessagePart _ p ->
+-- string mp "TVMessagePart"
+-- <|> translateX 1 (string mp $ show $ partID p)
+-- <|> translateX 1 (string mp $ show $ partContentType p)
+--
+-- TVMessageLine _ _ _ s ->
+-- string ml s
+--
+-- TVSearch s ->
+-- string sColor s
+--
+-- TVSearchResult sr -> do
+-- --let ThreadID tid = searchThread sr
+-- --string srColor tid
+-- -- <|>
+-- --translateX 1
+-- (string srColor $ padl 11 ' ' $ T.unpack $ searchDateRel sr)
+-- <|>
+-- string srColor " ("
+-- <|>
+-- (string srColor $ show $ searchMatched sr)
+-- <|>
+-- string srColor ")"
+-- <|>
+-- string srColor " "
+-- -- <|>
+-- -- (string srColor $ show $ searchTime sr)
+-- <|>
+-- (string srColor $ T.unpack $ searchSubject sr)
+-- <|>
+-- --(string srColor $ T.unpack $ searchThread sr)
+-- (translateX 1 $ let ThreadID tid = searchThread sr in string srColor tid)
+-- --string srColor tid
+-- where
+-- --c1 = if hasFocus then c1_focus else c1_nofocus
+-- --c1_nofocus = withForeColor def $ Color240 $ -16 + 238
+-- --c1_focus = withForeColor def $ Color240 $ -16 + 244
+-- --c2 = withForeColor def $ Color240 $ -16 + 106
+-- --c3 = withForeColor def $ Color240 $ -16 + 199
+--
+-- tagColor = if hasFocus then tagColor_y else tagColor_n
+-- tagColor_y = withForeColor def $ color 230
+-- tagColor_n = withForeColor def $ color 200
+--
+-- cm = if hasFocus then cm_y else cm_n
+-- cm_y = withForeColor def $ color 46
+-- cm_n = withForeColor def $ color 22
+--
+-- om = if hasFocus then om_y else om_n
+-- om_y = withForeColor def $ color 82
+-- om_n = withForeColor def $ color 58
+--
+-- ml = if hasFocus then ml_y else ml_n
+-- ml_y = withForeColor def $ color 226
+-- ml_n = withForeColor def $ color 202
+--
+-- mhf = if hasFocus then mhf_y else mhf_n
+-- mhf_y = withForeColor def $ color 248
+-- mhf_n = withForeColor def $ color 244
+--
+-- mhf_empty = if hasFocus then mhf_empty_y else mhf_empty_n
+-- mhf_empty_y = withForeColor def $ color 88
+-- mhf_empty_n = withForeColor def $ color 52
+--
+-- --ph = if hasFocus then ph_y else ph_n
+-- --ph_y = withForeColor def $ color 241
+-- --ph_n = withForeColor def $ color 235
+--
+-- mp = if hasFocus then mp_y else mp_n
+-- mp_y = withForeColor def $ color 199
+-- mp_n = withForeColor def $ color 162
+--
+-- sColor = if hasFocus then sColor_y else sColor_n
+-- sColor_y = withForeColor def $ color 196
+-- sColor_n = withForeColor def $ color 88
+--
+-- srColor = if hasFocus then srColor_y else srColor_n
+-- srColor_y = withForeColor def $ color 197
+-- srColor_n = withForeColor def $ color 89
+--
+-- color i = Color240 $ -16 + i