+
+static gboolean
+_send_receive_in_progress (ModestWindow *win)
+{
+ ModestMailOperationQueue *queue;
+ GSList *op_list, *node;
+ gboolean found_send_receive;
+
+ queue = modest_runtime_get_mail_operation_queue ();
+ op_list = modest_mail_operation_queue_get_by_source (queue, G_OBJECT (win));
+
+ found_send_receive = FALSE;
+ for (node = op_list; node != NULL; node = g_slist_next (node)) {
+ ModestMailOperation *op;
+
+ op = (ModestMailOperation *) node->data;
+ if (modest_mail_operation_get_type_operation (op) == MODEST_MAIL_OPERATION_TYPE_SEND_AND_RECEIVE) {
+ found_send_receive = TRUE;
+ break;
+ }
+ }
+
+ g_slist_foreach (op_list, (GFunc) g_object_unref, NULL);
+ g_slist_free (op_list);
+
+ return found_send_receive;
+}
+
+static gboolean
+_msgs_send_in_progress (void)
+{
+ ModestCacheMgr *cache_mgr;
+ GHashTable *send_queue_cache;
+ ModestTnySendQueue *send_queue;
+ GSList *send_queues = NULL, *node = NULL;
+ gboolean found = FALSE;
+
+ 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 && !found; node = g_slist_next (node)) {
+ send_queue = MODEST_TNY_SEND_QUEUE (node->data);
+
+ /* Check if msg uid is being processed inside send queue */
+ if (modest_tny_send_queue_sending_in_progress (send_queue)) {
+ found = TRUE;
+ break;
+ }
+ }
+
+ g_slist_free (send_queues);
+
+ return found;
+}