Do ignore empty recipients when checking names
[modest] / src / modest-mail-operation-queue.h
index 54972df..9f0cd25 100644 (file)
@@ -45,6 +45,11 @@ G_BEGIN_DECLS
 #define MODEST_IS_MAIL_OPERATION_QUEUE_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE((klass),MODEST_TYPE_MAIL_OPERATION_QUEUE))
 #define MODEST_MAIL_OPERATION_QUEUE_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS((obj),MODEST_TYPE_MAIL_OPERATION_QUEUE,ModestMailOperationQueueClass))
 
+typedef enum _ModestMailOperationQueueNotification {
+       MODEST_MAIL_OPERATION_QUEUE_OPERATION_ADDED,
+       MODEST_MAIL_OPERATION_QUEUE_OPERATION_REMOVED
+} ModestMailOperationQueueNotification;
+
 typedef struct _ModestMailOperationQueue      ModestMailOperationQueue;
 typedef struct _ModestMailOperationQueueClass ModestMailOperationQueueClass;
 
@@ -54,24 +59,113 @@ struct _ModestMailOperationQueue {
 
 struct _ModestMailOperationQueueClass {
        GObjectClass parent_class;
+
+       /* Signals */
+       void (*queue_changed) (ModestMailOperationQueue *self, 
+                              ModestMailOperation *mail_op,
+                              ModestMailOperationQueueNotification type);
+
+       void (*queue_empty) (ModestMailOperationQueue *self);
 };
 
+
 /* member functions */
 GType                   modest_mail_operation_queue_get_type      (void) G_GNUC_CONST;
 
-ModestMailOperationQueue *    modest_mail_operation_queue_get_instance  (void);
+ModestMailOperationQueue *    modest_mail_operation_queue_new  (void);
 
+/**
+ * modest_mail_operation_queue_add:
+ * @op_queue: a #ModestMailOperationQueue
+ * @mail_op: the #ModestMailOperation that will be added to the queue
+ * 
+ * Adds a mail operation at the end of the queue. It also adds a
+ * reference to the mail operation so the caller could free it
+ **/
 void    modest_mail_operation_queue_add        (ModestMailOperationQueue *op_queue, 
                                                ModestMailOperation *mail_op);
 
+/**
+ * modest_mail_operation_queue_remove:
+ * @op_queue: a #ModestMailOperationQueue
+ * @mail_op: the #ModestMailOperation that will be removed from the queue
+ * 
+ * Removes a mail operation from the queue. This method does not free
+ * the mail operation
+ **/
 void    modest_mail_operation_queue_remove     (ModestMailOperationQueue *op_queue, 
                                                ModestMailOperation *mail_op);
-
+/**
+ * modest_mail_operation_queue_num_elements:
+ * @op_queue:  a #ModestMailOperationQueue
+ * 
+ * Gets the numeber of elements stored in #ModestMailOperationQueue.
+ **/
+guint 
+modest_mail_operation_queue_num_elements (ModestMailOperationQueue *self);
+
+/**
+ * modest_mail_operation_queue_cancel:
+ * @op_queue:  a #ModestMailOperationQueue
+ * @mail_op:  the #ModestMailOperation that will be canceled
+ * 
+ * Cancels a #ModestMailOperation if it's not finished and removes it
+ * from the queue
+ **/
 void    modest_mail_operation_queue_cancel     (ModestMailOperationQueue *op_queue, 
                                                ModestMailOperation *mail_op);
-
+/**
+ * modest_mail_operation_queue_cancel_all:
+ * @op_queue:  a #ModestMailOperationQueue
+ *
+ * Cancels all the unfinished #ModestMailOperation of the queue
+ **/
 void    modest_mail_operation_queue_cancel_all (ModestMailOperationQueue *op_queue);
 
+/**
+ * modest_mail_operation_queue_get_by_source:
+ * @op_queue:  a #ModestMailOperationQueue
+ * @source: the source of the operations
+ *
+ * Returns a list with the #ModestMailOperation that have the given
+ * source. Each #ModestMailOperation is getting a new reference so you
+ * MUST unref it when done
+ **/
+GSList* modest_mail_operation_queue_get_by_source (ModestMailOperationQueue *op_queue, GObject *source);
+
+
+/**
+ * modest_mail_operation_queue_queue_to_string:
+ * @op_queue:  a #ModestMailOperationQueue
+ *
+ * Returns a string representation of the operation queue (for debugging)
+ *
+ * Returns: a newly allocated string, or NULL in case of error
+ **/
+gchar* modest_mail_operation_queue_to_string (ModestMailOperationQueue *self);
+
+/**
+ * modest_mail_operation_queue_set_running_shutdown:
+ * @self: a #ModestMailOperationQueue
+ *
+ * Mark the queue as running the final sync.
+ *
+ */
+void
+modest_mail_operation_queue_set_running_shutdown (ModestMailOperationQueue *self);
+
+/**
+ * modest_mail_operation_queue_running_shutdown:
+ * @self: a #ModestMailOperationQueue
+ *
+ * Is the last operation queued a shutdown operation?
+ *
+ * Returns: a #gboolean, %TRUE if the last queued operation is
+ * a shutdown, %FALSE otherwise
+ */
+gboolean
+modest_mail_operation_queue_running_shutdown (ModestMailOperationQueue *self);
+
 G_END_DECLS
 
 #endif /* __MODEST_MAIL_OPERATION_QUEUE_H__ */