* src/modest-mail-operation.c:
[modest] / src / modest-mail-operation-queue.c
index 02b1f1a..d22917f 100644 (file)
@@ -292,7 +292,9 @@ modest_mail_operation_queue_remove (ModestMailOperationQueue *self,
 
        /* Check errors */
        status = modest_mail_operation_get_status (mail_op);
-       if (status != MODEST_MAIL_OPERATION_STATUS_SUCCESS) {
+       if (status == MODEST_MAIL_OPERATION_STATUS_CANCELED) {
+               g_warning ("%s: operation canceled \n", __FUNCTION__);
+       } else if (status != MODEST_MAIL_OPERATION_STATUS_SUCCESS) {
                /* This is a sanity check. Shouldn't be needed, but
                   prevent possible application crashes. It's useful
                   also for detecting mail operations with invalid
@@ -300,13 +302,10 @@ modest_mail_operation_queue_remove (ModestMailOperationQueue *self,
                if (modest_mail_operation_get_error (mail_op) != NULL) {
                        modest_mail_operation_execute_error_handler (mail_op);
                } else {
-                       if (status == MODEST_MAIL_OPERATION_STATUS_CANCELED) 
-                               g_warning ("%s: operation canceled \n", __FUNCTION__);
-                       else
-                               g_warning ("%s: possible error in a mail operation " \
-                                          "implementation. The status is not successful " \
-                                          "but the mail operation does not have any " \
-                                          "error set\n", __FUNCTION__);
+                       g_warning ("%s: possible error in a mail operation " \
+                                  "implementation. The status is not successful " \
+                                  "but the mail operation does not have any " \
+                                  "error set\n", __FUNCTION__);
                }
        }
 
@@ -441,3 +440,34 @@ modest_mail_operation_queue_get_by_source (
        
        return found_operations;
 }
+
+static void
+accumulate_mail_op_strings (ModestMailOperation *op, gchar **str)
+{
+       *str = g_strdup_printf ("%s\n%s", *str, modest_mail_operation_to_string (op));
+}
+
+
+gchar*
+modest_mail_operation_queue_to_string (ModestMailOperationQueue *self)
+{
+       gchar *str;
+       guint len;
+       ModestMailOperationQueuePrivate *priv;
+       
+       g_return_val_if_fail (MODEST_IS_MAIL_OPERATION_QUEUE (self), NULL);
+       
+       priv = MODEST_MAIL_OPERATION_QUEUE_GET_PRIVATE(self);
+
+       len = g_queue_get_length (priv->op_queue);
+       str = g_strdup_printf ("mail operation queue (%02d)\n-------------------------", len);
+       if (len == 0)
+               str = g_strdup_printf ("%s\n%s", str, "<empty>");
+       else {
+               g_mutex_lock (priv->queue_lock);
+               g_queue_foreach (priv->op_queue, (GFunc)accumulate_mail_op_strings, &str);
+               g_mutex_unlock (priv->queue_lock);
+       }
+               
+       return str;
+}