From 7477373e6c399ba5ffaaeb84d4ecd687420d1549 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Dapena=20Paz?= Date: Thu, 4 Feb 2010 15:22:31 +0100 Subject: [PATCH] Now GetUnreadMessages dbus method tells also the number of unread messages per account. --- debian/control | 2 +- libmodest-dbus-client/configure.ac | 4 ++-- libmodest-dbus-client/debian/changelog | 6 ++++++ libmodest-dbus-client/src/libmodest-dbus-client.c | 16 ++++++++++++++++ libmodest-dbus-client/src/libmodest-dbus-client.h | 1 + src/dbus_api/modest-dbus-callbacks.c | 13 ++++++++++++- tests/dbus_api/test_get_unread_msgs.c | 3 ++- 7 files changed, 40 insertions(+), 5 deletions(-) diff --git a/debian/control b/debian/control index b69c4ec..9e01fcf 100644 --- a/debian/control +++ b/debian/control @@ -2,7 +2,7 @@ Source: modest Section: mail Priority: optional Maintainer: Moises Martinez -Build-Depends: debhelper (>= 4.0.0), cdbs, libmodest-dbus-client-dev (>= 3.2.4), gnome-common, gtkhtml3.14-dev, +Build-Depends: debhelper (>= 4.0.0), cdbs, libmodest-dbus-client-dev (>= 3.2.5), gnome-common, gtkhtml3.14-dev, libconic0-dev, libhildon1-dev, libdbus-1-dev, libdbus-glib-1-dev, libebook-dev, osso-af-settings, libedataserver-dev, libhildonnotify-dev, libgconf2-dev, libglib2.0-dev, libosso-gnomevfs2-dev, libhildonmime-dev, libtinymail-1.0-0-dev, libtinymail-camel-1.0-0-dev, libtinymail-maemo-1.0-0-dev, libtinymailui-1.0-0-dev, libtinymail-gnomevfs-1.0-0-dev, diff --git a/libmodest-dbus-client/configure.ac b/libmodest-dbus-client/configure.ac index bd7a5d7..8ea3790 100644 --- a/libmodest-dbus-client/configure.ac +++ b/libmodest-dbus-client/configure.ac @@ -26,12 +26,12 @@ # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -AC_INIT([libmodestclient],[3.2.4],[http://maemo.org]) +AC_INIT([libmodestclient],[3.2.5],[http://maemo.org]) AC_CONFIG_HEADERS([config.h]) m4_define([modest_api_major_version], [1]) m4_define([modest_api_minor_version], [99]) -m4_define([modest_api_micro_version], [5]) +m4_define([modest_api_micro_version], [6]) m4_define([modest_api_version], [modest_api_major_version.modest_api_minor_version.modest_api_micro_version]) diff --git a/libmodest-dbus-client/debian/changelog b/libmodest-dbus-client/debian/changelog index 50612e2..cc2627a 100644 --- a/libmodest-dbus-client/debian/changelog +++ b/libmodest-dbus-client/debian/changelog @@ -1,3 +1,9 @@ +libmodest-dbus-client (4:3.2.5-0) unstable; urgency=low + + * Now GetUnreadMessages tells the total number of unread messages per account. + + -- Moises Martinez Thu, 04 Feb 2010 15:21:06 +0100 + libmodest-dbus-client (4:3.2.4-0) unstable; urgency=low * Now GetUnreadMessages also tells the protocol of each account. diff --git a/libmodest-dbus-client/src/libmodest-dbus-client.c b/libmodest-dbus-client/src/libmodest-dbus-client.c index f7faf9e..a06b7f8 100644 --- a/libmodest-dbus-client/src/libmodest-dbus-client.c +++ b/libmodest-dbus-client/src/libmodest-dbus-client.c @@ -1003,6 +1003,22 @@ modest_dbus_message_iter_get_account_hits (DBusMessageIter *parent) goto out; } + /* unread count */ + arg_type = dbus_message_iter_get_arg_type (&child); + + if (arg_type != DBUS_TYPE_INT64) { + error = TRUE; + goto out; + } + + account_hits->unread_count = _dbus_iter_get_int64 (&child); + + res = dbus_message_iter_next (&child); + if (res == FALSE) { + error = TRUE; + goto out; + } + /* list of hits */ dbus_message_iter_recurse (&child, &traverse); account_hits->hits = NULL; diff --git a/libmodest-dbus-client/src/libmodest-dbus-client.h b/libmodest-dbus-client/src/libmodest-dbus-client.h index 5ffa393..398449d 100644 --- a/libmodest-dbus-client/src/libmodest-dbus-client.h +++ b/libmodest-dbus-client/src/libmodest-dbus-client.h @@ -226,6 +226,7 @@ typedef struct { gchar *account_id; gchar *account_name; gchar *store_protocol; + gint unread_count; GList *hits; } ModestAccountHits; diff --git a/src/dbus_api/modest-dbus-callbacks.c b/src/dbus_api/modest-dbus-callbacks.c index 62669a3..e5727f5 100644 --- a/src/dbus_api/modest-dbus-callbacks.c +++ b/src/dbus_api/modest-dbus-callbacks.c @@ -1644,6 +1644,7 @@ modest_dbus_req_handler(const gchar * interface, const gchar * method, DBUS_TYPE_STRING_AS_STRING \ DBUS_TYPE_STRING_AS_STRING \ DBUS_TYPE_STRING_AS_STRING \ + DBUS_TYPE_INT64_AS_STRING \ DBUS_TYPE_ARRAY_AS_STRING \ ACCOUNT_HIT_DBUS_TYPE \ DBUS_STRUCT_END_CHAR_AS_STRING @@ -1905,6 +1906,7 @@ typedef struct { gchar *account_name; gchar *store_protocol; gchar *mailbox_id; + gint unread_count; GList *header_list; } AccountHits; @@ -1929,6 +1931,7 @@ static void return_results (GetUnreadMessagesHelper *helper) const char *account_id; const char *account_name; const char *store_protocol; + gint64 unread_count; DBusMessageIter ah_struct_iter; DBusMessageIter sh_array_iter; GList *result_node; @@ -1940,6 +1943,7 @@ static void return_results (GetUnreadMessagesHelper *helper) account_id = ah->account_id; account_name = ah->account_name; store_protocol = ah->store_protocol; + unread_count = ah->unread_count; dbus_message_iter_append_basic (&ah_struct_iter, DBUS_TYPE_STRING, &account_id); @@ -1949,6 +1953,9 @@ static void return_results (GetUnreadMessagesHelper *helper) dbus_message_iter_append_basic (&ah_struct_iter, DBUS_TYPE_STRING, &store_protocol); + dbus_message_iter_append_basic (&ah_struct_iter, + DBUS_TYPE_INT64, + &unread_count); dbus_message_iter_open_container (&ah_struct_iter, DBUS_TYPE_ARRAY, @@ -2022,11 +2029,13 @@ static void get_unread_messages_get_headers_cb (TnyFolder *self, const gchar *bar; ModestProtocolType store_protocol_type; ModestProtocol *store_protocol; + gint unread_count; acc_iterator = tny_list_create_iterator (helper->accounts_list); account = TNY_ACCOUNT (tny_iterator_get_current (acc_iterator)); headers_iterator = tny_list_create_iterator (headers); + unread_count = 0; while (!tny_iterator_is_done (headers_iterator)) { TnyHeader *header; TnyHeaderFlags flags; @@ -2034,7 +2043,8 @@ static void get_unread_messages_get_headers_cb (TnyFolder *self, header = TNY_HEADER (tny_iterator_get_current (headers_iterator)); flags = tny_header_get_flags (header); if (!(flags & TNY_HEADER_FLAG_SEEN)) { - result_list = g_list_insert_sorted (result_list, g_object_ref (header), (GCompareFunc) headers_cmp); + unread_count++; + result_list = g_list_insert_sorted (result_list, g_object_ref (header), (GCompareFunc) headers_cmp); if (members_count == helper->unread_msgs_count) { g_object_unref (result_list->data); result_list = g_list_delete_link (result_list, result_list); @@ -2057,6 +2067,7 @@ static void get_unread_messages_get_headers_cb (TnyFolder *self, account_hits->store_protocol = g_strdup (modest_protocol_get_name (store_protocol)); account_hits->header_list = result_list; account_hits->mailbox_id = NULL; + account_hits->unread_count = unread_count; folder_id = tny_folder_get_id (self); bar = g_strstr_len (folder_id, -1, "/"); diff --git a/tests/dbus_api/test_get_unread_msgs.c b/tests/dbus_api/test_get_unread_msgs.c index 3d741a0..2246c7f 100644 --- a/tests/dbus_api/test_get_unread_msgs.c +++ b/tests/dbus_api/test_get_unread_msgs.c @@ -42,7 +42,8 @@ int main (int argc, char *argv[]) ModestAccountHits *hits = (ModestAccountHits *) iter->data; GList *header_node; - g_print ("Account: id: %s name: %s protocol: %s\n", hits->account_id, hits->account_name, hits->store_protocol); + g_print ("Account: id: %s name: %s protocol: %s unread: %d\n", hits->account_id, hits->account_name, + hits->store_protocol, (gint32) hits->unread_count); for (header_node = hits->hits; header_node != NULL; header_node = g_list_next (header_node)) { ModestGetUnreadMessagesHit *hit = (ModestGetUnreadMessagesHit *) header_node->data; -- 1.7.9.5