*
* The id for identifying the type of mail operation
*/
-typedef enum _ModestMailOperationId {
- MODEST_MAIL_OPERATION_ID_SEND,
- MODEST_MAIL_OPERATION_ID_RECEIVE,
- MODEST_MAIL_OPERATION_ID_OPEN,
- MODEST_MAIL_OPERATION_ID_DELETE,
- MODEST_MAIL_OPERATION_ID_INFO,
- MODEST_MAIL_OPERATION_ID_UNKNOWN,
-} ModestMailOperationId;
+typedef enum {
+ MODEST_MAIL_OPERATION_TYPE_SEND,
+ MODEST_MAIL_OPERATION_TYPE_RECEIVE,
+ MODEST_MAIL_OPERATION_TYPE_OPEN,
+ MODEST_MAIL_OPERATION_TYPE_DELETE,
+ MODEST_MAIL_OPERATION_TYPE_INFO,
+ MODEST_MAIL_OPERATION_TYPE_UNKNOWN,
+} ModestMailOperationTypeOperation;
-
-struct _ModestMailOperation {
- GObject parent;
- /* insert public members, if any */
-};
-
-struct _ModestMailOperationClass {
- GObjectClass parent_class;
-
- /* Signals */
- void (*progress_changed) (ModestMailOperation *self, gpointer user_data);
-};
+/**
+ * ErrorCheckingAsyncUserCallback:
+ *
+ * @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) (ModestMailOperation *mail_op, gpointer user_data);
/**
- * GetMsgAsynUserCallback:
+ * GetMsgAsyncUserCallback:
*
* @obj: a #GObject generic object which has created current mail operation.
* @msg: a #TnyMsg message retrieved by async operation.
* 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, TnyMsg *msg, gpointer user_data);
+typedef void (*GetMsgAsyncUserCallback) (ModestMailOperation *mail_op,
+ TnyHeader *header,
+ TnyMsg *msg,
+ gpointer user_data);
/**
* XferMsgAsynUserCallback:
typedef void (*XferMsgsAsynUserCallback) (const GObject *obj, gpointer user_data);
+/* This struct represents the internal state of a mail operation in a
+ given time */
+typedef struct {
+ guint done;
+ guint total;
+ gboolean finished;
+ ModestMailOperationStatus status;
+ ModestMailOperationTypeOperation op_type;
+} ModestMailOperationState;
+
+
+struct _ModestMailOperation {
+ GObject parent;
+ /* insert public members, if any */
+};
+
+struct _ModestMailOperationClass {
+ GObjectClass parent_class;
+
+ /* Signals */
+ void (*progress_changed) (ModestMailOperation *self, ModestMailOperationState *state, gpointer user_data);
+};
+
/* member functions */
GType modest_mail_operation_get_type (void) G_GNUC_CONST;
* Creates a new instance of class #ModestMailOperation, using parameters
* to initialize its private structure. @source parameter may be NULL.
**/
-ModestMailOperation* modest_mail_operation_new (ModestMailOperationId id,
+ModestMailOperation* modest_mail_operation_new (ModestMailOperationTypeOperation type,
GObject *source);
/**
- * modest_mail_operation_get_id
+ * 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 (ModestMailOperationTypeOperation op_type,
+ GObject *source,
+ ErrorCheckingUserCallback error_handler,
+ gpointer user_data);
+/**
+ * modest_mail_operation_execute_error_handler
+ * @self: a #ModestMailOperation
+ *
+ * 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);
+
+/**
+ * modest_mail_operation_get_type_operation
* @self: a #ModestMailOperation
*
- * Gets the private id field of mail operation. This id identifies
- * the class/type of mail operation.
+ * Gets the private op_type field of mail operation. This op_type
+ * identifies the class/type of mail operation.
**/
-ModestMailOperationId
-modest_mail_operation_get_id (ModestMailOperation *self);
+ModestMailOperationTypeOperation
+modest_mail_operation_get_type_operation (ModestMailOperation *self);
/**
* modest_mail_operation_is_mine
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.: */
/**
* 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 */
/**
* 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
**/
void modest_mail_operation_get_msg (ModestMailOperation *self,
TnyHeader *header,
- GetMsgAsynUserCallback user_callback,
+ GetMsgAsyncUserCallback user_callback,
gpointer user_data);
/**
* modest_mail_operation_get_msgs_full:
**/
void modest_mail_operation_get_msgs_full (ModestMailOperation *self,
TnyList *headers_list,
- GetMsgAsynUserCallback user_callback,
+ GetMsgAsyncUserCallback user_callback,
gpointer user_data,
GDestroyNotify notify);
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);
+guint modest_mail_operation_get_id (ModestMailOperation *self);
+
+guint modest_mail_operation_set_id (ModestMailOperation *self,
+ guint id);
G_END_DECLS