X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-ui-actions.c;h=7d1d4ef70df3185874d452c40ca4ad9f664cbc38;hp=ce758b1e02a98f2c8a112a4e163b9ccfee8821e7;hb=9d8de13bc46137931a2790969dcb1fb932c7bcc6;hpb=3922dda5e4ac32be521f69ab6a1ad716fc1bfac2 diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index ce758b1..7d1d4ef 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -91,6 +91,7 @@ typedef struct _ReplyForwardHelper { guint reply_forward_type; ReplyForwardAction action; gchar *account_name; + GtkWidget *parent_window; } ReplyForwardHelper; /* @@ -737,8 +738,6 @@ reply_forward_cb (ModestMailOperation *mail_op, ModestWindow *msg_win; ModestEditType edit_type; gchar *from; - GError *err = NULL; - TnyFolder *folder = NULL; TnyAccount *account = NULL; ModestWindowMgr *mgr; gchar *signature = NULL; @@ -795,33 +794,24 @@ reply_forward_cb (ModestMailOperation *mail_op, goto cleanup; } - folder = modest_tny_account_get_special_folder (account, TNY_FOLDER_TYPE_DRAFTS); - if (!folder) { - g_printerr ("modest: failed to find Drafts folder\n"); - goto cleanup; - } - - tny_folder_add_msg (folder, msg, &err); - if (err) { - g_printerr ("modest: error adding msg to Drafts folder: %s", - err->message); - g_error_free (err); - goto cleanup; - } - - /* Create and register the windows */ + /* Create and register the windows */ msg_win = modest_msg_edit_window_new (new_msg, rf_helper->account_name); mgr = modest_runtime_get_window_mgr (); modest_window_mgr_register_window (mgr, msg_win); + if (rf_helper->parent_window != NULL) { + gdouble parent_zoom; + + parent_zoom = modest_window_get_zoom (MODEST_WINDOW (rf_helper->parent_window)); + modest_window_set_zoom (msg_win, parent_zoom); + } + /* Show edit window */ gtk_widget_show_all (GTK_WIDGET (msg_win)); cleanup: if (new_msg) g_object_unref (G_OBJECT (new_msg)); - if (folder) - g_object_unref (G_OBJECT (folder)); if (account) g_object_unref (G_OBJECT (account)); g_object_unref (msg); @@ -913,6 +903,8 @@ reply_forward (ReplyForwardAction action, ModestWindow *win) rf_helper->reply_forward_type = reply_forward_type; rf_helper->action = action; rf_helper->account_name = g_strdup (modest_window_get_active_account (win)); + if ((win != NULL) && (MODEST_IS_WINDOW (win))) + rf_helper->parent_window = GTK_WIDGET (win); if (!rf_helper->account_name) rf_helper->account_name = modest_account_mgr_get_default_account (modest_runtime_get_account_mgr()); @@ -1174,6 +1166,9 @@ modest_ui_actions_on_header_selected (ModestHeaderView *header_view, else gtk_window_set_title (GTK_WINDOW (main_window), _("mail_va_no_subject")); } + + /* Update toolbar dimming state */ + modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (main_window)); } void @@ -1238,9 +1233,6 @@ modest_ui_actions_on_folder_selection_changed (ModestFolderView *folder_view, set_active_account_from_tny_account (TNY_ACCOUNT (folder_store), MODEST_WINDOW (main_window)); /* Show account details */ modest_main_window_set_contents_style (main_window, MODEST_MAIN_WINDOW_CONTENTS_STYLE_DETAILS); - } else if (modest_tny_folder_store_is_virtual_local_folders (folder_store )) { - //TODO: Set the virtual folder store as the "active account" somehow: - modest_main_window_set_contents_style (main_window, MODEST_MAIN_WINDOW_CONTENTS_STYLE_DETAILS); } else { if (TNY_IS_FOLDER (folder_store) && selected) { @@ -1266,6 +1258,9 @@ modest_ui_actions_on_folder_selection_changed (ModestFolderView *folder_view, modest_header_view_set_folder (MODEST_HEADER_VIEW(header_view), NULL); } } + + /* Update toolbar dimming state */ + modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (main_window)); } void @@ -1376,6 +1371,11 @@ modest_ui_actions_on_save_to_drafts (GtkWidget *widget, ModestMsgEditWindow *edi modest_msg_edit_window_free_msg_data (edit_window, data); return; } + + if (!strcmp (account_name, MODEST_ACTUAL_LOCAL_FOLDERS_ACCOUNT_ID)) { + account_name = g_strdup (data->account_name); + } + transport_account = TNY_TRANSPORT_ACCOUNT(modest_tny_account_store_get_tny_account_by_account (modest_runtime_get_account_store(), @@ -1395,6 +1395,7 @@ 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, @@ -1437,6 +1438,11 @@ modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window) g_printerr ("modest: no account found\n"); return; } + MsgData *data = modest_msg_edit_window_get_msg_data (edit_window); + + if (!strcmp (account_name, MODEST_ACTUAL_LOCAL_FOLDERS_ACCOUNT_ID)) { + account_name = g_strdup (data->account_name); + } /* Get the currently-active transport account for this modest account: */ TnyTransportAccount *transport_account = @@ -1446,13 +1452,12 @@ modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window) if (!transport_account) { g_printerr ("modest: no transport account found for '%s'\n", account_name); g_free (account_name); + modest_msg_edit_window_free_msg_data (edit_window, data); return; } gchar *from = modest_account_mgr_get_from_string (account_mgr, account_name); - MsgData *data = modest_msg_edit_window_get_msg_data (edit_window); - /* mail content checks and dialogs */ if (data->subject == NULL || data->subject[0] == '\0') { GtkResponseType response; @@ -1486,6 +1491,7 @@ modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window) modest_mail_operation_send_new_mail (mail_operation, transport_account, + data->draft_msg, from, data->to, data->cc, @@ -2139,6 +2145,21 @@ modest_ui_actions_on_select_all (GtkAction *action, gtk_text_buffer_get_end_iter (buffer, &end); gtk_text_buffer_select_range (buffer, &start, &end); } + else if ((MODEST_IS_FOLDER_VIEW (focused_widget)) || + (MODEST_IS_HEADER_VIEW (focused_widget))) { + + GtkTreeSelection *selection = NULL; + + /* Get header view */ + GtkWidget *header_view = focused_widget; + if (MODEST_IS_FOLDER_VIEW (focused_widget)) + header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (window), + MODEST_WIDGET_TYPE_HEADER_VIEW); + + /* Select all messages */ + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(header_view)); + gtk_tree_selection_select_all (selection); + } } void @@ -2931,7 +2952,7 @@ modest_ui_actions_on_email_menu_activated (GtkAction *action, g_return_if_fail (MODEST_IS_WINDOW (window)); /* Update dimmed */ - modest_window_check_dimming_rules (window); + modest_window_check_dimming_rules_group (window, "ModestMenuDimmingRules"); } void @@ -2941,7 +2962,7 @@ modest_ui_actions_on_edit_menu_activated (GtkAction *action, g_return_if_fail (MODEST_IS_WINDOW (window)); /* Update dimmed */ - modest_window_check_dimming_rules (window); + modest_window_check_dimming_rules_group (window, "ModestMenuDimmingRules"); } void @@ -2951,7 +2972,7 @@ modest_ui_actions_on_toolbar_csm_menu_activated (GtkAction *action, g_return_if_fail (MODEST_IS_WINDOW (window)); /* Update dimmed */ - modest_window_check_dimming_rules (window); + modest_window_check_dimming_rules_group (window, "ModestMenuDimmingRules"); } void @@ -2961,7 +2982,7 @@ modest_ui_actions_on_folder_view_csm_menu_activated (GtkAction *action, g_return_if_fail (MODEST_IS_WINDOW (window)); /* Update dimmed */ - modest_window_check_dimming_rules (window); + modest_window_check_dimming_rules_group (window, "ModestMenuDimmingRules"); } void @@ -2971,5 +2992,22 @@ modest_ui_actions_on_header_view_csm_menu_activated (GtkAction *action, g_return_if_fail (MODEST_IS_WINDOW (window)); /* Update dimmed */ - modest_window_check_dimming_rules (window); + modest_window_check_dimming_rules_group (window, "ModestMenuDimmingRules"); +} + +void +modest_ui_actions_check_toolbar_dimming_rules (ModestWindow *window) +{ + g_return_if_fail (MODEST_IS_WINDOW (window)); + + /* Update dimmed */ + modest_window_check_dimming_rules_group (window, "ModestToolbarDimmingRules"); +} + +void +modest_ui_actions_on_search_messages (GtkAction *action, ModestWindow *window) +{ + g_return_if_fail (MODEST_IS_WINDOW (window)); + + modest_platform_show_search_messages (GTK_WINDOW (window)); }