}
void
+modest_mail_operation_send_mail (ModestMailOperation *self,
+ TnyTransportAccount *transport_account,
+ TnyMsg *msg)
+{
+ TnySendQueue *send_queue = NULL;
+ ModestMailOperationPrivate *priv = NULL;
+
+ priv = MODEST_MAIL_OPERATION_GET_PRIVATE (self);
+
+ if (!msg) {
+ priv->status = MODEST_MAIL_OPERATION_STATUS_FAILED;
+ modest_mail_operation_notify_end (self);
+ return;
+ }
+
+ if (priv->error && priv->error->code != MODEST_MAIL_OPERATION_ERROR_FILE_IO) {
+ priv->status = MODEST_MAIL_OPERATION_STATUS_FAILED;
+ modest_mail_operation_notify_end (self);
+ return;
+ }
+
+ /* Add message to send queue */
+ send_queue = TNY_SEND_QUEUE (modest_runtime_get_send_queue (transport_account, TRUE));
+ if (!TNY_IS_SEND_QUEUE(send_queue)) {
+ if (priv->error) {
+ g_error_free (priv->error);
+ priv->error = NULL;
+ }
+ g_set_error (&(priv->error), MODEST_MAIL_OPERATION_ERROR,
+ MODEST_MAIL_OPERATION_ERROR_ITEM_NOT_FOUND,
+ "modest: could not find send queue for account\n");
+ priv->status = MODEST_MAIL_OPERATION_STATUS_FAILED;
+ modest_mail_operation_notify_end (self);
+ return;
+ } else {
+ SendNewMailHelper *helper = g_slice_new (SendNewMailHelper);
+ helper->mail_op = g_object_ref (self);
+ helper->notify = TRUE;
+
+ /* Add the msg to the queue. The callback will free
+ the helper */
+ modest_tny_send_queue_set_requested_send_receive (MODEST_TNY_SEND_QUEUE (send_queue),
+ FALSE);
+ tny_send_queue_add_async (send_queue, msg, send_mail_on_added_to_outbox,
+ NULL, helper);
+ }
+
+}
+
+void
modest_mail_operation_send_new_mail (ModestMailOperation *self,
TnyTransportAccount *transport_account,
TnyMsg *draft_msg,
new_headers_iter = tny_list_create_iterator (((InternalFolderObserver *) info->inbox_observer)->new_headers);
if (!tny_iterator_is_done (new_headers_iter)) {
modest_platform_emit_folder_updated_signal (info->account_name, tny_folder_get_id (TNY_FOLDER (inbox)));
+ modest_account_mgr_set_has_new_mails (modest_runtime_get_account_mgr (),
+ info->account_name, TRUE);
}
while (!tny_iterator_is_done (new_headers_iter)) {
TnyHeader *header = NULL;
if (!remove_headers)
remove_headers = g_object_ref (headers);
+ /* Notify messages are "read" */
+ iter = tny_list_create_iterator (remove_headers);
+ while (!tny_iterator_is_done (iter)) {
+ gchar *msg_uid;
+ TnyHeader *header;
+
+ header = TNY_HEADER (tny_iterator_get_current (iter));
+ msg_uid = modest_tny_folder_get_header_unique_id (header);
+ if (msg_uid) {
+ modest_platform_emit_msg_read_changed_signal (msg_uid, TRUE);
+ g_free (msg_uid);
+ }
+ g_object_unref (header);
+ tny_iterator_next (iter);
+ }
+ g_object_unref (iter);
+
/* remove message from folder */
modest_mail_operation_notify_start (self);
tny_folder_remove_msgs_async (folder, remove_headers, remove_msgs_async_cb,
}
if (finished) {
+ TnyAccount *src_account;
+ TnyAccount *dest_account;
+
+ /* send the notification that the source folder might have changed */
+ src_account = modest_tny_folder_get_account (folder);
+ if (src_account) {
+ const gchar *src_folder_id;
+ const gchar *src_account_name;
+
+ src_folder_id = tny_folder_get_id (folder);
+ src_account_name =
+ modest_tny_account_get_parent_modest_account_name_for_server_account (src_account);
+ modest_platform_emit_folder_updated_signal (src_account_name, src_folder_id);
+ g_object_unref (src_account);
+ }
+ /* send the notification that the destination folder might have changed */
+ dest_account = modest_tny_folder_get_account (helper->dest_folder);
+ if (dest_account) {
+ const gchar *dest_folder_id;
+ const gchar *dest_account_name;
+
+ dest_folder_id = tny_folder_get_id (helper->dest_folder);
+ dest_account_name =
+ modest_tny_account_get_parent_modest_account_name_for_server_account (dest_account);
+ modest_platform_emit_folder_updated_signal (dest_account_name, dest_folder_id);
+ g_object_unref (dest_account);
+ }
+
/* Synchronize the source folder contents. This should
be done by tinymail but the camel_folder_sync it's
actually disabled in transfer_msgs_thread_clean