X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-ui-actions.c;h=a1bea67571a1f88b2a36bb8a14a07e6267a82fc0;hp=0d8a4b7753b1fa943951fb49ae74a8ba74d40bfa;hb=74ca950836395c6cb5060a2b7868c9879eae6232;hpb=f11a13e80ef77941f54e7f260e6c85e1a0dd569f diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index 0d8a4b7..a1bea67 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; @@ -787,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(); @@ -802,7 +805,8 @@ modest_ui_actions_compose_msg(ModestWindow *win, goto cleanup; #ifdef MODEST_TOOLKIT_HILDON2 - account_name = g_strdup (modest_window_get_active_account(win)); + if (win) + account_name = g_strdup (modest_window_get_active_account(win)); #endif if (!account_name) { account_name = modest_account_mgr_get_default_account(mgr); @@ -811,6 +815,11 @@ modest_ui_actions_compose_msg(ModestWindow *win, g_printerr ("modest: no account found\n"); goto cleanup; } + + if (win) + mailbox = modest_window_get_active_mailbox (win); + else + mailbox = NULL; 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); @@ -821,13 +830,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 { @@ -844,7 +855,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)); @@ -1110,6 +1121,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); @@ -1123,22 +1135,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); } @@ -1434,8 +1452,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)) { @@ -1644,6 +1664,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; @@ -1653,6 +1674,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 @@ -1671,6 +1693,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) @@ -1696,6 +1719,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 @@ -1705,10 +1729,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) { @@ -1757,7 +1783,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); @@ -2552,7 +2578,7 @@ folder_refreshed_cb (ModestMailOperation *mail_op, gpointer user_data) { ModestMainWindow *win = NULL; - GtkWidget *folder_view; + GtkWidget *folder_view, *header_view; const GError *error; g_return_if_fail (TNY_IS_FOLDER (folder)); @@ -2571,6 +2597,8 @@ folder_refreshed_cb (ModestMailOperation *mail_op, folder_view = modest_main_window_get_child_widget(win, MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW); + header_view = + modest_main_window_get_child_widget(win, MODEST_MAIN_WINDOW_WIDGET_TYPE_HEADER_VIEW); if (folder_view) { TnyFolderStore *current_folder; @@ -2585,10 +2613,10 @@ folder_refreshed_cb (ModestMailOperation *mail_op, } /* Check if folder is empty and set headers view contents style */ - if (tny_folder_get_all_count (folder) == 0) + if ((tny_folder_get_all_count (folder) == 0) || + modest_header_view_is_empty (MODEST_HEADER_VIEW (header_view))) modest_main_window_set_contents_style (win, MODEST_MAIN_WINDOW_CONTENTS_STYLE_EMPTY); - } void @@ -2860,7 +2888,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; @@ -2902,7 +2930,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, @@ -2912,9 +2939,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, @@ -2951,7 +2978,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)); @@ -3005,7 +3031,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); @@ -3054,14 +3079,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, @@ -3088,7 +3112,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)); @@ -3443,8 +3466,10 @@ modest_ui_actions_rename_folder_error_handler (ModestMailOperation *mail_op, if (!error) g_return_if_reached (); - if (error->domain == MODEST_MAIL_OPERATION_ERROR && - error->code == MODEST_MAIL_OPERATION_ERROR_FOLDER_EXISTS) { + if (is_memory_full_error ((GError *) error, mail_op)) { + message = _KR("cerm_device_memory_full"); + } else if (error->domain == MODEST_MAIL_OPERATION_ERROR && + error->code == MODEST_MAIL_OPERATION_ERROR_FOLDER_EXISTS) { message = _CS("ckdg_ib_folder_already_exists"); } else if (error->domain == TNY_ERROR_DOMAIN && error->code == TNY_SERVICE_ERROR_STATE) { @@ -4567,7 +4592,18 @@ headers_action_show_details (TnyHeader *header, gpointer user_data) { - modest_platform_run_header_details_dialog (GTK_WINDOW (window), header); + gboolean async_retrieval; + TnyMsg *msg = NULL; + + if (MODEST_IS_MSG_VIEW_WINDOW (window)) { + async_retrieval = TRUE; + msg = modest_msg_view_window_get_message (MODEST_MSG_VIEW_WINDOW (window)); + } else { + async_retrieval = FALSE; + } + modest_platform_run_header_details_dialog (GTK_WINDOW (window), header, async_retrieval, msg); + if (msg) + g_object_unref (msg); } /* @@ -5028,7 +5064,9 @@ create_move_to_dialog (GtkWindow *win, g_object_set_data (G_OBJECT(dialog), MODEST_MOVE_TO_DIALOG_FOLDER_VIEW, tree_view); /* Hide special folders */ +#ifndef MODEST_TOOLKIT_HILDON2 modest_folder_view_show_non_move_folders (MODEST_FOLDER_VIEW (tree_view), FALSE); +#endif if (list_to_move) modest_folder_view_set_list_to_move (MODEST_FOLDER_VIEW (tree_view), list_to_move); #ifndef MODEST_TOOLKIT_HILDON2 @@ -6558,7 +6596,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