X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmaemo%2Fmodest-msg-edit-window.c;h=c120bb02f1c901bd53c9e7a09e6df1329d68612d;hp=aa1bfa06010e2884b105dbd9e6e991490b231d8b;hb=a8712a6b492bdc754ef169452802773ec89376cd;hpb=9047ba28c2aeacd7fa7c092044390b1c5912cdea diff --git a/src/maemo/modest-msg-edit-window.c b/src/maemo/modest-msg-edit-window.c index aa1bfa0..c120bb0 100644 --- a/src/maemo/modest-msg-edit-window.c +++ b/src/maemo/modest-msg-edit-window.c @@ -93,9 +93,9 @@ static void send_insensitive_press (GtkWidget *widget, ModestMsgEditWindow *edi static void style_insensitive_press (GtkWidget *widget, ModestMsgEditWindow *editor); static void remove_attachment_insensitive_press (GtkWidget *widget, ModestMsgEditWindow *editor); static void zoom_insensitive_press (GtkWidget *widget, ModestMsgEditWindow *editor); +static void paste_insensitive_press (GtkWidget *widget, ModestMsgEditWindow *editor); static void setup_insensitive_handlers (ModestMsgEditWindow *editor); static void reset_modified (ModestMsgEditWindow *editor); -static gboolean is_modified (ModestMsgEditWindow *editor); static void text_buffer_refresh_attributes (WPTextBuffer *buffer, ModestMsgEditWindow *window); static void text_buffer_delete_range (GtkTextBuffer *buffer, GtkTextIter *start, GtkTextIter *end, gpointer userdata); @@ -199,6 +199,7 @@ struct _ModestMsgEditWindowPrivate { gulong system_clipboard_change_handler_id; TnyMsg *draft_msg; + gboolean sent; }; #define MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \ @@ -300,6 +301,7 @@ modest_msg_edit_window_init (ModestMsgEditWindow *obj) priv->draft_msg = NULL; priv->clipboard_change_handler_id = 0; priv->system_clipboard_change_handler_id = 0; + priv->sent = FALSE; } @@ -525,44 +527,6 @@ modest_msg_edit_window_finalize (GObject *obj) G_OBJECT_CLASS(parent_class)->finalize (obj); } -static gboolean -on_delete_event (GtkWidget *widget, GdkEvent *event, ModestMsgEditWindow *self) -{ - GtkWidget *close_dialog; - ModestMsgEditWindowPrivate *priv; - gint response; - - priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (self); - modest_window_save_state (MODEST_WINDOW (self)); - if (is_modified (self)) { - close_dialog = hildon_note_new_confirmation (GTK_WINDOW (self), _("mcen_nc_no_email_message_modified_save_changes")); - response = gtk_dialog_run (GTK_DIALOG (close_dialog)); - gtk_widget_destroy (close_dialog); - - if (response != GTK_RESPONSE_CANCEL) { - modest_ui_actions_on_save_to_drafts (NULL, self); - } - } -/* /\* remove old message from drafts *\/ */ -/* if (priv->draft_msg) { */ -/* TnyHeader *header = tny_msg_get_header (priv->draft_msg); */ -/* TnyAccount *account = modest_tny_account_store_get_server_account (modest_runtime_get_account_store(), */ -/* account_name, */ -/* TNY_ACCOUNT_TYPE_STORE); */ -/* TnyFolder *folder = modest_tny_account_get_special_folder (account, TNY_FOLDER_TYPE_DRAFTS); */ -/* g_return_val_if_fail (TNY_IS_HEADER (header), FALSE); */ -/* g_return_val_if_fail (TNY_IS_FOLDER (folder), FALSE); */ -/* tny_folder_remove_msg (folder, header, NULL); */ -/* g_object_unref (folder); */ -/* g_object_unref (header); */ -/* g_object_unref (priv->draft_msg); */ -/* priv->draft_msg = NULL; */ -/* } */ - gtk_widget_destroy (GTK_WIDGET (self)); - - return TRUE; -} - static GtkWidget * menubar_to_menu (GtkUIManager *ui_manager) { @@ -613,10 +577,22 @@ set_msg (ModestMsgEditWindow *self, TnyMsg *msg) if (to) modest_recpt_editor_set_recipients (MODEST_RECPT_EDITOR (priv->to_field), to); - if (cc) + if (cc) { modest_recpt_editor_set_recipients (MODEST_RECPT_EDITOR (priv->cc_field), cc); - if (bcc) + gtk_widget_set_no_show_all (priv->cc_caption, FALSE); + gtk_widget_show (priv->cc_caption); + } else if (!modest_conf_get_bool (modest_runtime_get_conf (), MODEST_CONF_SHOW_CC, NULL)) { + gtk_widget_set_no_show_all (priv->cc_caption, FALSE); + gtk_widget_hide (priv->cc_caption); + } + if (bcc) { modest_recpt_editor_set_recipients (MODEST_RECPT_EDITOR (priv->bcc_field), bcc); + gtk_widget_set_no_show_all (priv->cc_caption, FALSE); + gtk_widget_show (priv->bcc_caption); + } else if (!modest_conf_get_bool (modest_runtime_get_conf (), MODEST_CONF_SHOW_BCC, NULL)) { + gtk_widget_set_no_show_all (priv->bcc_caption, FALSE); + gtk_widget_hide (priv->bcc_caption); + } if (subject) gtk_entry_set_text (GTK_ENTRY(priv->subject_field), subject); modest_msg_edit_window_set_priority_flags (MODEST_MSG_EDIT_WINDOW(self), @@ -945,9 +921,6 @@ modest_msg_edit_window_new (TnyMsg *msg, const gchar *account_name) gtk_window_set_icon_from_file (GTK_WINDOW(obj), MODEST_APP_ICON, NULL); - g_signal_connect (G_OBJECT(obj), "delete-event", - G_CALLBACK(on_delete_event), obj); - modest_window_set_active_account (MODEST_WINDOW(obj), account_name); modest_msg_edit_window_setup_toolbar (MODEST_MSG_EDIT_WINDOW (obj)); @@ -1993,11 +1966,13 @@ modest_msg_edit_window_show_cc (ModestMsgEditWindow *window, gboolean show) { ModestMsgEditWindowPrivate *priv = NULL; + const gchar *recipients; g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window)); priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window); gtk_widget_set_no_show_all (priv->cc_caption, TRUE); - if (show) + recipients = modest_recpt_editor_get_recipients (MODEST_RECPT_EDITOR (priv->cc_field)); + if ((show) || ((recipients != NULL) && (recipients[0] != '\0'))) gtk_widget_show (priv->cc_caption); else gtk_widget_hide (priv->cc_caption); @@ -2009,11 +1984,13 @@ modest_msg_edit_window_show_bcc (ModestMsgEditWindow *window, gboolean show) { ModestMsgEditWindowPrivate *priv = NULL; + const gchar *recipients; g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window)); priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window); gtk_widget_set_no_show_all (priv->bcc_caption, TRUE); - if (show) + recipients = modest_recpt_editor_get_recipients (MODEST_RECPT_EDITOR (priv->bcc_field)); + if ((show) || ((recipients != NULL) && (recipients[0] != '\0'))) gtk_widget_show (priv->bcc_caption); else gtk_widget_hide (priv->bcc_caption); @@ -2390,6 +2367,9 @@ setup_insensitive_handlers (ModestMsgEditWindow *window) g_signal_connect (G_OBJECT (widget), "insensitive-press", G_CALLBACK (remove_attachment_insensitive_press), window); widget = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/MenuBar/ViewMenu/ZoomMenu"); g_signal_connect (G_OBJECT (widget), "insensitive-press", G_CALLBACK (zoom_insensitive_press), window); + + widget = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/MenuBar/EditMenu/PasteMenu"); + g_signal_connect (G_OBJECT (widget), "insensitive-press", G_CALLBACK (paste_insensitive_press), window); } static void @@ -2561,8 +2541,8 @@ reset_modified (ModestMsgEditWindow *editor) gtk_text_buffer_set_modified (priv->text_buffer, FALSE); } -static gboolean -is_modified (ModestMsgEditWindow *editor) +gboolean +modest_msg_edit_window_is_modified (ModestMsgEditWindow *editor) { ModestMsgEditWindowPrivate *priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (editor); GtkTextBuffer *buffer; @@ -2748,14 +2728,37 @@ update_paste_dimming (ModestMsgEditWindow *window) ModestWindowPrivate *parent_priv = MODEST_WINDOW_GET_PRIVATE (window); GtkAction *action = NULL; GtkClipboard *clipboard = NULL; + GtkWidget *focused; + gboolean active; + + focused = gtk_window_get_focus (GTK_WINDOW (window)); clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD); + active = gtk_clipboard_wait_is_text_available (clipboard); + + if (active) { + if (MODEST_IS_ATTACHMENTS_VIEW (focused)) + active = FALSE; + } action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/EditMenu/PasteMenu"); - gtk_action_set_sensitive (action, gtk_clipboard_wait_is_text_available (clipboard)); + gtk_action_set_sensitive (action, active); + +} +static void +paste_insensitive_press (GtkWidget *widget, ModestMsgEditWindow *editor) +{ + GtkWidget *focused = gtk_window_get_focus (GTK_WINDOW (editor)); + + if (MODEST_IS_ATTACHMENTS_VIEW (focused)) + hildon_banner_show_information (NULL, NULL, dgettext("hildon-common-strings", "ckct_ib_unable_to_paste_here")); + else + hildon_banner_show_information (NULL, NULL, dgettext("hildon-common-strings", "ecoc_ib_edwin_nothing_to_paste")); + } + static void modest_msg_edit_window_system_clipboard_owner_change (GtkClipboard *clipboard, GdkEvent *event, @@ -2817,3 +2820,22 @@ view_menu_activated (GtkAction *action, update_zoom_dimming (window); } + +gboolean +modest_msg_edit_window_get_sent (ModestMsgEditWindow *window) +{ + ModestMsgEditWindowPrivate *priv; + + priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(window); + return priv->sent; +} + +void +modest_msg_edit_window_set_sent (ModestMsgEditWindow *window, + gboolean sent) +{ + ModestMsgEditWindowPrivate *priv; + + priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(window); + priv->sent = sent; +}