diff options
author | Carl Worth <cworth@cworth.org> | 2009-10-29 17:31:07 -0700 |
---|---|---|
committer | Carl Worth <cworth@cworth.org> | 2009-10-29 17:31:07 -0700 |
commit | c771eaf362edb021888d114989d38d8fb2b4cfb3 (patch) | |
tree | ba5a02ac5a84560733b5e31d3b633b8d256bb382 /thread.cc | |
parent | 41c7ad2c91e56bfc0b2fefa0be303605d34f4042 (diff) |
notmuch search: Add (relative) date to search output
The new function for formatting relative dates is nice enough that
we need to start using it more places. Here's one of them.
Diffstat (limited to 'thread.cc')
-rw-r--r-- | thread.cc | 55 |
1 files changed, 48 insertions, 7 deletions
@@ -30,6 +30,10 @@ struct _notmuch_thread { char *thread_id; char *subject; GHashTable *tags; + + notmuch_bool_t has_message; + time_t oldest; + time_t newest; }; static int @@ -74,6 +78,10 @@ _notmuch_thread_create (const void *talloc_owner, thread->tags = g_hash_table_new_full (g_str_hash, g_str_equal, free, NULL); + thread->has_message = 0; + thread->oldest = 0; + thread->newest = 0; + return thread; } @@ -84,15 +92,36 @@ notmuch_thread_get_thread_id (notmuch_thread_t *thread) } void -_notmuch_thread_add_tag (notmuch_thread_t *thread, const char *tag) +_notmuch_thread_add_message (notmuch_thread_t *thread, + notmuch_message_t *message) { - g_hash_table_insert (thread->tags, xstrdup (tag), NULL); -} + notmuch_tags_t *tags; + const char *tag; + time_t date; -void -_notmuch_thread_set_subject (notmuch_thread_t *thread, const char *subject) -{ - thread->subject = talloc_strdup (thread, subject); + if (! thread->subject) { + const char *subject; + subject = notmuch_message_get_header (message, "subject"); + thread->subject = talloc_strdup (thread, subject); + } + + for (tags = notmuch_message_get_tags (message); + notmuch_tags_has_more (tags); + notmuch_tags_advance (tags)) + { + tag = notmuch_tags_get (tags); + g_hash_table_insert (thread->tags, xstrdup (tag), NULL); + } + + date = notmuch_message_get_date (message); + + if (date < thread->oldest || ! thread->has_message) + thread->oldest = date; + + if (date > thread->newest || ! thread->has_message) + thread->newest = date; + + thread->has_message = 1; } const char * @@ -101,6 +130,18 @@ notmuch_thread_get_subject (notmuch_thread_t *thread) return thread->subject; } +time_t +notmuch_thread_get_oldest_date (notmuch_thread_t *thread) +{ + return thread->oldest; +} + +time_t +notmuch_thread_get_newest_date (notmuch_thread_t *thread) +{ + return thread->newest; +} + notmuch_tags_t * notmuch_thread_get_tags (notmuch_thread_t *thread) { |