diff options
author | Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> | 2009-12-22 18:57:18 -0500 |
---|---|---|
committer | Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> | 2010-02-18 14:35:55 -0500 |
commit | 530502c43f4b9aceae07d6c98b1e6173fad64475 (patch) | |
tree | 25c6a095bfb8fe3d7fbf81430a8bc3187284ff94 /src | |
parent | 776b4707861cfd54d8b506638c30bfeadd63d4cd (diff) | |
download | telepathy-gabble-530502c43f4b9aceae07d6c98b1e6173fad64475.tar.gz |
Implemented getter for UnreadMails
Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
Diffstat (limited to 'src')
-rw-r--r-- | src/conn-mail-notif.c | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/src/conn-mail-notif.c b/src/conn-mail-notif.c index 4f278a19d..03b2b2d8c 100644 --- a/src/conn-mail-notif.c +++ b/src/conn-mail-notif.c @@ -375,7 +375,7 @@ store_unread_mails (GabbleConnection *conn, WockyXmppNode *mailbox) } static void -get_unread_mails (GObject *source_object, GAsyncResult *res, gpointer user_data) +query_unread_mails_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) { GError *error = NULL; gchar *result_str; @@ -422,7 +422,7 @@ update_unread_mails (GabbleConnection *conn) WOCKY_NODE_XMLNS, NS_GOOGLE_MAIL_NOTIFY, WOCKY_NODE_END, WOCKY_STANZA_END); - wocky_porter_send_iq_async (porter, query, NULL, get_unread_mails, conn); + wocky_porter_send_iq_async (porter, query, NULL, query_unread_mails_cb, conn); g_object_unref (query); } @@ -529,6 +529,22 @@ conn_mail_notif_iface_init (gpointer g_iface, gpointer iface_data) #undef IMPLEMENT } +static GPtrArray* +get_unread_mails (GabbleConnection *conn) +{ + GPtrArray *mails = g_ptr_array_new (); + GHashTableIter iter; + gpointer value; + g_hash_table_iter_init (&iter, conn->unread_mails); + while (g_hash_table_iter_next (&iter, NULL, &value)) + { + GHashTable *mail = value; + g_ptr_array_add (mails, mail); + } + + return mails; +} + void conn_mail_notif_properties_getter (GObject *object, GQuark interface, @@ -563,9 +579,13 @@ conn_mail_notif_properties_getter (GObject *object, else if (name == prop_quarks[PROP_METHOD]) g_value_set_uint (value, GABBLE_HTTP_METHOD_GET); else if (name == prop_quarks[PROP_POST_DATA]) - g_value_set_static_boxed (value, &empty_array); /* TODO */ + g_value_set_static_boxed (value, &empty_array); else if (name == prop_quarks[PROP_UNREAD_MAILS]) - g_value_set_boxed (value, &empty_array); /* TODO */ + { + GPtrArray *mails = get_unread_mails(conn); + g_value_set_boxed (value, mails); + g_ptr_array_free (mails, TRUE); + } else g_assert (!"Unkown mail notification property, please file a bug."); } |