{
TnyMsg *new_msg = NULL;
TnyFolder *folder = NULL;
+ TnyHeader *header = NULL;
ModestMailOperationPrivate *priv = NULL;
g_return_if_fail (MODEST_IS_MAIL_OPERATION (self));
return;
}
- /* TODO: add priority handling. It's received in the priority_flags operator, and
- it should have effect in the sending operation */
+ /* Set priority flags in message */
+ header = tny_msg_get_header (new_msg);
+ tny_header_set_flags (header, priority_flags);
/* Call mail operation */
modest_mail_operation_send_mail (self, transport_account, new_msg);
folder = modest_tny_account_get_special_folder (TNY_ACCOUNT (transport_account), TNY_FOLDER_TYPE_DRAFTS);
if (folder) {
if (draft_msg != NULL) {
- TnyHeader *header = tny_msg_get_header (draft_msg);
+ header = tny_msg_get_header (draft_msg);
+ /* Note: This can fail (with a warning) if the message is not really already in a folder,
+ * because this function requires it to have a UID. */
tny_folder_remove_msg (folder, header, NULL);
g_object_unref (header);
}
{
TnyMsg *msg = NULL;
TnyFolder *folder = NULL;
+ TnyHeader *header = NULL;
ModestMailOperationPrivate *priv = NULL;
g_return_if_fail (MODEST_IS_MAIL_OPERATION (self));
goto end;
}
+ /* add priority flags */
+ header = tny_msg_get_header (msg);
+ tny_header_set_flags (header, priority_flags);
+
folder = modest_tny_account_get_special_folder (TNY_ACCOUNT (transport_account), TNY_FOLDER_TYPE_DRAFTS);
if (!folder) {
g_set_error (&(priv->error), MODEST_MAIL_OPERATION_ERROR,
}
if (draft_msg != NULL) {
- TnyHeader *header = tny_msg_get_header (draft_msg);
+ header = tny_msg_get_header (draft_msg);
tny_folder_remove_msg (folder, header, NULL);
g_object_unref (header);
}
return -1;
}
+static gboolean
+set_last_updated_idle (gpointer data)
+{
+ /* It does not matter if the time is not exactly the same than
+ the time when this idle was called, it's just an
+ approximation and it won't be very different */
+ modest_account_mgr_set_int (modest_runtime_get_account_mgr (),
+ (gchar *) data,
+ MODEST_ACCOUNT_LAST_UPDATED,
+ time(NULL),
+ TRUE);
+
+ return FALSE;
+}
+
static gpointer
update_account_thread (gpointer thr_user_data)
{
ModestMailOperationPrivate *priv;
ModestTnySendQueue *send_queue;
+
info = (UpdateAccountInfo *) thr_user_data;
priv = MODEST_MAIL_OPERATION_GET_PRIVATE(info->mail_op);
* We use the blocking version, because we are already in a separate
* thread.
*/
- tny_folder_refresh (TNY_FOLDER (folder), &(priv->error));
- /* If the retrieve type is headers only do nothing more */
if (!g_ascii_strcasecmp (info->retrieve_type, MODEST_ACCOUNT_RETRIEVE_VALUE_MESSAGES) ||
!g_ascii_strcasecmp (info->retrieve_type, MODEST_ACCOUNT_RETRIEVE_VALUE_MESSAGES_AND_ATTACHMENTS)) {
TnyIterator *iter;
+ /* If the retrieve type is full messages, refresh and get the messages */
+ tny_folder_refresh (TNY_FOLDER (folder), &(priv->error));
+
iter = tny_list_create_iterator (observer->new_headers);
while (!tny_iterator_is_done (iter)) {
TnyHeader *header = TNY_HEADER (tny_iterator_get_current (iter));
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);
priv->status = MODEST_MAIL_OPERATION_STATUS_SUCCESS;
/* Update the last updated key */
- modest_account_mgr_set_int (modest_runtime_get_account_mgr (),
- tny_account_get_id (TNY_ACCOUNT (info->account)),
- MODEST_ACCOUNT_LAST_UPDATED,
- time(NULL),
- TRUE);
+ g_idle_add_full (G_PRIORITY_HIGH_IDLE,
+ set_last_updated_idle,
+ g_strdup (tny_account_get_id (TNY_ACCOUNT (info->account))),
+ (GDestroyNotify) g_free);
}
out:
/* Get the Modest account */
modest_account = (TnyStoreAccount *)
- modest_tny_account_store_get_tny_account_by_account (modest_runtime_get_account_store (),
+ modest_tny_account_store_get_server_account (modest_runtime_get_account_store (),
account_name,
TNY_ACCOUNT_TYPE_STORE);