lib: add notmuch_message_count_files
authorDavid Bremner <david@tethera.net>
Sun, 4 Jun 2017 12:32:30 +0000 (09:32 -0300)
committerDavid Bremner <david@tethera.net>
Wed, 2 Aug 2017 01:17:47 +0000 (21:17 -0400)
This operation is relatively inexpensive, as the needed metadata is
already computed by our lazy metadata fetching. The goal is to support
better UI for messages with multipile files.

lib/message.cc
lib/notmuch-private.h
lib/notmuch.h
lib/string-list.c

index f78e5a9d302fd62c09e41dfc59966b57e3056c3b..68c020017ea8c87882d11048d3b6e558c302b3df 100644 (file)
@@ -946,6 +946,14 @@ notmuch_message_get_filenames (notmuch_message_t *message)
     return _notmuch_filenames_create (message, message->filename_list);
 }
 
+int
+notmuch_message_count_files (notmuch_message_t *message)
+{
+    _notmuch_message_ensure_filename_list (message);
+
+    return _notmuch_string_list_length (message->filename_list);
+}
+
 notmuch_bool_t
 notmuch_message_get_flag (notmuch_message_t *message,
                          notmuch_message_flag_t flag)
index 57c6163918bb59ab236163dbd65eb3faf15113cd..544788bc3fdf67fb389b36945422572e0dcad6a4 100644 (file)
@@ -550,6 +550,12 @@ typedef struct _notmuch_string_list {
 notmuch_string_list_t *
 _notmuch_string_list_create (const void *ctx);
 
+/*
+ * return the number of strings in 'list'
+ */
+int
+_notmuch_string_list_length (notmuch_string_list_t *list);
+
 /* Add 'string' to 'list'.
  *
  * The list will create its own talloced copy of 'string'.
index 17f0872e9edf80189602712a5d5be652de8a8e2d..f5018497033d1fff6cea3a71a29a01fa5ced0535 100644 (file)
@@ -1341,6 +1341,14 @@ notmuch_message_get_thread_id (notmuch_message_t *message);
 notmuch_messages_t *
 notmuch_message_get_replies (notmuch_message_t *message);
 
+/**
+ * Get the total number of files associated with a message.
+ * @returns Non-negative integer
+ * @since libnotmuch 5.0 (notmuch 0.25)
+ */
+int
+notmuch_message_count_files (notmuch_message_t *message);
+
 /**
  * Get a filename for the email corresponding to 'message'.
  *
index 43ebe4993e8f26db6441f46e7af5dc6b42886d0e..9c3ae7ef2a30eb6127cb3b180f2385ee5da0d5ea 100644 (file)
@@ -42,6 +42,12 @@ _notmuch_string_list_create (const void *ctx)
     return list;
 }
 
+int
+_notmuch_string_list_length (notmuch_string_list_t *list)
+{
+    return list->length;
+}
+
 void
 _notmuch_string_list_append (notmuch_string_list_t *list,
                             const char *string)