From d098e6745f49277f857e672500a2df4a8beaca20 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Dapena=20Paz?= Date: Fri, 22 Jan 2010 17:55:19 +0100 Subject: [PATCH] New show toolbar button in editor (fixes NB#152559). --- src/hildon2/modest-hildon2-window-mgr.c | 8 +++++- src/hildon2/modest-msg-edit-window.c | 48 +++++++++++++++++++++++++------ src/modest-ui-dimming-rules.c | 21 ++++++++++++++ src/modest-ui-dimming-rules.h | 1 + 4 files changed, 69 insertions(+), 9 deletions(-) diff --git a/src/hildon2/modest-hildon2-window-mgr.c b/src/hildon2/modest-hildon2-window-mgr.c index 46db0f0..a24f2ad 100644 --- a/src/hildon2/modest-hildon2-window-mgr.c +++ b/src/hildon2/modest-hildon2-window-mgr.c @@ -592,7 +592,13 @@ modest_hildon2_window_mgr_register_window (ModestWindowMgr *self, } /* Show toolbar always */ - modest_window_show_toolbar (window, TRUE); + if (MODEST_MSG_EDIT_WINDOW (window)) { + gboolean show_toolbar; + show_toolbar = modest_conf_get_bool (modest_runtime_get_conf (), MODEST_CONF_EDIT_WINDOW_SHOW_TOOLBAR, NULL); + modest_window_show_toolbar (window, show_toolbar); + } else { + modest_window_show_toolbar (window, TRUE); + } return TRUE; fail: diff --git a/src/hildon2/modest-msg-edit-window.c b/src/hildon2/modest-msg-edit-window.c index b980993..3131eb5 100644 --- a/src/hildon2/modest-msg-edit-window.c +++ b/src/hildon2/modest-msg-edit-window.c @@ -172,6 +172,8 @@ static void text_buffer_mark_set (GtkTextBuffer *buffer, GtkTextIter *iter, GtkTextMark *mark, ModestMsgEditWindow *userdata); +static void on_show_toolbar_button_toggled (HildonCheckButton *button, + ModestMsgEditWindow *window); static void on_message_settings (GtkAction *action, ModestMsgEditWindow *window); static void setup_menu (ModestMsgEditWindow *self); @@ -323,6 +325,7 @@ struct _ModestMsgEditWindowPrivate { GtkWidget *app_menu; GtkWidget *cc_button; GtkWidget *bcc_button; + GtkWidget *show_toolbar_button; GtkWidget *max_chars_banner; @@ -1961,11 +1964,15 @@ modest_msg_edit_window_set_format (ModestMsgEditWindow *self, case MODEST_MSG_EDIT_FORMAT_HTML: wp_text_buffer_enable_rich_text (WP_TEXT_BUFFER (priv->text_buffer), TRUE); update_signature (self, priv->last_from_account, priv->last_from_account); - if (parent_priv->toolbar) gtk_widget_show (parent_priv->toolbar); + if (parent_priv->toolbar) + on_show_toolbar_button_toggled (HILDON_CHECK_BUTTON (priv->show_toolbar_button), + MODEST_MSG_EDIT_WINDOW (self)); break; case MODEST_MSG_EDIT_FORMAT_TEXT: wp_text_buffer_enable_rich_text (WP_TEXT_BUFFER (priv->text_buffer), FALSE); - if (parent_priv->toolbar) gtk_widget_hide (parent_priv->toolbar); + if (parent_priv->toolbar) + on_show_toolbar_button_toggled (HILDON_CHECK_BUTTON (priv->show_toolbar_button), + MODEST_MSG_EDIT_WINDOW (self)); break; default: g_return_if_reached (); @@ -2944,6 +2951,10 @@ modest_msg_edit_window_show_toolbar (ModestWindow *self, } else { gtk_widget_hide (GTK_WIDGET (parent_priv->toolbar)); } + modest_conf_set_bool(modest_runtime_get_conf(), MODEST_CONF_EDIT_WINDOW_SHOW_TOOLBAR, show_toolbar, NULL); + if (hildon_check_button_get_active (HILDON_CHECK_BUTTON (priv->show_toolbar_button)) != show_toolbar) { + hildon_check_button_set_active (HILDON_CHECK_BUTTON (priv->show_toolbar_button), show_toolbar); + } } void @@ -3017,7 +3028,8 @@ modest_msg_edit_window_set_file_format (ModestMsgEditWindow *window, remove_tags (WP_TEXT_BUFFER (priv->text_buffer)); update_signature (window, priv->last_from_account, priv->last_from_account); if (parent_priv->toolbar) - gtk_widget_show (parent_priv->toolbar); + on_show_toolbar_button_toggled (HILDON_CHECK_BUTTON (priv->show_toolbar_button), + MODEST_MSG_EDIT_WINDOW (window)); break; case MODEST_FILE_FORMAT_PLAIN_TEXT: { @@ -3029,7 +3041,8 @@ modest_msg_edit_window_set_file_format (ModestMsgEditWindow *window, if (response == GTK_RESPONSE_OK) { wp_text_buffer_enable_rich_text (WP_TEXT_BUFFER (priv->text_buffer), FALSE); if (parent_priv->toolbar) - gtk_widget_hide (parent_priv->toolbar); + on_show_toolbar_button_toggled (HILDON_CHECK_BUTTON (priv->show_toolbar_button), + MODEST_MSG_EDIT_WINDOW (window)); } else { GtkToggleAction *action = GTK_TOGGLE_ACTION (gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/FormatMenu/FileFormatFormattedTextMenu")); modest_utils_toggle_action_set_active_block_notify (action, TRUE); @@ -3199,10 +3212,8 @@ modest_msg_edit_window_undo (ModestMsgEditWindow *window) is_rich_text = wp_text_buffer_is_rich_text (WP_TEXT_BUFFER (priv->text_buffer)); if (parent_priv->toolbar && was_rich_text != is_rich_text) { - if (is_rich_text) - gtk_widget_show (parent_priv->toolbar); - else - gtk_widget_hide (parent_priv->toolbar); + on_show_toolbar_button_toggled (HILDON_CHECK_BUTTON (priv->show_toolbar_button), + MODEST_MSG_EDIT_WINDOW (window)); } modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window)); @@ -4365,6 +4376,16 @@ on_message_settings (GtkAction *action, } static void +on_show_toolbar_button_toggled (HildonCheckButton *button, + ModestMsgEditWindow *window) +{ + g_return_if_fail (MODEST_MSG_EDIT_WINDOW (window)); + + modest_msg_edit_window_show_toolbar (MODEST_WINDOW (window), + hildon_check_button_get_active (button)); +} + +static void on_cc_button_toggled (HildonCheckButton *button, ModestMsgEditWindow *window) { @@ -4441,6 +4462,17 @@ setup_menu (ModestMsgEditWindow *self) modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_viewer_find"), "f", APP_MENU_CALLBACK (modest_ui_actions_on_toggle_find_in_page), NULL); + priv->show_toolbar_button = hildon_check_button_new (0); + gtk_button_set_label (GTK_BUTTON (priv->show_toolbar_button), _("mcen_bd_show_toolbar")); + hildon_check_button_set_active (HILDON_CHECK_BUTTON (priv->show_toolbar_button), + FALSE); + modest_hildon2_window_add_button_to_menu (MODEST_HILDON2_WINDOW (self), GTK_BUTTON (priv->show_toolbar_button), + MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_editor_show_toolbar)); + g_signal_connect (G_OBJECT (priv->show_toolbar_button), "toggled", + G_CALLBACK (on_show_toolbar_button_toggled), (gpointer) self); + gtk_button_set_alignment (GTK_BUTTON (priv->show_toolbar_button), 0.5, 0.5); + gtk_button_set_alignment (GTK_BUTTON (priv->show_toolbar_button), 0.5, 0.5); + } static void diff --git a/src/modest-ui-dimming-rules.c b/src/modest-ui-dimming-rules.c index 74884b2..7ea5d72 100644 --- a/src/modest-ui-dimming-rules.c +++ b/src/modest-ui-dimming-rules.c @@ -1810,6 +1810,27 @@ modest_ui_dimming_rules_on_set_style (ModestWindow *win, gpointer user_data) } gboolean +modest_ui_dimming_rules_on_editor_show_toolbar (ModestWindow *win, gpointer user_data) +{ + ModestDimmingRule *rule = NULL; + gboolean dimmed = FALSE; + + g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE); + g_return_val_if_fail (MODEST_IS_MSG_EDIT_WINDOW (win), TRUE); + rule = MODEST_DIMMING_RULE (user_data); + + /* Check common dimming rules */ + ModestMsgEditFormat format; + format = modest_msg_edit_window_get_format (MODEST_MSG_EDIT_WINDOW (win)); + + dimmed = (format != MODEST_MSG_EDIT_FORMAT_HTML); + if (dimmed) + modest_dimming_rule_set_notification (rule, _("mcen_ib_item_unavailable_plaintext")); + + return dimmed; +} + +gboolean modest_ui_dimming_rules_on_zoom (ModestWindow *win, gpointer user_data) { ModestDimmingRule *rule = NULL; diff --git a/src/modest-ui-dimming-rules.h b/src/modest-ui-dimming-rules.h index f1c9709..57779bb 100644 --- a/src/modest-ui-dimming-rules.h +++ b/src/modest-ui-dimming-rules.h @@ -81,6 +81,7 @@ gboolean modest_ui_dimming_rules_on_send_receive_all (ModestWindow *win, gpointe gboolean modest_ui_dimming_rules_on_add_to_contacts (ModestWindow *win, gpointer user_data); gboolean modest_ui_dimming_rules_on_find_in_msg (ModestWindow *win, gpointer user_data); gboolean modest_ui_dimming_rules_on_set_style (ModestWindow *win, gpointer user_data); +gboolean modest_ui_dimming_rules_on_editor_show_toolbar (ModestWindow *win, gpointer user_data); gboolean modest_ui_dimming_rules_on_zoom (ModestWindow *win, gpointer user_data); gboolean modest_ui_dimming_rules_on_send (ModestWindow *win, gpointer user_data); gboolean modest_ui_dimming_rules_on_editor_remove_attachment (ModestWindow *win, gpointer user_data); -- 1.7.9.5