From d0037c59a13870c6650e8a2fd490d2fabf3479af Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Fri, 2 Apr 2004 18:56:17 +0000 Subject: New function to get the deleted message count (used for Outbox count which 2004-04-02 Jeffrey Stedfast * camel-folder.c (camel_folder_get_deleted_message_count): New function to get the deleted message count (used for Outbox count which is total minus deleted). svn path=/trunk/; revision=25304 --- camel/ChangeLog | 6 ++++++ camel/camel-folder.c | 48 ++++++++++++++++++++++++++++++++++++++++++++---- camel/camel-folder.h | 4 +++- 3 files changed, 53 insertions(+), 5 deletions(-) (limited to 'camel') diff --git a/camel/ChangeLog b/camel/ChangeLog index 8ead265cf9..513ac5449f 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -1,3 +1,9 @@ +2004-04-02 Jeffrey Stedfast + + * camel-folder.c (camel_folder_get_deleted_message_count): New + function to get the deleted message count (used for Outbox count + which is total minus deleted). + 2004-04-02 Not Zed * camel-exception.c (w): turn this on, this should always be on, diff --git a/camel/camel-folder.c b/camel/camel-folder.c index e5ecbb9b8a..27b10421cc 100644 --- a/camel/camel-folder.c +++ b/camel/camel-folder.c @@ -60,8 +60,8 @@ static void refresh_info (CamelFolder *folder, CamelException *ex); static void folder_sync (CamelFolder *folder, gboolean expunge, CamelException *ex); -static const gchar *get_name (CamelFolder *folder); -static const gchar *get_full_name (CamelFolder *folder); +static const char *get_name (CamelFolder *folder); +static const char *get_full_name (CamelFolder *folder); static CamelStore *get_parent_store (CamelFolder *folder); static guint32 get_permanent_flags(CamelFolder *folder); @@ -72,8 +72,9 @@ static void set_message_user_flag(CamelFolder *folder, const char *uid, const ch static const char *get_message_user_tag(CamelFolder *folder, const char *uid, const char *name); static void set_message_user_tag(CamelFolder *folder, const char *uid, const char *name, const char *value); -static gint get_message_count(CamelFolder *folder); -static gint get_unread_message_count(CamelFolder *folder); +static int get_message_count(CamelFolder *folder); +static int get_unread_message_count(CamelFolder *folder); +static int get_deleted_message_count(CamelFolder *folder); static void expunge (CamelFolder *folder, CamelException *ex); @@ -134,6 +135,7 @@ camel_folder_class_init (CamelFolderClass *camel_folder_class) camel_folder_class->expunge = expunge; camel_folder_class->get_message_count = get_message_count; camel_folder_class->get_unread_message_count = get_unread_message_count; + camel_folder_class->get_deleted_message_count = get_deleted_message_count; camel_folder_class->append_message = append_message; camel_folder_class->get_permanent_flags = get_permanent_flags; camel_folder_class->get_message_flags = get_message_flags; @@ -577,6 +579,44 @@ camel_folder_get_unread_message_count (CamelFolder *folder) return ret; } + +static int +get_deleted_message_count (CamelFolder *folder) +{ + int i, count, deleted = 0; + CamelMessageInfo *info; + + g_return_val_if_fail (folder->summary != NULL, -1); + + count = camel_folder_summary_count (folder->summary); + for (i = 0; i < count; i++) { + if (!(info = camel_folder_summary_index (folder->summary, i))) + continue; + + if ((info->flags & CAMEL_MESSAGE_DELETED)) + deleted++; + + camel_folder_summary_info_free (folder->summary, info); + } + + return deleted; +} + +/** + * camel_folder_deleted_get_message_count: + * @folder: A CamelFolder object + * + * Return value: the number of deleetd messages in the folder, or -1 if unknown. + **/ +int +camel_folder_get_deleted_message_count (CamelFolder *folder) +{ + g_return_val_if_fail (CAMEL_IS_FOLDER (folder), -1); + + return CF_CLASS (folder)->get_deleted_message_count (folder); +} + + static void append_message (CamelFolder *folder, CamelMimeMessage *message, const CamelMessageInfo *info, char **appended_uid, diff --git a/camel/camel-folder.h b/camel/camel-folder.h index 7380ecb7a6..da81fd5216 100644 --- a/camel/camel-folder.h +++ b/camel/camel-folder.h @@ -124,8 +124,8 @@ typedef struct { CamelException *ex); int (*get_message_count) (CamelFolder *folder); - int (*get_unread_message_count) (CamelFolder *folder); + int (*get_deleted_message_count) (CamelFolder *folder); void (*append_message) (CamelFolder *folder, CamelMimeMessage *message, @@ -269,6 +269,8 @@ int camel_folder_get_message_count (CamelFolder *folder); int camel_folder_get_unread_message_count (CamelFolder *folder); +int camel_folder_get_deleted_message_count (CamelFolder *folder); + GPtrArray * camel_folder_get_summary (CamelFolder *folder); void camel_folder_free_summary (CamelFolder *folder, GPtrArray *array); -- cgit v1.2.3