X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-ui-actions.c;h=8076dd9f04cc8ad46a7e72ff655a5181c72c2624;hp=417a11ebd6b489ced569cb9b6dc538a932c308a3;hb=bd4de972656d134acae12fb14817df1f8ae44589;hpb=bd8fcd194ba9a24c3398b46a427b30f97ba0fa58 diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index 417a11e..8076dd9 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -109,6 +109,7 @@ typedef struct _ReplyForwardHelper { guint reply_forward_type; ReplyForwardAction action; gchar *account_name; + gchar *mailbox; GtkWidget *parent_window; TnyHeader *header; } ReplyForwardHelper; @@ -729,7 +730,9 @@ void modest_ui_actions_on_new_account (GtkAction *action, ModestWindow *window) { - modest_ui_actions_run_account_setup_wizard (window); + if (!modest_ui_actions_run_account_setup_wizard (window)) { + g_debug ("%s: wizard was already running", __FUNCTION__); + } } void @@ -785,10 +788,12 @@ modest_ui_actions_compose_msg(ModestWindow *win, gboolean set_as_modified) { gchar *account_name = NULL; + const gchar *mailbox; TnyMsg *msg = NULL; TnyAccount *account = NULL; TnyFolder *folder = NULL; gchar *from_str = NULL, *signature = NULL, *body = NULL; + gchar *recipient = NULL; gboolean use_signature = FALSE; ModestWindow *msg_win = NULL; ModestAccountMgr *mgr = modest_runtime_get_account_mgr(); @@ -809,6 +814,8 @@ modest_ui_actions_compose_msg(ModestWindow *win, g_printerr ("modest: no account found\n"); goto cleanup; } + + mailbox = modest_window_get_active_mailbox (win); account = modest_tny_account_store_get_server_account (store, account_name, TNY_ACCOUNT_TYPE_STORE); if (!account) { g_printerr ("modest: failed to get tnyaccount for '%s'\n", account_name); @@ -819,13 +826,15 @@ modest_ui_actions_compose_msg(ModestWindow *win, g_printerr ("modest: failed to find Drafts folder\n"); goto cleanup; } - from_str = modest_account_mgr_get_from_string (mgr, account_name); + from_str = modest_account_mgr_get_from_string (mgr, account_name, mailbox); if (!from_str) { g_printerr ("modest: failed get from string for '%s'\n", account_name); goto cleanup; } - signature = modest_account_mgr_get_signature (mgr, account_name, &use_signature); + recipient = modest_text_utils_get_email_address (from_str); + signature = modest_account_mgr_get_signature_from_recipient (mgr, recipient, &use_signature); + g_free (recipient); if (body_str != NULL) { body = use_signature ? g_strconcat(body_str, "\n--\n", signature, NULL) : g_strdup(body_str); } else { @@ -842,7 +851,7 @@ modest_ui_actions_compose_msg(ModestWindow *win, /* This is destroyed by TODO. */ total_size = 0; allowed_size = MODEST_MAX_ATTACHMENT_SIZE; - msg_win = modest_msg_edit_window_new (msg, account_name, FALSE); + msg_win = modest_msg_edit_window_new (msg, account_name, mailbox, FALSE); if (!modest_window_mgr_register_window (modest_runtime_get_window_mgr(), msg_win, win)) { gtk_widget_destroy (GTK_WIDGET (msg_win)); @@ -1108,6 +1117,7 @@ open_msg_cb (ModestMailOperation *mail_op, if (open_in_editor) { ModestAccountMgr *mgr = modest_runtime_get_account_mgr (); gchar *from_header = NULL, *acc_name; + gchar *mailbox = NULL; from_header = tny_header_dup_from (header); @@ -1121,22 +1131,28 @@ open_msg_cb (ModestMailOperation *mail_op, } } - acc_name = modest_utils_get_account_name_from_recipient (from_header); + acc_name = modest_utils_get_account_name_from_recipient (from_header, &mailbox); g_free (from_header); if (acc_name) { g_free (account); account = acc_name; } - win = modest_msg_edit_window_new (msg, account, TRUE); + win = modest_msg_edit_window_new (msg, account, mailbox, TRUE); + if (mailbox) + g_free (mailbox); } else { gchar *uid = modest_tny_folder_get_header_unique_id (header); + const gchar *mailbox = NULL; + + if (parent_win && MODEST_IS_WINDOW (parent_win)) + mailbox = modest_window_get_active_mailbox (MODEST_WINDOW (parent_win)); if (helper->rowref && helper->model) { - win = modest_msg_view_window_new_with_header_model (msg, account, (const gchar*) uid, + win = modest_msg_view_window_new_with_header_model (msg, account, mailbox, (const gchar*) uid, helper->model, helper->rowref); } else { - win = modest_msg_view_window_new_for_attachment (msg, account, (const gchar*) uid); + win = modest_msg_view_window_new_for_attachment (msg, account, mailbox, (const gchar*) uid); } g_free (uid); } @@ -1432,8 +1448,10 @@ open_msg_performer(gboolean canceled, header_view = get_header_view_from_window (MODEST_WINDOW (parent_window)); uid = modest_tny_folder_get_header_unique_id (helper->header); if (header_view) { - window = modest_msg_view_window_new_from_header_view - (MODEST_HEADER_VIEW (header_view), account_name, uid, helper->rowref); + const gchar *mailbox = NULL; + mailbox = modest_window_get_active_mailbox (MODEST_WINDOW (parent_window)); + window = modest_msg_view_window_new_from_header_view + (MODEST_HEADER_VIEW (header_view), account_name, mailbox, uid, helper->rowref); if (window != NULL) { if (!modest_window_mgr_register_window (modest_runtime_get_window_mgr (), window, NULL)) { @@ -1642,6 +1660,7 @@ create_reply_forward_helper (ReplyForwardAction action, { ReplyForwardHelper *rf_helper = NULL; const gchar *active_acc = modest_window_get_active_account (win); + const gchar *active_mailbox = modest_window_get_active_mailbox (win); rf_helper = g_slice_new0 (ReplyForwardHelper); rf_helper->reply_forward_type = reply_forward_type; @@ -1651,6 +1670,7 @@ create_reply_forward_helper (ReplyForwardAction action, rf_helper->account_name = (active_acc) ? g_strdup (active_acc) : modest_account_mgr_get_default_account (modest_runtime_get_account_mgr()); + rf_helper->mailbox = g_strdup (active_mailbox); /* Note that window could be destroyed just AFTER calling register_window so we must ensure that this pointer does @@ -1669,6 +1689,7 @@ free_reply_forward_helper (gpointer data) helper = (ReplyForwardHelper *) data; g_free (helper->account_name); + g_free (helper->mailbox); if (helper->header) g_object_unref (helper->header); if (helper->parent_window) @@ -1694,6 +1715,7 @@ reply_forward_cb (ModestMailOperation *mail_op, ModestWindowMgr *mgr = NULL; gchar *signature = NULL; gboolean use_signature; + gchar *recipient; /* If there was any error. The mail operation could be NULL, this means that we already have the message downloaded and @@ -1703,10 +1725,12 @@ reply_forward_cb (ModestMailOperation *mail_op, goto cleanup; from = modest_account_mgr_get_from_string (modest_runtime_get_account_mgr(), - rf_helper->account_name); - signature = modest_account_mgr_get_signature (modest_runtime_get_account_mgr(), - rf_helper->account_name, - &use_signature); + rf_helper->account_name, rf_helper->mailbox); + recipient = modest_text_utils_get_email_address (from); + signature = modest_account_mgr_get_signature_from_recipient (modest_runtime_get_account_mgr(), + recipient, + &use_signature); + g_free (recipient); /* Create reply mail */ switch (rf_helper->action) { @@ -1755,7 +1779,7 @@ reply_forward_cb (ModestMailOperation *mail_op, } /* Create and register the windows */ - msg_win = modest_msg_edit_window_new (new_msg, rf_helper->account_name, FALSE); + msg_win = modest_msg_edit_window_new (new_msg, rf_helper->account_name, rf_helper->mailbox, FALSE); mgr = modest_runtime_get_window_mgr (); modest_window_mgr_register_window (mgr, msg_win, (ModestWindow *) rf_helper->parent_window); @@ -2522,7 +2546,7 @@ set_active_account_from_tny_account (TnyAccount *account, /* We need the TnyAccount provided by the account store because that is the one that knows the name of the Modest account */ - TnyAccount *modest_server_account = modest_server_account = + TnyAccount *modest_server_account = modest_tny_account_store_get_tny_account_by (modest_runtime_get_account_store (), MODEST_TNY_ACCOUNT_STORE_QUERY_ID, server_acc_name); @@ -2858,7 +2882,7 @@ modest_ui_actions_on_save_to_drafts (GtkWidget *widget, ModestMsgEditWindow *edi TnyTransportAccount *transport_account; ModestMailOperation *mail_operation; MsgData *data; - gchar *account_name, *from; + gchar *account_name; ModestAccountMgr *account_mgr; gboolean had_error = FALSE; ModestMainWindow *win = NULL; @@ -2900,7 +2924,6 @@ modest_ui_actions_on_save_to_drafts (GtkWidget *widget, ModestMsgEditWindow *edi modest_msg_edit_window_free_msg_data (edit_window, data); return FALSE; } - from = modest_account_mgr_get_from_string (account_mgr, account_name); /* Create the mail operation */ mail_operation = modest_mail_operation_new_with_error_handling (NULL, modest_ui_actions_disk_operations_error_handler, @@ -2910,9 +2933,9 @@ modest_ui_actions_on_save_to_drafts (GtkWidget *widget, ModestMsgEditWindow *edi modest_mail_operation_save_to_drafts (mail_operation, transport_account, data->draft_msg, - from, - data->to, - data->cc, + data->from, + data->to, + data->cc, data->bcc, data->subject, data->plain_body, @@ -2949,7 +2972,6 @@ modest_ui_actions_on_save_to_drafts (GtkWidget *widget, ModestMsgEditWindow *edi modest_msg_edit_window_set_modified (edit_window, FALSE); /* Frees */ - g_free (from); g_free (account_name); g_object_unref (G_OBJECT (transport_account)); g_object_unref (G_OBJECT (mail_operation)); @@ -3003,7 +3025,6 @@ modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window) MsgData *data; ModestAccountMgr *account_mgr; gchar *account_name; - gchar *from; ModestMailOperation *mail_operation; g_return_val_if_fail (MODEST_IS_MSG_EDIT_WINDOW(edit_window), TRUE); @@ -3052,14 +3073,13 @@ modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window) /* Create the mail operation */ - from = modest_account_mgr_get_from_string (account_mgr, account_name); 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_new_mail (mail_operation, transport_account, data->draft_msg, - from, + data->from, data->to, data->cc, data->bcc, @@ -3086,7 +3106,6 @@ modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window) } /* Free data: */ - g_free (from); g_free (account_name); g_object_unref (G_OBJECT (transport_account)); g_object_unref (G_OBJECT (mail_operation)); @@ -6073,7 +6092,9 @@ retrieve_contents_cb (ModestMailOperation *mail_op, { /* We only need this callback to show an error in case of memory low condition */ - modest_ui_actions_msg_retrieval_check (mail_op, header, msg); + if (!modest_ui_actions_msg_retrieval_check (mail_op, header, msg)) { + g_debug ("%s: message failed to retrieve. Memory low?", __FUNCTION__); + } } static void @@ -6554,7 +6575,11 @@ modest_ui_actions_get_msg_already_deleted_error_msg (ModestWindow *win) } iter = tny_list_create_iterator (headers); header = TNY_HEADER (tny_iterator_get_current (iter)); - folder = TNY_FOLDER_STORE (tny_header_get_folder (header)); + if (header) { + folder = TNY_FOLDER_STORE (tny_header_get_folder (header)); + } else { + g_warning ("List should contain headers"); + } g_object_unref (iter); g_object_unref (headers); #endif