X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fhildon2%2Fmodest-msg-edit-window.c;h=70bade850e06f1d293c1acda75b879adec90bf63;hp=419aaa24d0916fe20a91a75341395220f78d96c6;hb=ad4a6b87edebd6ef1974d67cea855f5a9fdd39ac;hpb=6670584eec124f8db1a5bab52e380f50f92d66e9 diff --git a/src/hildon2/modest-msg-edit-window.c b/src/hildon2/modest-msg-edit-window.c index 419aaa2..70bade8 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,11 @@ struct _ModestMsgEditWindowPrivate { gchar *msg_uid; gboolean sent; + + GtkWidget *app_menu; + GtkWidget *cc_button; + GtkWidget *bcc_button; + GtkWidget *find_toolbar_button; }; #define MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \ @@ -363,12 +379,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 +444,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; @@ -1117,7 +1137,6 @@ set_msg (ModestMsgEditWindow *self, TnyMsg *msg, gboolean preserve_is_rich) TnyHeaderFlags priority_flags; TnyFolder *msg_folder; gboolean is_html = FALSE; - GtkAction *action; gboolean field_view_set; g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (self)); @@ -1136,7 +1155,6 @@ set_msg (ModestMsgEditWindow *self, TnyMsg *msg, gboolean preserve_is_rich) if (to) modest_recpt_editor_set_recipients (MODEST_RECPT_EDITOR (priv->to_field), to); - action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/ViewMenu/ViewCcFieldMenu"); field_view_set = TRUE; if (cc) { modest_recpt_editor_set_recipients (MODEST_RECPT_EDITOR (priv->cc_field), cc); @@ -1147,10 +1165,8 @@ set_msg (ModestMsgEditWindow *self, TnyMsg *msg, gboolean preserve_is_rich) gtk_widget_hide (priv->cc_caption); field_view_set = FALSE; } - if (action) - gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), field_view_set); + hildon_check_button_set_active (HILDON_CHECK_BUTTON (priv->cc_button), field_view_set); - action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/ViewMenu/ViewBccFieldMenu"); field_view_set = TRUE; if (bcc) { modest_recpt_editor_set_recipients (MODEST_RECPT_EDITOR (priv->bcc_field), bcc); @@ -1161,8 +1177,7 @@ set_msg (ModestMsgEditWindow *self, TnyMsg *msg, gboolean preserve_is_rich) gtk_widget_hide (priv->bcc_caption); field_view_set = FALSE; } - if (action) - gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), field_view_set); + hildon_check_button_set_active (HILDON_CHECK_BUTTON (priv->bcc_button), field_view_set); if (subject) @@ -1467,8 +1482,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 +1528,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); @@ -3434,12 +3451,11 @@ static void modest_msg_edit_window_find_toolbar_close (GtkWidget *widget, ModestMsgEditWindow *window) { - GtkToggleAction *toggle; - ModestWindowPrivate *parent_priv; - parent_priv = MODEST_WINDOW_GET_PRIVATE (window); + ModestMsgEditWindowPrivate *priv; + + priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(window); - toggle = GTK_TOGGLE_ACTION (gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/ToolsMenu/FindInMessageMenu")); - gtk_toggle_action_set_active (toggle, FALSE); + hildon_check_button_set_active (HILDON_CHECK_BUTTON (priv->find_toolbar_button), FALSE); } gboolean @@ -3766,15 +3782,15 @@ modest_msg_edit_window_show_msg_settings_dialog (ModestMsgEditWindow *window) /* Priority toggles */ priority_hbox = gtk_hbox_new (TRUE, 0); high_toggle = hildon_check_button_new (HILDON_SIZE_FINGER_HEIGHT); - gtk_button_set_label (GTK_BUTTON (high_toggle), _("TDHigh")); + gtk_button_set_label (GTK_BUTTON (high_toggle), _("mcen_me_editor_priority_high")); helper.priority_group = g_slist_prepend (helper.priority_group, high_toggle); g_object_set_data (G_OBJECT (high_toggle), "priority", GINT_TO_POINTER (TNY_HEADER_FLAG_HIGH_PRIORITY)); medium_toggle = hildon_check_button_new (HILDON_SIZE_FINGER_HEIGHT); - gtk_button_set_label (GTK_BUTTON (medium_toggle), _("TDNormal")); + gtk_button_set_label (GTK_BUTTON (medium_toggle), _("mcen_me_editor_priority_normal")); helper.priority_group = g_slist_prepend (helper.priority_group, medium_toggle); g_object_set_data (G_OBJECT (medium_toggle), "priority", GINT_TO_POINTER (TNY_HEADER_FLAG_NORMAL_PRIORITY)); low_toggle = hildon_check_button_new (HILDON_SIZE_FINGER_HEIGHT); - gtk_button_set_label (GTK_BUTTON (low_toggle), _("TDLow")); + gtk_button_set_label (GTK_BUTTON (low_toggle), _("mcen_me_editor_priority_low")); helper.priority_group = g_slist_prepend (helper.priority_group, low_toggle); g_object_set_data (G_OBJECT (low_toggle), "priority", GINT_TO_POINTER (TNY_HEADER_FLAG_LOW_PRIORITY)); gtk_box_pack_start (GTK_BOX (priority_hbox), low_toggle, FALSE, FALSE, 0); @@ -3782,37 +3798,38 @@ modest_msg_edit_window_show_msg_settings_dialog (ModestMsgEditWindow *window) gtk_box_pack_start (GTK_BOX (priority_hbox), high_toggle, FALSE, FALSE, 0); gtk_widget_show_all (priority_hbox); captioned = modest_maemo_utils_create_captioned (title_sizegroup, value_sizegroup, - _("TODO: Priority:"), priority_hbox); + _("mcen_me_editor_message_priority"), priority_hbox); gtk_widget_show (captioned); gtk_box_pack_start (GTK_BOX (vbox), captioned, FALSE, FALSE, 0); /* format selector */ format_selector = hildon_touch_selector_new_text (); - hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (format_selector), _("TD:Plain text")); - hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (format_selector), _("TD:Formatted text")); + hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (format_selector), _("mcen_me_editor_plain_text")); + hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (format_selector), _("mcen_me_editor_formatted_text")); format_picker = hildon_picker_button_new (MODEST_EDITABLE_SIZE, HILDON_BUTTON_ARRANGEMENT_HORIZONTAL); hildon_picker_button_set_selector (HILDON_PICKER_BUTTON (format_picker), HILDON_TOUCH_SELECTOR (format_selector)); modest_maemo_utils_set_hbutton_layout (title_sizegroup, value_sizegroup, - _("TODO:Format:"), format_picker); + _("mcen_me_editor_format"), format_picker); gtk_widget_show_all (format_picker); gtk_box_pack_start (GTK_BOX (vbox), format_picker, FALSE, FALSE, 0); /* alignment selector */ align_selector = hildon_touch_selector_new_text (); - hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (align_selector), _("TD:Left")); - hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (align_selector), _("TD:Centered")); - hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (align_selector), _("TD:Right")); + hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (align_selector), _("mcen_me_editor_align_left")); + hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (align_selector), _("mcen_me_editor_align_centred")); + hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (align_selector), _("mcen_me_editor_align_right")); helper.align_picker = hildon_picker_button_new (MODEST_EDITABLE_SIZE, HILDON_BUTTON_ARRANGEMENT_HORIZONTAL); hildon_picker_button_set_selector (HILDON_PICKER_BUTTON (helper.align_picker), HILDON_TOUCH_SELECTOR (align_selector)); modest_maemo_utils_set_hbutton_layout (title_sizegroup, value_sizegroup, - _("TODO:Alignment:"), helper.align_picker); + _("mcen_me_editor_align"), helper.align_picker); gtk_widget_show_all (helper.align_picker); gtk_box_pack_start (GTK_BOX (vbox), helper.align_picker, FALSE, FALSE, 0); g_object_unref (title_sizegroup); g_object_unref (value_sizegroup); + gtk_window_set_title (GTK_WINDOW (dialog), _("TODO: Message settings")); /* Set current values */ switch (priv->priority_flags) { @@ -3876,3 +3893,138 @@ static void on_message_settings (GtkAction *action, { modest_msg_edit_window_show_msg_settings_dialog (window); } + + +static void add_button_to_menu (ModestMsgEditWindow *self, + HildonAppMenu *menu, + GtkButton *button, + ModestDimmingRulesGroup *group, + GCallback dimming_callback) +{ + if (dimming_callback) + modest_dimming_rules_group_add_widget_rule (group, + GTK_WIDGET (button), + dimming_callback, + MODEST_WINDOW (self)); + hildon_app_menu_append (menu, GTK_BUTTON (button)); +} + +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); + add_button_to_menu (self, menu, GTK_BUTTON (button), group, dimming_callback); +} + +static void +on_cc_button_toggled (HildonCheckButton *button, + ModestMsgEditWindow *window) +{ + g_return_if_fail (MODEST_MSG_EDIT_WINDOW (window)); + + modest_msg_edit_window_show_cc (MODEST_MSG_EDIT_WINDOW (window), + hildon_check_button_get_active (button)); +} + +static void +on_bcc_button_toggled (HildonCheckButton *button, + ModestMsgEditWindow *window) +{ + g_return_if_fail (MODEST_MSG_EDIT_WINDOW (window)); + + modest_msg_edit_window_show_bcc (MODEST_MSG_EDIT_WINDOW (window), + hildon_check_button_get_active (button)); +} + +static void +on_find_toolbar_button_toggled (HildonCheckButton *button, + ModestMsgEditWindow *window) +{ + g_return_if_fail (MODEST_MSG_EDIT_WINDOW (window)); + modest_msg_edit_window_toggle_find_toolbar (MODEST_MSG_EDIT_WINDOW (window), + hildon_check_button_get_active (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); + + priv->cc_button = hildon_check_button_new (0); + gtk_button_set_label (GTK_BUTTON (priv->cc_button), _("mcen_me_editor_showcc")); + hildon_check_button_set_active (HILDON_CHECK_BUTTON (priv->cc_button), + FALSE); + add_button_to_menu (self, HILDON_APP_MENU (priv->app_menu), GTK_BUTTON (priv->cc_button), + group, NULL); + g_signal_connect (G_OBJECT (priv->cc_button), "toggled", + G_CALLBACK (on_cc_button_toggled), (gpointer) self); + priv->bcc_button = hildon_check_button_new (0); + gtk_button_set_label (GTK_BUTTON (priv->bcc_button), _("mcen_me_editor_showbcc")); + hildon_check_button_set_active (HILDON_CHECK_BUTTON (priv->bcc_button), + FALSE); + add_button_to_menu (self, HILDON_APP_MENU (priv->app_menu), GTK_BUTTON (priv->bcc_button), + group, NULL); + g_signal_connect (G_OBJECT (priv->bcc_button), "toggled", + G_CALLBACK (on_bcc_button_toggled), (gpointer) self); + + 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); + priv->find_toolbar_button = hildon_check_button_new (0); + gtk_button_set_label (GTK_BUTTON (priv->find_toolbar_button), _("mcen_me_viewer_find")); + hildon_check_button_set_active (HILDON_CHECK_BUTTON (priv->find_toolbar_button), + FALSE); + add_button_to_menu (self, HILDON_APP_MENU (priv->app_menu), GTK_BUTTON (priv->find_toolbar_button), + group, NULL); + g_signal_connect (G_OBJECT (priv->find_toolbar_button), "toggled", + G_CALLBACK (on_find_toolbar_button_toggled), (gpointer) self); + + 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); +} +