#include <tny-simple-list.h>
#include <camel/camel-stream-mem.h>
#include <glib/gi18n.h>
-
+#include <modest-tny-account.h>
+#include <modest-tny-send-queue.h>
+#include <modest-runtime.h>
#include "modest-text-utils.h"
-#include "modest-tny-msg-actions.h"
+#include "modest-tny-msg.h"
#include "modest-tny-platform-factory.h"
#include "modest-marshal.h"
#include "modest-formatter.h"
TnyFolder *folder,
gboolean delete_original);
-static TnyFolder * modest_mail_operation_find_trash_folder (ModestMailOperation *self,
- TnyStoreAccount *store_account);
-
-
enum _ModestMailOperationSignals
{
PROGRESS_CHANGED_SIGNAL,
TnyTransportAccount *transport_account,
TnyMsg* msg)
{
+ TnySendQueue *send_queue;
+
g_return_if_fail (MODEST_IS_MAIL_OPERATION (self));
g_return_if_fail (TNY_IS_TRANSPORT_ACCOUNT (transport_account));
- tny_transport_account_send (transport_account, msg, NULL); /* FIXME */
+ send_queue = TNY_SEND_QUEUE (modest_runtime_get_send_queue (transport_account));
+ if (!TNY_IS_SEND_QUEUE(send_queue))
+ g_printerr ("modest: could not find send queue for account\n");
+ else
+ tny_send_queue_add (send_queue, msg);
}
void
add_attachments (new_msg, (GList*) attachments_list);
/* Send mail */
- tny_transport_account_send (transport_account, new_msg, NULL); /* FIXME */
+ modest_mail_operation_send_mail (self, transport_account, new_msg);
/* Clean */
g_object_unref (header);
/* Get body from original msg. Always look for the text/plain
part of the message to create the reply/forwarded mail */
header = tny_msg_get_header (msg);
- body = modest_tny_msg_actions_find_body_part (msg, FALSE);
+ body = modest_tny_msg_find_body_part (msg, FALSE);
/* TODO: select the formatter from account prefs */
formatter = modest_formatter_new ("text/plain");
break;
}
}
- g_object_unref (G_OBJECT (formatter));
-
+ g_object_unref (G_OBJECT(formatter));
+ g_object_unref (G_OBJECT(body));
+
/* Fill the header */
fact = modest_tny_platform_factory_get_instance ();
new_header = TNY_HEADER (tny_platform_factory_new_header (fact));
tny_header_set_replyto (new_header, from);
/* Change the subject */
- new_subject =
- (gchar *) modest_text_utils_derived_subject (tny_header_get_subject(header),
+ new_subject =
+ (gchar *) modest_text_utils_derived_subject (tny_header_get_subject(header),
(is_reply) ? _("Re:") : _("Fwd:"));
tny_header_set_subject (new_header, (const gchar *) new_subject);
g_free (new_subject);
ModestMailOperationReplyType reply_type,
ModestMailOperationReplyMode reply_mode)
{
- TnyMsg *new_msg;
+ TnyMsg *new_msg = NULL;
TnyHeader *new_header, *header;
const gchar* reply_to;
gchar *new_cc = NULL;
header = tny_msg_get_header (msg);
new_header = tny_msg_get_header (new_msg);
reply_to = tny_header_get_replyto (header);
+
if (reply_to)
tny_header_set_to (new_header, reply_to);
else
/* Remove my own address from the cc list. TODO:
remove also the To: of the new message, needed due
to the new reply_to feature */
- new_cc = (gchar *)
- modest_text_utils_remove_address ((const gchar *) tmp->str,
+ new_cc = (gchar *)
+ modest_text_utils_remove_address ((const gchar *) tmp->str,
from);
/* FIXME: remove also the mails from the new To: */
tny_header_set_cc (new_header, new_cc);
g_object_unref (G_OBJECT (list));
g_slice_free (RefreshFolderAsyncHelper, helper);
} else {
- tny_folder_refresh_async (TNY_FOLDER (tny_iterator_get_current (helper->iter)),
- folder_refresh_cb,
+ TnyFolder *folder = TNY_FOLDER (tny_iterator_get_current (helper->iter));
+ tny_folder_refresh_async (folder, folder_refresh_cb,
status_update_cb,
helper);
+ g_object_unref (G_OBJECT(folder));
}
g_signal_emit (G_OBJECT (self), signals[PROGRESS_CHANGED_SIGNAL], 0, NULL);
}
ModestMailOperation *self;
ModestMailOperationPrivate *priv;
RefreshFolderAsyncHelper *helper;
-
+ TnyFolder *folder;
+
self = MODEST_MAIL_OPERATION (user_data);
priv = MODEST_MAIL_OPERATION_GET_PRIVATE (self);
helper->canceled = 0;
/* Async refresh folders */
- tny_folder_refresh_async (TNY_FOLDER (tny_iterator_get_current (helper->iter)),
- folder_refresh_cb,
- status_update_cb,
- helper);
+ folder = TNY_FOLDER (tny_iterator_get_current (helper->iter));
+ tny_folder_refresh_async (folder, folder_refresh_cb,
+ status_update_cb, helper);
+ g_object_unref (G_OBJECT(folder));
}
gboolean
/* Delete folder or move to trash */
if (remove_to_trash) {
TnyFolder *trash_folder;
-
- trash_folder = modest_mail_operation_find_trash_folder (self,
- TNY_STORE_ACCOUNT (folder_store));
-
+ trash_folder = modest_tny_account_get_special_folder (TNY_ACCOUNT(folder_store),
+ TNY_FOLDER_TYPE_TRASH);
/* TODO: error_handling */
- modest_mail_operation_move_folder (self,
- folder,
+ modest_mail_operation_move_folder (self, folder,
TNY_FOLDER_STORE (trash_folder));
} else {
tny_folder_store_remove_folder (folder_store, folder, NULL); /* FIXME */
/* Create the destination folder */
folder_name = tny_folder_get_name (folder);
- dest_folder = modest_mail_operation_create_folder (self,
- parent, folder_name);
+ dest_folder = modest_mail_operation_create_folder (self, parent, folder_name);
/* Transfer messages */
headers = TNY_LIST (tny_simple_list_new ());
iter = tny_list_create_iterator (folders);
while (!tny_iterator_is_done (iter)) {
-
child = TNY_FOLDER (tny_iterator_get_current (iter));
- modest_mail_operation_xfer_folder (self, child,
- TNY_FOLDER_STORE (dest_folder),
+ modest_mail_operation_xfer_folder (self, child, TNY_FOLDER_STORE (dest_folder),
delete_original);
tny_iterator_next (iter);
+ g_object_unref (G_OBJECT(child));
}
/* Delete source folder (if needed) */
}
-/* FIXME: this method should be rewritten when the policy for the
- Trash folder becomes clearer */
-static TnyFolder *
-modest_mail_operation_find_trash_folder (ModestMailOperation *self,
- TnyStoreAccount *store_account)
-{
- TnyList *folders;
- TnyIterator *iter;
- gboolean found;
- /*TnyFolderStoreQuery *query;*/
- TnyFolder *trash_folder;
-
- /* Look for Trash folder */
- folders = TNY_LIST (tny_simple_list_new ());
- tny_folder_store_get_folders (TNY_FOLDER_STORE (store_account),
- folders, NULL, NULL); /* FIXME */
- iter = tny_list_create_iterator (folders);
-
- found = FALSE;
- while (!tny_iterator_is_done (iter) && !found) {
-
- trash_folder = TNY_FOLDER (tny_iterator_get_current (iter));
- if (tny_folder_get_folder_type (trash_folder) == TNY_FOLDER_TYPE_TRASH)
- found = TRUE;
- else
- tny_iterator_next (iter);
- }
-
- /* Clean up */
- g_object_unref (G_OBJECT (folders));
- g_object_unref (G_OBJECT (iter));
-
- /* TODO: better error handling management */
- if (!found)
- return NULL;
- else
- return trash_folder;
-}
-
/* ******************************************************************* */
/* ************************** MSG ACTIONS ************************* */
/* ******************************************************************* */
TnyStoreAccount *store_account;
store_account = TNY_STORE_ACCOUNT (tny_folder_get_account (folder));
- trash_folder = modest_mail_operation_find_trash_folder (self, store_account);
-
+ trash_folder = modest_tny_account_get_special_folder (TNY_ACCOUNT(store_account),
+ TNY_FOLDER_TYPE_TRASH);
if (trash_folder) {
modest_mail_operation_move_msg (self, header, trash_folder);
/* g_object_unref (trash_folder); */
g_object_unref (G_OBJECT (store_account));
} else {
tny_folder_remove_msg (folder, header, NULL); /* FIXME */
- tny_folder_expunge (folder, NULL); /* FIXME */
+ tny_folder_sync(folder, TRUE, NULL); /* FIXME */
}
/* Free */