* Added some missing rules to the xfer_folder and xfer_msgs operations
[modest] / src / modest-mail-operation.h
index bf10382..3928049 100644 (file)
@@ -88,7 +88,18 @@ struct _ModestMailOperationClass {
 };
 
 /**
- * GetMsgAsynUserCallback:
+ * ErroCheckingAsyncUserCallback:
+ *
+ * @obj: a #GObject generic object which has created current mail operation.
+ * @user_data: generic data passed to user defined function.
+ *
+ * This function implements required actions to performs under error
+ * states.  
+ */
+typedef void (*ErrorCheckingUserCallback) (const GObject *obj, gpointer user_data);
+
+/**
+ * GetMsgAsyncUserCallback:
  *
  * @obj: a #GObject generic object which has created current mail operation.
  * @msg: a #TnyMsg message retrieved by async operation.
@@ -98,7 +109,10 @@ struct _ModestMailOperationClass {
  * used as tinymail operation callback. The private function fills private 
  * fields of mail operation and calls user defined callback if it exists.
  */
-typedef void (*GetMsgAsynUserCallback) (const GObject *obj, const TnyMsg *msg, gpointer user_data);
+typedef void (*GetMsgAsyncUserCallback) (ModestMailOperation *mail_op, 
+                                        TnyHeader *header, 
+                                        TnyMsg *msg, 
+                                        gpointer user_data);
 
 /**
  * XferMsgAsynUserCallback:
@@ -128,6 +142,31 @@ ModestMailOperation*    modest_mail_operation_new     (ModestMailOperationId id,
                                                       GObject *source);
 
 /**
+ * modest_mail_operation_new_with_error_handling:
+ * @id: a #ModestMailOperationId identification of operation type.
+ * @source: a #GObject which creates this new operation.
+ * @error_handler: a #ErrorCheckingUserCallback function to performs operations when 
+ * an error occurs.
+ * 
+ * Creates a new instance of class #ModestMailOperation, using parameters
+ * to initialize its private structure. @source parameter may be NULL. 
+ * @error_handler can not be NULL, but it will be returned an mail operation
+ * object without error handling capability.
+ **/
+ModestMailOperation*    modest_mail_operation_new_with_error_handling     (ModestMailOperationId id,
+                                                                          GObject *source,
+                                                                          ErrorCheckingUserCallback error_handler);
+/**
+ * modest_mail_operation_get_id
+ * @self: a #ModestMailOperation
+ * 
+ * Executes error handler, if it exists, passing @self objsect as
+ * user_data argument of error handling function. 
+ **/
+void
+modest_mail_operation_execute_error_handler (ModestMailOperation *self);
+
+/**
  * modest_mail_operation_get_id
  * @self: a #ModestMailOperation
  * 
@@ -150,6 +189,17 @@ gboolean
 modest_mail_operation_is_mine (ModestMailOperation *self, 
                               GObject *me);
 
+/**
+ * modest_mail_operation_get_source
+ * @self: a #ModestMailOperation
+ *
+ * returns a new reference to the object that created the mail
+ * operation passed to the constructor, or NULL if none. The caller
+ * must free the new reference
+ **/
+GObject *
+modest_mail_operation_get_source (ModestMailOperation *self);
+
 /* fill in other public functions, eg.: */
 
 /**
@@ -323,19 +373,12 @@ void          modest_mail_operation_rename_folder  (ModestMailOperation *self,
  * If @delete_original is TRUE this function moves the original
  * folder, if it is FALSE the it just copies it
  *
- * Returns: the newly transfered folder
  **/
-TnyFolder*    modest_mail_operation_xfer_folder    (ModestMailOperation *self,
+void          modest_mail_operation_xfer_folder    (ModestMailOperation *self,
                                                    TnyFolder *folder,
                                                    TnyFolderStore *parent,
                                                    gboolean delete_original);
 
-
-
-void    modest_mail_operation_xfer_folder_async    (ModestMailOperation *self,
-                                                   TnyFolder *folder, 
-                                                   TnyFolderStore *parent,
-                                                   gboolean delete_original);
 /* Functions that performs msg operations */
 
 /**
@@ -394,7 +437,7 @@ void          modest_mail_operation_remove_msg     (ModestMailOperation *self,
  * modest_mail_operation_get_msg:
  * @self: a #ModestMailOperation
  * @header_list: the #TnyHeader of the message to get
- * @user_callback: a #GetMsgAsynUserCallback function to call after tinymail callback execution.
+ * @user_callback: a #GetMsgAsyncUserCallback function to call after tinymail callback execution.
  * @user_data: generic user data which will be passed to @user_callback function.
  * 
  * Gets a message from header using an user defined @callback function
@@ -403,10 +446,10 @@ void          modest_mail_operation_remove_msg     (ModestMailOperation *self,
  **/
 void          modest_mail_operation_get_msg     (ModestMailOperation *self,
                                                 TnyHeader *header, 
-                                                GetMsgAsynUserCallback user_callback,
+                                                GetMsgAsyncUserCallback user_callback,
                                                 gpointer user_data);
 /**
- * modest_mail_operation_process_msg:
+ * modest_mail_operation_get_msgs_full:
  * @self: a #ModestMailOperation
  * @header_list: a #TnyList of #TnyHeader objects to get and process
  * @user_callback: a #TnyGetMsgCallback function to call after tinymail operation execution.
@@ -416,10 +459,11 @@ void          modest_mail_operation_get_msg     (ModestMailOperation *self,
  * pased as argument. This operation is asynchronous, so the
  * #ModestMailOperation should be added to #ModestMailOperationQueue
  **/
-void          modest_mail_operation_process_msg     (ModestMailOperation *self,
+void          modest_mail_operation_get_msgs_full   (ModestMailOperation *self,
                                                     TnyList *headers_list,
-                                                    GetMsgAsynUserCallback user_callback,
-                                                    gpointer user_data);
+                                                    GetMsgAsyncUserCallback user_callback,
+                                                    gpointer user_data,
+                                                    GDestroyNotify notify);
 
 /* Functions to control mail operations */
 /**
@@ -501,18 +545,6 @@ gboolean  modest_mail_operation_cancel          (ModestMailOperation *self);
 void      modest_mail_operation_refresh_folder  (ModestMailOperation *self,
                                                 TnyFolder *folder);
 
-/**
- *
- * This function is a workarround. It emits the progress-changed
- * signal. It's used by the mail operation queue to notify the
- * observers attached to that signal that the operation finished. We
- * need to use that for the moment because tinymail does not give us
- * the progress of a given operation very well. So we must delete it
- * when tinymail has that functionality and remove the call to it in
- * the queue as well.
- */
-void _modest_mail_operation_notify_end (ModestMailOperation *self);
-
 G_END_DECLS
 
 #endif /* __MODEST_MAIL_OPERATION_H__ */