X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmaemo%2Fmodest-msg-edit-window.c;h=c98cb0dab76c25da9ef52a5072971cb6b684575e;hp=393d8927e0cb8d6f76fe82b1d61bfc3d6cc8dc52;hb=a8d18c7cdfb4239dc9e36f01f5a9a4cb9ce13032;hpb=2a8361d2e5a9ef15671d1c5264d01b4e7983eea9 diff --git a/src/maemo/modest-msg-edit-window.c b/src/maemo/modest-msg-edit-window.c index 393d892..c98cb0d 100644 --- a/src/maemo/modest-msg-edit-window.c +++ b/src/maemo/modest-msg-edit-window.c @@ -90,6 +90,7 @@ static void modest_msg_edit_window_init (ModestMsgEditWindow *obj); static void modest_msg_edit_window_finalize (GObject *obj); static gboolean msg_body_focus (GtkWidget *focus, GdkEventFocus *event, gpointer userdata); +static void body_changed (GtkTextBuffer *buffer, ModestMsgEditWindow *editor); static void recpt_field_changed (GtkTextBuffer *buffer, ModestMsgEditWindow *editor); static void send_insensitive_press (GtkWidget *widget, ModestMsgEditWindow *editor); static void style_insensitive_press (GtkWidget *widget, ModestMsgEditWindow *editor); @@ -141,6 +142,7 @@ static void update_paste_dimming (ModestMsgEditWindow *window); static void update_copy_cut_dimming (ModestMsgEditWindow *window); static void update_select_all_dimming (ModestMsgEditWindow *window); static void update_zoom_dimming (ModestMsgEditWindow *window); +static void update_send_dimming (ModestMsgEditWindow *window); /* Find toolbar */ static void modest_msg_edit_window_find_toolbar_search (GtkWidget *widget, @@ -542,6 +544,8 @@ init_window (ModestMsgEditWindow *obj) G_CALLBACK (text_buffer_can_undo), obj); g_signal_connect (G_OBJECT (priv->text_buffer), "can-redo", G_CALLBACK (text_buffer_can_redo), obj); + g_signal_connect (G_OBJECT (priv->text_buffer), "changed", + G_CALLBACK (body_changed), obj); g_signal_connect (G_OBJECT (obj), "window-state-event", G_CALLBACK (modest_msg_edit_window_window_state_event), NULL); @@ -1509,8 +1513,8 @@ text_buffer_refresh_attributes (WPTextBuffer *buffer, ModestMsgEditWindow *windo action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/ToolBar/ActionsItalics"); modest_maemo_toggle_action_set_active_block_notify (GTK_TOGGLE_ACTION (action), buffer_format->italic); - action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/FormatMenu/BulletedListMenu"); - modest_maemo_toggle_action_set_active_block_notify (GTK_TOGGLE_ACTION (action), buffer_format->bullet); +/* action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/FormatMenu/BulletedListMenu"); */ +/* modest_maemo_toggle_action_set_active_block_notify (GTK_TOGGLE_ACTION (action), buffer_format->bullet); */ g_signal_handlers_block_by_func (G_OBJECT (priv->font_color_button), G_CALLBACK (modest_msg_edit_window_color_button_change), @@ -2533,8 +2537,8 @@ update_dimmed (ModestMsgEditWindow *window) action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/FormatMenu/SelectFontMenu"); gtk_action_set_sensitive (action, rich_text && editor_focused); - action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/FormatMenu/BulletedListMenu"); - gtk_action_set_sensitive (action, rich_text && editor_focused); +/* action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/FormatMenu/BulletedListMenu"); */ +/* gtk_action_set_sensitive (action, rich_text && editor_focused); */ action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/FormatMenu/AlignmentMenu"); gtk_action_set_sensitive (action, rich_text && editor_focused); action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/FormatMenu/AlignmentMenu/AlignmentLeftMenu"); @@ -2629,6 +2633,25 @@ text_buffer_delete_images_by_id (GtkTextBuffer *buffer, const gchar * image_id) } } +gboolean +message_is_empty (ModestMsgEditWindow *window) +{ + ModestMsgEditWindowPrivate *priv = NULL; + + g_return_val_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window), FALSE); + priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window); + + /** TODO: Add wpeditor API to tell us if there is any _visible_ text, + * so we can ignore markup. + */ + GtkTextBuffer *buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (priv->msg_body)); + gint count = 0; + if (buf) + count = gtk_text_buffer_get_char_count (buf); + + return count == 0; +} + static gboolean msg_body_focus (GtkWidget *focus, GdkEventFocus *event, @@ -2643,30 +2666,25 @@ static void recpt_field_changed (GtkTextBuffer *buffer, ModestMsgEditWindow *editor) { - ModestWindowPrivate *parent_priv = MODEST_WINDOW_GET_PRIVATE (editor); - ModestMsgEditWindowPrivate *priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (editor); - GtkTextBuffer *to_buffer, *cc_buffer, *bcc_buffer; - gboolean dim = FALSE; - GtkAction *action; + update_send_dimming (editor); +} - to_buffer = modest_recpt_editor_get_buffer (MODEST_RECPT_EDITOR (priv->to_field)); - cc_buffer = modest_recpt_editor_get_buffer (MODEST_RECPT_EDITOR (priv->cc_field)); - bcc_buffer = modest_recpt_editor_get_buffer (MODEST_RECPT_EDITOR (priv->bcc_field)); - - dim = ((gtk_text_buffer_get_char_count (to_buffer) + - gtk_text_buffer_get_char_count (cc_buffer) + - gtk_text_buffer_get_char_count (bcc_buffer)) == 0); - - action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/ToolBar/ToolbarSend"); - gtk_action_set_sensitive (action, !dim); - action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/EmailMenu/SendMenu"); - gtk_action_set_sensitive (action, !dim); +static void +body_changed (GtkTextBuffer *buffer, ModestMsgEditWindow *editor) +{ + update_send_dimming (editor); } static void send_insensitive_press (GtkWidget *widget, ModestMsgEditWindow *editor) { - hildon_banner_show_information (NULL, NULL, _("mcen_ib_add_recipients_first")); + ModestMsgEditWindowPrivate *priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (editor); + const gchar *subject = gtk_entry_get_text (GTK_ENTRY (priv->subject_field)); + if (message_is_empty(editor) || (subject == NULL || subject[0] == '\0')) { + hildon_banner_show_information (NULL, NULL, _("mcen_ib_subject_or_body_not_modified")); + } else { + hildon_banner_show_information (NULL, NULL, _("mcen_ib_add_recipients_first")); + } } static void @@ -2720,6 +2738,9 @@ modest_msg_edit_window_is_modified (ModestMsgEditWindow *editor) return FALSE; } + + + gboolean modest_msg_edit_window_check_names (ModestMsgEditWindow *window, gboolean add_to_addressbook) { @@ -2815,6 +2836,7 @@ subject_field_changed (GtkEditable *editable, ModestMsgEditWindowPrivate *priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window); update_window_title (window); gtk_text_buffer_set_modified (priv->text_buffer, TRUE); + update_send_dimming (window); } static void @@ -2851,25 +2873,6 @@ subject_field_insert_text (GtkEditable *editable, g_string_free (result, TRUE); } -gboolean -message_is_empty (ModestMsgEditWindow *window) -{ - ModestMsgEditWindowPrivate *priv = NULL; - - g_return_val_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window), FALSE); - priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window); - - /** TODO: Add wpeditor API to tell us if there is any _visible_ text, - * so we can ignore markup. - */ - GtkTextBuffer *buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (priv->msg_body)); - gint count = 0; - if (buf) - count = gtk_text_buffer_get_char_count (buf); - - return count == 0; -} - void modest_msg_edit_window_toggle_find_toolbar (ModestMsgEditWindow *window, gboolean show) @@ -3117,6 +3120,33 @@ update_zoom_dimming (ModestMsgEditWindow *window) } static void +update_send_dimming (ModestMsgEditWindow *window) +{ + ModestWindowPrivate *parent_priv = MODEST_WINDOW_GET_PRIVATE (window); + ModestMsgEditWindowPrivate *priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window); + GtkTextBuffer *to_buffer, *cc_buffer, *bcc_buffer; + const gchar *subject; + gboolean dim = FALSE; + GtkAction *action; + + to_buffer = modest_recpt_editor_get_buffer (MODEST_RECPT_EDITOR (priv->to_field)); + cc_buffer = modest_recpt_editor_get_buffer (MODEST_RECPT_EDITOR (priv->cc_field)); + bcc_buffer = modest_recpt_editor_get_buffer (MODEST_RECPT_EDITOR (priv->bcc_field)); + subject = gtk_entry_get_text (GTK_ENTRY (priv->subject_field)); + + dim = ((gtk_text_buffer_get_char_count (to_buffer) + + gtk_text_buffer_get_char_count (cc_buffer) + + gtk_text_buffer_get_char_count (bcc_buffer)) == 0) + || (subject == NULL || subject[0] == '\0') + || message_is_empty(window); + + action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/ToolBar/ToolbarSend"); + gtk_action_set_sensitive (action, !dim); + action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/EmailMenu/SendMenu"); + gtk_action_set_sensitive (action, !dim); +} + +static void edit_menu_activated (GtkAction *action, gpointer userdata) {