X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmodest-ui-actions.c;h=95591bbcc8439553094ed3847cc39ea2235cedb8;hb=4d91e5316113bc67c758cd31983a1be368f3966d;hp=e541ebbf805ff3d0675d5f90cc70eea49ca47850;hpb=372bd519424a13c52a6768f0cb0da050ed32da77;p=modest diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index e541ebb..95591bb 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -115,6 +115,8 @@ typedef struct _ReplyForwardHelper { gchar *mailbox; GtkWidget *parent_window; TnyHeader *header; + TnyHeader *top_header; + TnyMsg *msg_part; TnyList *parts; } ReplyForwardHelper; @@ -907,10 +909,11 @@ modest_ui_actions_compose_msg(ModestWindow *win, gchar *gray_color_markup = NULL, *color_begin = NULL, *color_end = NULL; GdkColor color; - if (gtk_style_lookup_color (GTK_WIDGET (win)->style, "SecondaryTextColor", &color)) + if (win && gtk_style_lookup_color (gtk_widget_get_style ((GtkWidget *) win), + "SecondaryTextColor", &color)) gray_color_markup = modest_text_utils_get_color_string (&color); if (!gray_color_markup) - gray_color_markup = g_strdup ("#999999"); + gray_color_markup = g_strdup ("#babababababa"); color_begin = g_strdup_printf ("", gray_color_markup); color_end = ""; @@ -1257,7 +1260,7 @@ open_msg_cb (ModestMailOperation *mail_op, 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, mailbox, (const gchar*) uid); + win = modest_msg_view_window_new_for_attachment (msg, NULL, account, mailbox, (const gchar*) uid); } g_free (uid); } @@ -1486,6 +1489,12 @@ open_msg_performer(gboolean canceled, gboolean can_open; gchar *account_name = get_info_from_header (helper->header, &is_draft, &can_open); + if (!g_strcmp0 (account_name, MODEST_LOCAL_FOLDERS_ACCOUNT_ID) || + !g_strcmp0 (account_name, MODEST_MMC_ACCOUNT_ID)) { + g_free (account_name); + account_name = g_strdup (modest_window_get_active_account (MODEST_WINDOW (parent_window))); + } + if (!can_open) { modest_window_mgr_unregister_header (modest_runtime_get_window_mgr (), helper->header); g_free (account_name); @@ -1712,6 +1721,8 @@ create_reply_forward_helper (ReplyForwardAction action, ModestWindow *win, guint reply_forward_type, TnyHeader *header, + TnyMsg *msg_part, + TnyHeader *top_header, TnyList *parts) { ReplyForwardHelper *rf_helper = NULL; @@ -1723,6 +1734,8 @@ create_reply_forward_helper (ReplyForwardAction action, rf_helper->action = action; rf_helper->parent_window = (MODEST_IS_WINDOW (win)) ? GTK_WIDGET (win) : NULL; rf_helper->header = (header) ? g_object_ref (header) : NULL; + rf_helper->top_header = (top_header) ? g_object_ref (top_header) : NULL; + rf_helper->msg_part = (msg_part) ? g_object_ref (msg_part) : NULL; rf_helper->account_name = (active_acc) ? g_strdup (active_acc) : modest_account_mgr_get_default_account (modest_runtime_get_account_mgr()); @@ -1752,6 +1765,10 @@ free_reply_forward_helper (gpointer data) g_free (helper->mailbox); if (helper->header) g_object_unref (helper->header); + if (helper->top_header) + g_object_unref (helper->top_header); + if (helper->msg_part) + g_object_unref (helper->msg_part); if (helper->parts) g_object_unref (helper->parts); if (helper->parent_window) @@ -1800,18 +1817,18 @@ reply_forward_cb (ModestMailOperation *mail_op, information. The summary can lack some data */ TnyHeader *msg_header; case ACTION_REPLY: - msg_header = tny_msg_get_header (msg); + msg_header = tny_msg_get_header (rf_helper->msg_part?rf_helper->msg_part:msg); new_msg = - modest_tny_msg_create_reply_msg (msg, msg_header, from, + modest_tny_msg_create_reply_msg (rf_helper->msg_part?rf_helper->msg_part:msg, msg_header, from, (use_signature) ? signature : NULL, rf_helper->reply_forward_type, MODEST_TNY_MSG_REPLY_MODE_SENDER); g_object_unref (msg_header); break; case ACTION_REPLY_TO_ALL: - msg_header = tny_msg_get_header (msg); + msg_header = tny_msg_get_header (rf_helper->msg_part?rf_helper->msg_part:msg); new_msg = - modest_tny_msg_create_reply_msg (msg, msg_header, from, + modest_tny_msg_create_reply_msg (rf_helper->msg_part?rf_helper->msg_part:msg, msg_header, from, (use_signature) ? signature : NULL, rf_helper->reply_forward_type, MODEST_TNY_MSG_REPLY_MODE_ALL); @@ -1820,7 +1837,8 @@ reply_forward_cb (ModestMailOperation *mail_op, break; case ACTION_FORWARD: new_msg = - modest_tny_msg_create_forward_msg (msg, from, (use_signature) ? signature : NULL, + modest_tny_msg_create_forward_msg (rf_helper->msg_part?rf_helper->msg_part:msg, from, + (use_signature) ? signature : NULL, rf_helper->reply_forward_type); edit_type = MODEST_EDIT_TYPE_FORWARD; break; @@ -1952,7 +1970,7 @@ reply_forward_performer (gboolean canceled, modest_ui_actions_disk_operations_error_handler, NULL, NULL); modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_op); - modest_mail_operation_get_msg_and_parts (mail_op, rf_helper->header, rf_helper->parts, TRUE, reply_forward_cb, rf_helper); + modest_mail_operation_get_msg_and_parts (mail_op, rf_helper->top_header, rf_helper->parts, TRUE, reply_forward_cb, rf_helper); /* Frees */ g_object_unref(mail_op); @@ -2058,21 +2076,25 @@ reply_forward (ReplyForwardAction action, ModestWindow *win) if (MODEST_IS_MSG_VIEW_WINDOW (win)) { TnyMsg *msg = NULL; + TnyMsg *top_msg = NULL; TnyHeader *header = NULL; /* Get header and message. Do not free them here, the reply_forward_cb must do it */ msg = modest_msg_view_window_get_message (MODEST_MSG_VIEW_WINDOW(win)); + top_msg = modest_msg_view_window_get_top_message (MODEST_MSG_VIEW_WINDOW(win)); header = modest_msg_view_window_get_header (MODEST_MSG_VIEW_WINDOW (win)); if (msg && header && (action != ACTION_FORWARD || all_parts_retrieved (TNY_MIME_PART (msg)))) { /* Create helper */ rf_helper = create_reply_forward_helper (action, win, - reply_forward_type, header, NULL); + reply_forward_type, header, NULL, NULL, NULL); reply_forward_cb (NULL, header, FALSE, msg, NULL, rf_helper); } else { gboolean do_download = TRUE; if (msg && header && action == ACTION_FORWARD) { + if (top_msg == NULL) + top_msg = g_object_ref (msg); /* Not all parts retrieved. Then we have to retrieve them all before * creating the forward message */ if (!tny_device_is_online (modest_runtime_get_device ())) { @@ -2093,21 +2115,24 @@ reply_forward (ReplyForwardAction action, ModestWindow *win) TnyList *pending_parts; TnyFolder *folder; TnyAccount *account; + TnyHeader *top_header; /* Create helper */ - pending_parts = forward_pending_parts (msg); + top_header = tny_msg_get_header (top_msg); + pending_parts = forward_pending_parts (top_msg); rf_helper = create_reply_forward_helper (action, win, - reply_forward_type, header, pending_parts); + reply_forward_type, header, msg, top_header, pending_parts); g_object_unref (pending_parts); - folder = tny_header_get_folder (header); + folder = tny_header_get_folder (top_header); account = tny_folder_get_account (folder); modest_platform_connect_and_perform (GTK_WINDOW (win), TRUE, account, reply_forward_performer, rf_helper); - g_object_unref (folder); + if (folder) g_object_unref (folder); g_object_unref (account); + if (top_header) g_object_unref (top_header); } } else { @@ -2117,6 +2142,8 @@ reply_forward (ReplyForwardAction action, ModestWindow *win) if (msg) g_object_unref (msg); + if (top_msg) + g_object_unref (top_msg); if (header) g_object_unref (header); } else { @@ -2180,7 +2207,7 @@ reply_forward (ReplyForwardAction action, ModestWindow *win) if (download) { /* Create helper */ rf_helper = create_reply_forward_helper (action, win, - reply_forward_type, header, NULL); + reply_forward_type, header, NULL, NULL, NULL); if (uncached_msgs > 0) { modest_platform_connect_and_perform (GTK_WINDOW (win), TRUE, account, @@ -5394,8 +5421,6 @@ create_move_to_dialog (GtkWindow *win, modest_folder_view_set_style (MODEST_FOLDER_VIEW (tree_view), MODEST_FOLDER_VIEW_STYLE_SHOW_ALL); - /* modest_folder_view_update_model (MODEST_FOLDER_VIEW (tree_view), */ - /* TNY_ACCOUNT_STORE (modest_runtime_get_account_store ())); */ active_account_name = modest_window_get_active_account (MODEST_WINDOW (win)); mgr = modest_runtime_get_account_mgr (); @@ -7078,7 +7103,7 @@ modest_ui_actions_on_delete_account (GtkWindow *parent_window, distinguish if the notification belongs to this account or not, so for safety reasons we remove them all */ - modest_platform_remove_new_mail_notifications (FALSE); + modest_platform_remove_new_mail_notifications (FALSE, account_name); } else { g_warning ("%s: modest_account_mgr_remove_account() failed.\n", __FUNCTION__); }