#include <widgets/modest-header-window.h>
#include <widgets/modest-folder-window.h>
#include <widgets/modest-accounts-window.h>
+
#ifdef MODEST_TOOLKIT_HILDON2
#include <hildon/hildon-gtk.h>
#include <modest-maemo-utils.h>
+#else
+#include <gtk/modest-shell-window.h>
#endif
#include "modest-utils.h"
#include "widgets/modest-connection-specific-smtp-window.h"
gpointer user_data)
{
TnyHeaderFlags flags;
+ gchar *uid;
g_return_if_fail (TNY_IS_HEADER(header));
flags = tny_header_get_flags (header);
if (flags & TNY_HEADER_FLAG_SEEN) return;
tny_header_set_flag (header, TNY_HEADER_FLAG_SEEN);
+ uid = modest_tny_folder_get_header_unique_id (header);
+ modest_platform_emit_msg_read_changed_signal (uid, TRUE);
+ g_free (uid);
}
static void
flags = tny_header_get_flags (header);
if (flags & TNY_HEADER_FLAG_SEEN) {
+ gchar *uid;
+ uid = modest_tny_folder_get_header_unique_id (header);
tny_header_unset_flag (header, TNY_HEADER_FLAG_SEEN);
+ modest_platform_emit_msg_read_changed_signal (uid, FALSE);
}
}
GnomeVFSFileSize total_size, allowed_size;
guint64 available_disk, expected_size, parts_size;
guint parts_count;
+ TnyList *header_pairs;
/* we check for low-mem */
if (modest_platform_check_memory_low (win, TRUE))
body = use_signature ? g_strconcat ((body_str) ? body_str : "", signature, NULL) :
g_strdup(body_str);
+ header_pairs = TNY_LIST (tny_simple_list_new ());
msg = modest_tny_msg_new_html_plain (to_str, from_str, cc_str, bcc_str, subject_str,
- NULL, NULL, body, NULL, NULL, NULL, NULL, NULL);
+ NULL, NULL, body, NULL, NULL, NULL, NULL, header_pairs, NULL);
+ g_object_unref (header_pairs);
+
if (!msg) {
g_printerr ("modest: failed to create new msg\n");
goto cleanup;
}
void
-modest_ui_actions_reply_calendar (ModestWindow *win, TnyMsg *msg, TnyList *header_pairs)
+modest_ui_actions_reply_calendar (ModestWindow *win, TnyList *header_pairs)
+{
+ modest_ui_actions_reply_calendar_with_subject (win, NULL, header_pairs);
+}
+
+void
+modest_ui_actions_reply_calendar_with_subject (ModestWindow *win, const gchar *custom_subject, TnyList *header_pairs)
{
gchar *from;
gchar *recipient;
gboolean use_signature;
TnyMsg *new_msg;
GtkWidget *msg_win;
- gdouble parent_zoom;
const gchar *account_name;
const gchar *mailbox;
TnyHeader *msg_header;
ModestWindowMgr *mgr;
+ TnyMsg *msg;
g_return_if_fail (MODEST_IS_MSG_VIEW_WINDOW(win));
&use_signature);
g_free (recipient);
+ msg = modest_msg_view_window_get_message(MODEST_MSG_VIEW_WINDOW(win));
+ g_return_if_fail(msg);
+
msg_header = tny_msg_get_header (msg);
new_msg =
modest_tny_msg_create_reply_calendar_msg (msg, msg_header, from,
goto cleanup;
}
+ if (custom_subject) {
+ TnyHeader *new_msg_header;
+
+ new_msg_header = tny_msg_get_header (new_msg);
+ tny_header_set_subject (new_msg_header, custom_subject);
+ g_object_unref (new_msg_header);
+ }
+
msg_win = (GtkWidget *) modest_msg_edit_window_new (new_msg, account_name, mailbox, FALSE);
mgr = modest_runtime_get_window_mgr ();
modest_window_mgr_register_window (mgr, MODEST_WINDOW (msg_win), (ModestWindow *) win);
- parent_zoom = modest_window_get_zoom (MODEST_WINDOW (win));
- modest_window_set_zoom (MODEST_WINDOW (msg_win), parent_zoom);
-
/* Show edit window */
gtk_widget_show_all (GTK_WIDGET (msg_win));
data->priority_flags,
data->references,
data->in_reply_to,
+ data->custom_header_pairs,
on_save_to_drafts_cb,
g_object_ref(edit_window));
modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window)
{
TnyTransportAccount *transport_account = NULL;
- gboolean had_error = FALSE, add_to_contacts;
+ gboolean result = TRUE, add_to_contacts;
MsgData *data;
ModestAccountMgr *account_mgr;
gchar *account_name;
- ModestMailOperation *mail_operation;
gchar *recipients;
g_return_val_if_fail (MODEST_IS_MSG_EDIT_WINDOW(edit_window), TRUE);
return TRUE;
}
+ result = modest_ui_actions_send_msg_with_transport (transport_account,
+ data->draft_msg,
+ data->from,
+ data->to,
+ data->cc,
+ data->bcc,
+ data->subject,
+ data->plain_body,
+ data->html_body,
+ data->attachments,
+ data->images,
+ data->references,
+ data->in_reply_to,
+ data->priority_flags,
+ data->custom_header_pairs);
+
+
+ /* Free data: */
+ g_free (account_name);
+ g_object_unref (G_OBJECT (transport_account));
+
+ modest_msg_edit_window_free_msg_data (edit_window, data);
+
+ if (result) {
+ modest_msg_edit_window_set_sent (edit_window, TRUE);
+
+ /* Save settings and close the window: */
+ modest_ui_actions_on_close_window (NULL, MODEST_WINDOW (edit_window));
+ }
+
+ return result;
+}
+
+/* For instance, when clicking the Send toolbar button when editing a message: */
+gboolean
+modest_ui_actions_on_send_custom_msg (const gchar *account_name,
+ const gchar *from, const gchar *to, const gchar *cc, const gchar *bcc,
+ const gchar *subject,
+ const gchar *plain_body, const gchar *html_body,
+ const GList *attachments_list, const GList *images_list,
+ const gchar *references, const gchar *in_reply_to,
+ TnyHeaderFlags priority_flags, TnyList *header_pairs)
+{
+ TnyTransportAccount *transport_account = NULL;
+ gboolean result = FALSE;
+
+ g_return_val_if_fail (account_name, FALSE);
+
+ transport_account =
+ TNY_TRANSPORT_ACCOUNT(modest_tny_account_store_get_server_account
+ (modest_runtime_get_account_store (),
+ account_name, TNY_ACCOUNT_TYPE_TRANSPORT));
+
+ g_return_val_if_fail (transport_account, FALSE);
+
+ result = modest_ui_actions_send_msg_with_transport (transport_account,
+ NULL /*draft msg*/,
+ from, to, cc, bcc,
+ subject,
+ plain_body, html_body,
+ attachments_list, images_list,
+ references, in_reply_to,
+ priority_flags, header_pairs);
+
+ /* Free data: */
+ g_object_unref (G_OBJECT (transport_account));
+
+ return result;
+}
+
+gboolean
+modest_ui_actions_send_msg_with_transport (TnyTransportAccount *transport_account,
+ TnyMsg *draft_msg,
+ const gchar *from, const gchar *to, const gchar *cc, const gchar *bcc,
+ const gchar *subject,
+ const gchar *plain_body, const gchar *html_body,
+ const GList *attachments_list, const GList *images_list,
+ const gchar *references, const gchar *in_reply_to,
+ TnyHeaderFlags priority_flags, TnyList *header_pairs)
+{
+ gboolean had_error = FALSE;
+ ModestMailOperation *mail_operation;
+
+ g_return_val_if_fail (transport_account, FALSE);
/* Create the mail operation */
mail_operation = modest_mail_operation_new_with_error_handling (NULL, modest_ui_actions_disk_operations_error_handler, NULL, NULL);
modest_mail_operation_send_new_mail (mail_operation,
transport_account,
- data->draft_msg,
- data->from,
- data->to,
- data->cc,
- data->bcc,
- data->subject,
- data->plain_body,
- data->html_body,
- data->attachments,
- data->images,
- data->references,
- data->in_reply_to,
- data->priority_flags);
+ draft_msg,
+ from,
+ to,
+ cc,
+ bcc,
+ subject,
+ plain_body,
+ html_body,
+ attachments_list,
+ images_list,
+ references,
+ in_reply_to,
+ priority_flags,
+ header_pairs);
if (modest_mail_operation_get_status (mail_operation) == MODEST_MAIL_OPERATION_STATUS_IN_PROGRESS)
modest_platform_information_banner (NULL, NULL, _("mcen_ib_outbox_waiting_to_be_sent"));
}
/* Free data: */
- g_free (account_name);
- g_object_unref (G_OBJECT (transport_account));
g_object_unref (G_OBJECT (mail_operation));
- modest_msg_edit_window_free_msg_data (edit_window, data);
+ return !had_error;
+}
- if (!had_error) {
- modest_msg_edit_window_set_sent (edit_window, TRUE);
+gboolean
+modest_ui_actions_on_send_msg (ModestWindow *window,
+ TnyMsg *msg)
+{
+ TnyTransportAccount *transport_account = NULL;
+ gboolean had_error = FALSE;
+ ModestAccountMgr *account_mgr;
+ gchar *account_name;
+ ModestMailOperation *mail_operation;
- /* Save settings and close the window: */
- modest_ui_actions_on_close_window (NULL, MODEST_WINDOW (edit_window));
+ account_mgr = modest_runtime_get_account_mgr();
+ account_name = g_strdup(modest_window_get_active_account (MODEST_WINDOW(window)));
+
+ if (!account_name)
+ account_name = modest_account_mgr_get_default_account (account_mgr);
+
+ /* Get the currently-active transport account for this modest account: */
+ if (account_name && strcmp (account_name, MODEST_LOCAL_FOLDERS_ACCOUNT_ID) != 0) {
+ transport_account =
+ TNY_TRANSPORT_ACCOUNT(modest_tny_account_store_get_server_account
+ (modest_runtime_get_account_store (),
+ account_name, TNY_ACCOUNT_TYPE_TRANSPORT));
+ }
+
+ /* Create the mail operation */
+ mail_operation = modest_mail_operation_new_with_error_handling (NULL, modest_ui_actions_disk_operations_error_handler, NULL, NULL);
+ modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_operation);
+
+ modest_mail_operation_send_mail (mail_operation,
+ transport_account,
+ msg);
+
+ if (modest_mail_operation_get_status (mail_operation) == MODEST_MAIL_OPERATION_STATUS_IN_PROGRESS)
+ modest_platform_information_banner (NULL, NULL, _("mcen_ib_outbox_waiting_to_be_sent"));
+
+ if (modest_mail_operation_get_error (mail_operation) != NULL) {
+ const GError *error = modest_mail_operation_get_error (mail_operation);
+ if (error->domain == MODEST_MAIL_OPERATION_ERROR &&
+ error->code == MODEST_MAIL_OPERATION_ERROR_INSTANCE_CREATION_FAILED) {
+ g_warning ("%s failed: %s\n", __FUNCTION__, (modest_mail_operation_get_error (mail_operation))->message);
+ modest_platform_information_banner (NULL, NULL, _CS("sfil_ni_not_enough_memory"));
+ had_error = TRUE;
+ }
}
+ /* Free data: */
+ g_free (account_name);
+ g_object_unref (G_OBJECT (transport_account));
+ g_object_unref (G_OBJECT (mail_operation));
+
return !had_error;
}
ModestAccountMgr *mgr = NULL;
ModestAccountSettings *settings = NULL;
ModestServerAccountSettings *store_settings = NULL;
+ ModestWindow *modest_window;
modest_folder_view_set_style (MODEST_FOLDER_VIEW (tree_view),
MODEST_FOLDER_VIEW_STYLE_SHOW_ALL);
- active_account_name = modest_window_get_active_account (MODEST_WINDOW (win));
+#ifdef MODEST_TOOLKIT_HILDON2
+ modest_window = (ModestWindow *) win;
+#else
+ modest_window = modest_shell_peek_window (MODEST_SHELL (win));
+#endif
+ active_account_name = modest_window_get_active_account (modest_window);
mgr = modest_runtime_get_account_mgr ();
settings = modest_account_mgr_load_account_settings (mgr, active_account_name);