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)
{
gchar *msg_uid;
gboolean sent;
+
+ GtkWidget *app_menu;
};
#define MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \
{
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;
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;
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);
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);
{
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);
+}
+