+ GtkWidget *dialog;
+ GtkWidget *align;
+ GtkWidget *vbox;
+ GtkWidget *priority_hbox;
+ GtkWidget *high_toggle, *medium_toggle, *low_toggle;
+ GtkWidget *captioned;
+ GtkSizeGroup *title_sizegroup, *value_sizegroup;
+ GtkWidget *format_hbox;
+ GtkWidget *html_toggle, *text_toggle;
+ ModestMsgEditWindowPrivate *priv;
+ MessageSettingsHelper helper = {0,};
+
+ g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window));
+ priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
+ helper.window = window;
+ helper.priority_group = NULL;
+ helper.format_group = NULL;
+
+ title_sizegroup = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+ value_sizegroup = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+
+ dialog = gtk_dialog_new_with_buttons (_("mcen_me_message_settings"), NULL,
+ GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
+ _HL("wdgt_bd_done"), GTK_RESPONSE_ACCEPT, NULL);
+ vbox = gtk_vbox_new (FALSE, 0);
+ align = gtk_alignment_new (0.0, 0.0, 1.0, 1.0);
+ gtk_alignment_set_padding (GTK_ALIGNMENT (align), 0, MODEST_MARGIN_DOUBLE, MODEST_MARGIN_DOUBLE, 0);
+ gtk_container_add (GTK_CONTAINER (align), vbox);
+ gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), align);
+ gtk_widget_show (align);
+ gtk_widget_show (vbox);
+
+ /* Priority toggles */
+ priority_hbox = gtk_hbox_new (TRUE, 0);
+ high_toggle = hildon_gtk_toggle_button_new (HILDON_SIZE_FINGER_HEIGHT);
+ 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_gtk_toggle_button_new (HILDON_SIZE_FINGER_HEIGHT);
+ 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_gtk_toggle_button_new (HILDON_SIZE_FINGER_HEIGHT);
+ 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, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (priority_hbox), medium_toggle, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (priority_hbox), high_toggle, TRUE, TRUE, 0);
+ gtk_widget_show_all (priority_hbox);
+ captioned = modest_maemo_utils_create_captioned (title_sizegroup, value_sizegroup,
+ _("mcen_me_editor_message_priority"), FALSE, priority_hbox);
+ gtk_widget_show (captioned);
+ gtk_box_pack_start (GTK_BOX (vbox), captioned, FALSE, FALSE, 0);
+
+ /* format toggles */
+ format_hbox = gtk_hbox_new (TRUE, 0);
+ html_toggle = hildon_gtk_toggle_button_new (HILDON_SIZE_FINGER_HEIGHT);
+ gtk_button_set_label (GTK_BUTTON (html_toggle), _("mcen_me_editor_formatted_text"));
+ helper.format_group = g_slist_prepend (helper.format_group, html_toggle);
+ g_object_set_data (G_OBJECT (html_toggle), "format", GINT_TO_POINTER (MODEST_MSG_EDIT_FORMAT_HTML));
+ g_object_set_data (G_OBJECT (html_toggle), "file-format", GINT_TO_POINTER (MODEST_FILE_FORMAT_FORMATTED_TEXT));
+ text_toggle = hildon_gtk_toggle_button_new (HILDON_SIZE_FINGER_HEIGHT);
+ gtk_button_set_label (GTK_BUTTON (text_toggle), _("mcen_me_editor_plain_text"));
+ helper.format_group = g_slist_prepend (helper.format_group, text_toggle);
+ g_object_set_data (G_OBJECT (text_toggle), "format", GINT_TO_POINTER (MODEST_MSG_EDIT_FORMAT_TEXT));
+ g_object_set_data (G_OBJECT (text_toggle), "file-format", GINT_TO_POINTER (MODEST_FILE_FORMAT_PLAIN_TEXT));
+ gtk_box_pack_start (GTK_BOX (format_hbox), html_toggle, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (format_hbox), text_toggle, TRUE, TRUE, 0);
+ gtk_widget_show_all (format_hbox);
+ gtk_widget_show (format_hbox);
+ gtk_box_pack_start (GTK_BOX (vbox), format_hbox, FALSE, FALSE, 0);
+
+
+ g_object_unref (title_sizegroup);
+ g_object_unref (value_sizegroup);
+
+ /* Set current values */
+ switch (priv->priority_flags) {
+ case TNY_HEADER_FLAG_HIGH_PRIORITY:
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (high_toggle), TRUE);
+ helper.current_priority = GTK_TOGGLE_BUTTON (high_toggle);
+ break;
+ case TNY_HEADER_FLAG_LOW_PRIORITY:
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (low_toggle), TRUE);
+ helper.current_priority = GTK_TOGGLE_BUTTON (low_toggle);
+ break;
+ default:
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (medium_toggle), TRUE);
+ helper.current_priority = GTK_TOGGLE_BUTTON (medium_toggle);
+ break;
+ }
+
+ switch (modest_msg_edit_window_get_format (window)) {
+ case MODEST_MSG_EDIT_FORMAT_TEXT:
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (text_toggle), TRUE);
+ helper.current_format = GTK_TOGGLE_BUTTON (text_toggle);
+ break;
+ case MODEST_MSG_EDIT_FORMAT_HTML:
+ default:
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (html_toggle), TRUE);
+ helper.current_format = GTK_TOGGLE_BUTTON (html_toggle);
+ break;
+ }
+
+ /* Signal connects */
+ g_signal_connect (G_OBJECT (high_toggle), "toggled", G_CALLBACK (on_priority_toggle), &helper);
+ g_signal_connect (G_OBJECT (medium_toggle), "toggled", G_CALLBACK (on_priority_toggle), &helper);
+ g_signal_connect (G_OBJECT (low_toggle), "toggled", G_CALLBACK (on_priority_toggle), &helper);
+ g_signal_connect (G_OBJECT (html_toggle), "toggled", G_CALLBACK (on_format_toggle), &helper);
+ g_signal_connect (G_OBJECT (text_toggle), "toggled", G_CALLBACK (on_format_toggle), &helper);
+
+ /* Save settings if the user clicked on done */
+ if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) {
+ TnyHeaderFlags flags;
+ ModestMsgEditFormat old_format, new_format;
+
+ /* Set priority flags */
+ flags = (TnyHeaderFlags) g_object_get_data (G_OBJECT (helper.current_priority), "priority");
+ if (priv->priority_flags != flags)
+ modest_msg_edit_window_set_priority_flags (window, flags);
+
+ /* Set edit format */
+ old_format = modest_msg_edit_window_get_format (window);
+ new_format = (ModestMsgEditFormat) g_object_get_data (G_OBJECT (helper.current_format), "format");
+ if (old_format != new_format) {
+ gint file_format = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (helper.current_format), "file-format"));
+ modest_msg_edit_window_set_file_format (window, file_format);
+ }
+ }
+
+ gtk_widget_destroy (dialog);
+ g_slist_free (helper.priority_group);
+}
+
+static void
+on_message_settings (GtkAction *action,
+ ModestMsgEditWindow *window)
+{
+ modest_msg_edit_window_show_msg_settings_dialog (window);
+}
+
+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
+setup_menu (ModestMsgEditWindow *self)
+{
+ ModestMsgEditWindowPrivate *priv = NULL;
+
+ g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW(self));
+
+ priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (self);
+
+ /* Settings menu buttons */
+ modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_editor_checknames"), NULL,
+ APP_MENU_CALLBACK (modest_ui_actions_on_check_names),
+ NULL);
+ modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_inbox_undo"), "<Ctrl>z",
+ APP_MENU_CALLBACK (modest_ui_actions_on_undo),
+ MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_undo));
+
+ 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);
+ modest_hildon2_window_add_button_to_menu (MODEST_HILDON2_WINDOW (self), GTK_BUTTON (priv->cc_button),
+ 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);
+ modest_hildon2_window_add_button_to_menu (MODEST_HILDON2_WINDOW (self), GTK_BUTTON (priv->bcc_button),
+ NULL);
+ g_signal_connect (G_OBJECT (priv->bcc_button), "toggled",
+ G_CALLBACK (on_bcc_button_toggled), (gpointer) self);
+
+ modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_editor_attach_inlineimage"), NULL,
+ APP_MENU_CALLBACK (modest_ui_actions_on_insert_image),
+ MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_set_style));
+ modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_inbox_remove_attachments"), NULL,
+ APP_MENU_CALLBACK (modest_ui_actions_on_remove_attachments),
+ MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_editor_remove_attachment));
+ modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_message_settings"), NULL,
+ APP_MENU_CALLBACK (on_message_settings),
+ NULL);
+ modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_viewer_find"), "<Ctrl>f",
+ APP_MENU_CALLBACK (modest_ui_actions_on_toggle_find_in_page),
+ NULL);