* check for a valid foldername
[modest] / src / modest-mail-operation.h
index 5275270..ee25fa1 100644 (file)
@@ -32,6 +32,7 @@
 
 #include <tny-transport-account.h>
 #include <tny-folder-store.h>
+#include <widgets/modest-msg-edit-window.h>
 
 G_BEGIN_DECLS
 
@@ -75,20 +76,21 @@ typedef enum {
 } ModestMailOperationTypeOperation;
 
 /**
- * ErroCheckingAsyncUserCallback:
+ * ErrorCheckingAsyncUserCallback:
  *
- * @obj: a #GObject generic object which has created current mail operation.
+ * @mail_op: the 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);
+typedef void (*ErrorCheckingUserCallback) (ModestMailOperation *mail_op, gpointer user_data);
 
 /**
  * GetMsgAsyncUserCallback:
  *
- * @obj: a #GObject generic object which has created current mail operation.
+ * @mail_op: the current #ModestMailOperation.
+ * @header: a #TnyHeader summary item.
  * @msg: a #TnyMsg message retrieved by async operation.
  * @user_data: generic data passed to user defined function.
  *
@@ -102,6 +104,18 @@ typedef void (*GetMsgAsyncUserCallback) (ModestMailOperation *mail_op,
                                         gpointer user_data);
 
 /**
+ * GetMimePartSizeCallback:
+ *
+ * @mail_op: the current #ModestMailOperation.
+ * @size: size of the attachment
+ * @user_data: generic data passed to user defined function.
+ *
+ */
+typedef void (*GetMimePartSizeCallback) (ModestMailOperation *mail_op, 
+                                        gssize size,
+                                        gpointer user_data);
+
+/**
  * XferMsgAsynUserCallback:
  *
  * @obj: a #GObject generic object which has created current mail operation.
@@ -114,14 +128,46 @@ typedef void (*GetMsgAsyncUserCallback) (ModestMailOperation *mail_op,
 typedef void (*XferMsgsAsynUserCallback) (const GObject *obj, gpointer user_data);
 
 
+/**
+ * RefreshAsyncUserCallback:
+ *
+ * @mail_op: the current #ModestMailOperation.
+ * @folder: a #TnyFolder which has been refreshed .
+ * @user_data: generic data passed to user defined function.
+ *
+ * This function will be called after refresh_folder_async_cb private function, which is
+ * used as tinymail operation callback. The private function fills private 
+ * fields of mail operation and calls user defined callback if it exists.
+ */
+typedef void (*RefreshAsyncUserCallback) (ModestMailOperation *mail_op, 
+                                         TnyFolder *folder, 
+                                         gpointer user_data);
+
+/**
+ * UpdateAccountCallback:
+ *
+ * @obj: a #GObject generic object which has created current mail operation.
+ * @new_messages: the amount of new messages received
+ * @user_data: generic data passed to user defined function.
+ *
+ * This is the callback of the update_account operation. It informs
+ * the caller about the amount of new messages that have been
+ * downloaded
+ */
+typedef void (*UpdateAccountCallback) (ModestMailOperation *self, 
+                                      gint new_messages,
+                                      gpointer user_data);
+
 /* This struct represents the internal state of a mail operation in a
    given time */
 typedef struct {
        guint      done;
        guint      total;
+       gdouble    bytes_done;
+       gdouble    bytes_total;
        gboolean   finished;
        ModestMailOperationStatus        status;
-       ModestMailOperationTypeOperation op_type;               
+       ModestMailOperationTypeOperation op_type;
 } ModestMailOperationState;
 
 
@@ -165,13 +211,15 @@ ModestMailOperation*    modest_mail_operation_new     (ModestMailOperationTypeOp
  **/
 ModestMailOperation*    modest_mail_operation_new_with_error_handling     (ModestMailOperationTypeOperation op_type,
                                                                           GObject *source,
-                                                                          ErrorCheckingUserCallback error_handler);
+                                                                          ErrorCheckingUserCallback error_handler,
+                                                                          gpointer user_data);
 /**
  * modest_mail_operation_execute_error_handler
  * @self: a #ModestMailOperation
  * 
- * Executes error handler, if it exists, passing @self objsect as
- * user_data argument of error handling function. 
+ * Executes error handler if exists. The error handler is the one that
+ * MUST free the user data passed to the
+ * modest_mail_operation_new_with_error_handling constructor
  **/
 void
 modest_mail_operation_execute_error_handler (ModestMailOperation *self);
@@ -231,6 +279,7 @@ void    modest_mail_operation_send_mail       (ModestMailOperation *self,
  * modest_mail_operation_send_new_mail:
  * @self: a #ModestMailOperation
  * @transport_account: a non-NULL #TnyTransportAccount
+ * @draft_msg: a #TnyMsg of the origin draft message, if any
  * @from: the email address of the mail sender
  * @to: a non-NULL email address of the mail receiver
  * @cc: a comma-separated list of email addresses where to send a carbon copy
@@ -248,6 +297,7 @@ void    modest_mail_operation_send_mail       (ModestMailOperation *self,
   **/
 void    modest_mail_operation_send_new_mail   (ModestMailOperation *self,
                                               TnyTransportAccount *transport_account,
+                                              TnyMsg *draft_msg,
                                               const gchar *from,
                                               const gchar *to,
                                               const gchar *cc,
@@ -263,6 +313,8 @@ void    modest_mail_operation_send_new_mail   (ModestMailOperation *self,
  * modest_mail_operation_save_to_drafts:
  * @self: a #ModestMailOperation
  * @transport_account: a non-NULL #TnyTransportAccount
+ * @draft_msg: the previous draft message, in case it's an update
+ * to an existing draft.
  * @from: the email address of the mail sender
  * @to: a non-NULL email address of the mail receiver
  * @cc: a comma-separated list of email addresses where to send a carbon copy
@@ -277,18 +329,21 @@ void    modest_mail_operation_send_new_mail   (ModestMailOperation *self,
  * #TnyTransportAccount. This operation is synchronous, so the
  * #ModestMailOperation should not be added to any
  * #ModestMailOperationQueue
+ *
   **/
-void    modest_mail_operation_save_to_drafts   (ModestMailOperation *self,
-                                               TnyTransportAccount *transport_account,
-                                               const gchar *from,
-                                               const gchar *to,
-                                               const gchar *cc,
-                                               const gchar *bcc,
-                                               const gchar *subject,
-                                               const gchar *plain_body,
-                                               const gchar *html_body,
-                                               const GList *attachments_list,
-                                               TnyHeaderFlags priority_flags);
+void modest_mail_operation_save_to_drafts   (ModestMailOperation *self,
+                                            TnyTransportAccount *transport_account,
+                                            TnyMsg *draft_msg,
+                                            ModestMsgEditWindow *edit_window,
+                                            const gchar *from,
+                                            const gchar *to,
+                                            const gchar *cc,
+                                            const gchar *bcc,
+                                            const gchar *subject,
+                                            const gchar *plain_body,
+                                            const gchar *html_body,
+                                            const GList *attachments_list,
+                                            TnyHeaderFlags priority_flags);
 /**
  * modest_mail_operation_update_account:
  * @self: a #ModestMailOperation
@@ -316,7 +371,9 @@ void    modest_mail_operation_save_to_drafts   (ModestMailOperation *self,
  * Returns: TRUE if the mail operation could be started, or FALSE otherwise
  **/
 gboolean      modest_mail_operation_update_account (ModestMailOperation *self,
-                                                   const gchar *account_name);
+                                                   const gchar *account_name,
+                                                   UpdateAccountCallback callback,
+                                                   gpointer user_data);
 
 /* Functions that perform store operations */
 
@@ -373,6 +430,8 @@ void          modest_mail_operation_rename_folder  (ModestMailOperation *self,
  * @folder: a #TnyFolder
  * @parent: the new parent of the folder as #TnyFolderStore
  * @delete_original: wheter or not delete the original folder
+ * @user_callback: a #XferMsgsAsynUserCallback function to call after tinymail callback execution.
+ * @user_data: generic user data which will be passed to @user_callback function.
  * 
  * Sets the given @folder as child of a provided #TnyFolderStore. This
  * operation also transfers all the messages contained in the folder
@@ -387,7 +446,10 @@ void          modest_mail_operation_rename_folder  (ModestMailOperation *self,
 void          modest_mail_operation_xfer_folder    (ModestMailOperation *self,
                                                    TnyFolder *folder,
                                                    TnyFolderStore *parent,
-                                                   gboolean delete_original);
+                                                   gboolean delete_original,
+                                                   XferMsgsAsynUserCallback user_callback,
+                                                   gpointer user_data);
+                                                   
 
 /* Functions that performs msg operations */
 
@@ -549,11 +611,18 @@ gboolean  modest_mail_operation_cancel          (ModestMailOperation *self);
  * modest_mail_operation_refresh_folder
  * @self: a #ModestMailOperation
  * @folder: the #TnyFolder to refresh
+ * @user_callback: the #RefreshAsyncUserCallback function to be called
+ * after internal refresh async callback was being executed.
  * 
- * Refreshes the contents of a folder
+ * Refreshes the contents of a folder. After internal callback was executed, 
+ * and all interna mail operation field were filled, if exists, it calls an 
+ * user callback function to make UI operations which must be done after folder
+ * was refreshed.
  */
 void      modest_mail_operation_refresh_folder  (ModestMailOperation *self,
-                                                TnyFolder *folder);
+                                                TnyFolder *folder,
+                                                RefreshAsyncUserCallback user_callback,
+                                                gpointer user_data);
 
 guint     modest_mail_operation_get_id          (ModestMailOperation *self);