From 411ea7b545caa2c22a6d33d30e86698168f2419f Mon Sep 17 00:00:00 2001 From: Jose Dapena Paz Date: Mon, 22 Dec 2008 17:02:26 +0000 Subject: [PATCH] App menu in editor window pmo-trunk-r6993 --- src/hildon2/modest-msg-edit-window.c | 97 +++++++++++++++++++++++++++++++++- 1 file changed, 95 insertions(+), 2 deletions(-) diff --git a/src/hildon2/modest-msg-edit-window.c b/src/hildon2/modest-msg-edit-window.c index 65e1ef8..b12f2e1 100644 --- a/src/hildon2/modest-msg-edit-window.c +++ b/src/hildon2/modest-msg-edit-window.c @@ -173,6 +173,17 @@ static void text_buffer_mark_set (GtkTextBuffer *buffer, ModestMsgEditWindow *userdata); static void on_message_settings (GtkAction *action, ModestMsgEditWindow *window); +static void add_to_menu (ModestMsgEditWindow *self, + HildonAppMenu *menu, + gchar *label, + GCallback callback, + ModestDimmingRulesGroup *group, + GCallback dimming_callback); +static void setup_menu (ModestMsgEditWindow *self, + ModestDimmingRulesGroup *group); +static gboolean modest_msg_edit_window_toggle_menu (HildonWindow *window, + guint button, + guint32 time); static void DEBUG_BUFFER (WPTextBuffer *buffer) { @@ -293,6 +304,8 @@ struct _ModestMsgEditWindowPrivate { gchar *msg_uid; gboolean sent; + + GtkWidget *app_menu; }; #define MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \ @@ -363,12 +376,15 @@ modest_msg_edit_window_class_init (ModestMsgEditWindowClass *klass) { GObjectClass *gobject_class; ModestWindowClass *modest_window_class; + HildonWindowClass *hildon_window_class = (HildonWindowClass *) klass; gobject_class = (GObjectClass*) klass; modest_window_class = (ModestWindowClass*) klass; parent_class = g_type_class_peek_parent (klass); gobject_class->finalize = modest_msg_edit_window_finalize; + hildon_window_class->toggle_menu = modest_msg_edit_window_toggle_menu; + modest_window_class->set_zoom_func = set_zoom_do_nothing; modest_window_class->get_zoom_func = get_zoom_do_nothing; modest_window_class->zoom_plus_func = on_zoom_minus_plus_not_implemented; @@ -425,6 +441,7 @@ modest_msg_edit_window_init (ModestMsgEditWindow *obj) priv->last_upper = 0.0; priv->font_dialog = NULL; + priv->app_menu = NULL; if (!is_wp_text_buffer_started) { is_wp_text_buffer_started = TRUE; @@ -1467,8 +1484,6 @@ modest_msg_edit_window_new (TnyMsg *msg, const gchar *account_name, gboolean pre parent_priv = MODEST_WINDOW_GET_PRIVATE (obj); /* Menubar. Update the state of some toggles */ - parent_priv->menubar = modest_maemo_utils_get_manager_menubar_as_menu (parent_priv->ui_manager, "/MenuBar"); - hildon_window_set_menu (HILDON_WINDOW (obj), GTK_MENU (parent_priv->menubar)); priv->from_field_protos = get_transports (); modest_selector_picker_set_pair_list (MODEST_SELECTOR_PICKER (priv->from_field), priv->from_field_protos); modest_selector_picker_set_active_id (MODEST_SELECTOR_PICKER (priv->from_field), (gpointer) account_name); @@ -1515,6 +1530,10 @@ modest_msg_edit_window_new (TnyMsg *msg, const gchar *account_name, gboolean pre modest_ui_dimming_manager_insert_rules_group (parent_priv->ui_dimming_manager, menu_rules_group); modest_ui_dimming_manager_insert_rules_group (parent_priv->ui_dimming_manager, toolbar_rules_group); modest_ui_dimming_manager_insert_rules_group (parent_priv->ui_dimming_manager, clipboard_rules_group); + + /* Setup app menu */ + setup_menu (MODEST_MSG_EDIT_WINDOW (obj), menu_rules_group); + /* Checks the dimming rules */ g_object_unref (menu_rules_group); g_object_unref (toolbar_rules_group); @@ -3877,3 +3896,77 @@ static void on_message_settings (GtkAction *action, { modest_msg_edit_window_show_msg_settings_dialog (window); } + +static void add_to_menu (ModestMsgEditWindow *self, + HildonAppMenu *menu, + gchar *label, + GCallback callback, + ModestDimmingRulesGroup *group, + GCallback dimming_callback) +{ + GtkWidget *button; + + button = gtk_button_new_with_label (label); + g_signal_connect_after (G_OBJECT (button), "clicked", + callback, (gpointer) self); + if (dimming_callback) + modest_dimming_rules_group_add_widget_rule (group, + button, + dimming_callback, + MODEST_WINDOW (self)); + hildon_app_menu_append (menu, GTK_BUTTON (button)); +} + +static void +setup_menu (ModestMsgEditWindow *self, ModestDimmingRulesGroup *group) +{ + ModestMsgEditWindowPrivate *priv = NULL; + + g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW(self)); + + priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (self); + + priv->app_menu = hildon_app_menu_new (); + + /* Settings menu buttons */ + add_to_menu (self, HILDON_APP_MENU (priv->app_menu), _("mcen_me_editor_checknames"), + G_CALLBACK (modest_ui_actions_on_check_names), + group, NULL); + add_to_menu (self, HILDON_APP_MENU (priv->app_menu), _("mcen_me_inbox_undo"), + G_CALLBACK (modest_ui_actions_on_undo), + group, NULL); + + /* TODO: Show/Hide CC/BCC check buttons */ + + add_to_menu (self, HILDON_APP_MENU (priv->app_menu), _("mcen_me_editor_attach_inlineimage"), + G_CALLBACK (modest_ui_actions_on_insert_image), + group, NULL); + add_to_menu (self, HILDON_APP_MENU (priv->app_menu), _("mcen_me_inbox_remove_attachments"), + G_CALLBACK (modest_ui_actions_on_remove_attachments), + group, NULL); + add_to_menu (self, HILDON_APP_MENU (priv->app_menu), _("TODO: Message settings..."), + G_CALLBACK (on_message_settings), + group, NULL); + + /* TODO: find in toolbar check button */ + + hildon_stackable_window_set_main_menu (HILDON_STACKABLE_WINDOW (self), + HILDON_APP_MENU (priv->app_menu)); +} + +static gboolean +modest_msg_edit_window_toggle_menu (HildonWindow *window, + guint button, + guint32 time) +{ + ModestMsgEditWindowPrivate *priv = NULL; + + priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window); + + modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (window)); + + gtk_widget_queue_resize (priv->app_menu); + + return HILDON_WINDOW_CLASS (parent_class)->toggle_menu (window, button, time); +} + -- 1.7.9.5