+
+void
+fill_list_of_caches (gpointer key, gpointer value, gpointer userdata)
+{
+ GSList **send_queues = (GSList **) userdata;
+ *send_queues = g_slist_prepend (*send_queues, value);
+}
+
+static ModestTnySendQueueStatus
+get_status_of_uid (const gchar *uid)
+{
+ ModestCacheMgr *cache_mgr;
+ GHashTable *send_queue_cache;
+ GSList *send_queues = NULL, *node;
+ /* get_msg_status returns suspended by default, so we want to detect changes */
+ ModestTnySendQueueStatus status = MODEST_TNY_SEND_QUEUE_SUSPENDED;
+
+ cache_mgr = modest_runtime_get_cache_mgr ();
+ send_queue_cache = modest_cache_mgr_get_cache (cache_mgr,
+ MODEST_CACHE_MGR_CACHE_TYPE_SEND_QUEUE);
+
+ g_hash_table_foreach (send_queue_cache, (GHFunc) fill_list_of_caches, &send_queues);
+
+ for (node = send_queues; node != NULL; node = g_slist_next (node)) {
+ ModestTnySendQueueStatus queue_status = modest_tny_send_queue_get_msg_status (
+ MODEST_TNY_SEND_QUEUE (node->data), uid);
+ if (queue_status != MODEST_TNY_SEND_QUEUE_SUSPENDED)
+ status = queue_status;
+ break;
+ }
+ g_slist_free (send_queues);
+ return status;
+}
+
+static const gchar *
+get_status_string (ModestTnySendQueueStatus status)
+{
+ switch (status) {
+ case MODEST_TNY_SEND_QUEUE_WAITING:
+ return _("mcen_li_outbox_waiting");
+ break;
+ case MODEST_TNY_SEND_QUEUE_SENDING:
+ return _("mcen_li_outbox_sending");
+ break;
+ case MODEST_TNY_SEND_QUEUE_SUSPENDED:
+ return _("mcen_li_outbox_suspended");
+ break;
+ case MODEST_TNY_SEND_QUEUE_FAILED:
+ return _("mcen_li_outbox_failed");
+ break;
+ default:
+ return "";
+ break;
+ }
+}
+