gpointer user_data;
} GetMsgAsyncHelper;
+typedef struct _RefreshAsyncHelper {
+ ModestMailOperation *mail_op;
+ RefreshAsyncUserCallback user_callback;
+ gpointer user_data;
+} RefreshAsyncHelper;
+
typedef struct _XFerMsgAsyncHelper
{
ModestMailOperation *mail_op;
priv = MODEST_MAIL_OPERATION_GET_PRIVATE (self);
/* cancel current operation in account */
- tny_account_cancel (priv->account);
+ //tny_account_cancel (priv->account);
did_a_cancel = TRUE;
/* Set priority flags in message */
header = tny_msg_get_header (new_msg);
- tny_header_set_flags (header, priority_flags);
+ if (priority_flags != 0)
+ tny_header_set_flags (header, priority_flags);
/* Call mail operation */
modest_mail_operation_send_mail (self, transport_account, new_msg);
tny_iterator_next (iter);
}
g_object_unref (iter);
- } else /* If it's headers only, then just poke the folder status (this will update the unread and
- * total count of folder observers, like the folder list model*/
- tny_folder_poke_status (TNY_FOLDER (folder));
+ }
tny_folder_remove_observer (TNY_FOLDER (folder), TNY_FOLDER_OBSERVER (observer));
g_object_unref (observer);
GError **error,
gpointer user_data)
{
- ModestMailOperation *self;
- ModestMailOperationPrivate *priv;
+ RefreshAsyncHelper *helper = NULL;
+ ModestMailOperation *self = NULL;
+ ModestMailOperationPrivate *priv = NULL;
- self = MODEST_MAIL_OPERATION (user_data);
+ helper = (RefreshAsyncHelper *) user_data;
+ self = helper->mail_op;
priv = MODEST_MAIL_OPERATION_GET_PRIVATE(self);
if (*error) {
priv->status = MODEST_MAIL_OPERATION_STATUS_SUCCESS;
out:
+ /* Call user defined callback, if it exists */
+ if (helper->user_callback)
+ helper->user_callback (priv->source, folder, helper->user_data);
+
/* Free */
+ g_object_unref (helper->mail_op);
+ g_slice_free (RefreshAsyncHelper, helper);
g_object_unref (folder);
/* Notify about operation end */
TnyStatus *status,
gpointer user_data)
{
- ModestMailOperation *self;
- ModestMailOperationPrivate *priv;
+ RefreshAsyncHelper *helper = NULL;
+ ModestMailOperation *self = NULL;
+ ModestMailOperationPrivate *priv = NULL;
ModestMailOperationState *state;
+ g_return_if_fail (user_data != NULL);
g_return_if_fail (status != NULL);
g_return_if_fail (status->code == TNY_FOLDER_STATUS_CODE_REFRESH);
- self = MODEST_MAIL_OPERATION (user_data);
+ helper = (RefreshAsyncHelper *) user_data;
+ self = helper->mail_op;
+ g_return_if_fail (MODEST_IS_MAIL_OPERATION(self));
+
priv = MODEST_MAIL_OPERATION_GET_PRIVATE(self);
priv->done = status->position;
void
modest_mail_operation_refresh_folder (ModestMailOperation *self,
- TnyFolder *folder)
+ TnyFolder *folder,
+ RefreshAsyncUserCallback user_callback,
+ gpointer user_data)
{
- ModestMailOperationPrivate *priv;
+ ModestMailOperationPrivate *priv = NULL;
+ RefreshAsyncHelper *helper = NULL;
priv = MODEST_MAIL_OPERATION_GET_PRIVATE(self);
/* Get account and set it into mail_operation */
priv->account = modest_tny_folder_get_account (folder);
+ /* Create the helper */
+ helper = g_slice_new0 (RefreshAsyncHelper);
+ helper->mail_op = g_object_ref(self);
+ helper->user_callback = user_callback;
+ helper->user_data = user_data;
+
/* Refresh the folder. TODO: tinymail could issue a status
updates before the callback call then this could happen. We
must review the design */
tny_folder_refresh_async (folder,
on_refresh_folder,
on_refresh_folder_status_update,
- self);
+ helper);
}
/**