From 9e22cbd730da34afa0f8d3c03b9cb7f61e83d5f5 Mon Sep 17 00:00:00 2001 From: tv Date: Wed, 7 Jan 2015 00:38:36 +0100 Subject: add treeViewId --- TreeView.hs | 47 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 15 deletions(-) (limited to 'TreeView.hs') diff --git a/TreeView.hs b/TreeView.hs index a03b3ee..a878572 100644 --- a/TreeView.hs +++ b/TreeView.hs @@ -10,6 +10,7 @@ module TreeView , fromSearchResults , fromMessageForest , fromMessageTree + , treeViewId ) where @@ -36,28 +37,44 @@ data TreeView instance Eq TreeView where - TVMessage m1 == TVMessage m2 = - m1 == m2 + x1 == x2 = treeViewId x1 == treeViewId x2 - TVMessageHeaderField m1 mhf1 == TVMessageHeaderField m2 mhf2 = - m1 == m2 && mhf1 == mhf2 - TVMessagePart m1 mp1 == TVMessagePart m2 mp2 = - m1 == m2 && mp1 == mp2 +data TreeViewId + = TVIDMessage T.Text + | TVIDMessageHeaderField T.Text T.Text + | TVIDMessagePart T.Text Int + | TVIDMessageLine T.Text Int Int + | TVIDSearch T.Text + | TVIDSearchResult T.Text + deriving (Eq,Show) - TVMessageLine m1 mp1 ln1 _s1 == TVMessageLine m2 mp2 ln2 _s2 = - m1 == m2 && mp1 == mp2 && ln1 == ln2 - TVMessageQuoteLine m1 mp1 ln1 _s1 == TVMessageQuoteLine m2 mp2 ln2 _s2 = - m1 == m2 && mp1 == mp2 && ln1 == ln2 +treeViewId :: TreeView -> TreeViewId +treeViewId = \case + TVMessage m -> + TVIDMessage (fromMessage m) - TVSearch s1 == TVSearch s2 = - s1 == s2 + TVMessageHeaderField m mhf -> + TVIDMessageHeaderField (fromMessage m) (CI.foldedCase mhf) - TVSearchResult s1 == TVSearchResult s2 = - s1 == s2 + TVMessagePart m mp -> + TVIDMessagePart (fromMessage m) (partID mp) - _ == _ = False + TVMessageLine m mp lineNr _ -> + TVIDMessageLine (fromMessage m) (partID mp) lineNr + + TVMessageQuoteLine m mp lineNr _ -> + TVIDMessageLine (fromMessage m) (partID mp) lineNr + + TVSearch s -> + TVIDSearch (T.pack s) + + TVSearchResult sr -> + TVIDSearch (T.pack $ unThreadID $ searchThread sr) + + where + fromMessage = T.pack . unMessageID . messageId getMessage :: TreeView -> Maybe Message -- cgit v1.2.3