X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fwidgets%2Fmodest-msg-edit-window.c;h=ea6db37f8cab28e949510e841a4833e5e30c4c3b;hb=38454a69440197510b16c5a5444e19f234c91690;hp=0c1cbf354fd623e5e423dacd229433f9502cbcca;hpb=0a35653456b7988b0c88e3e6d5b54ba4c46e9dbc;p=modest diff --git a/src/widgets/modest-msg-edit-window.c b/src/widgets/modest-msg-edit-window.c index 0c1cbf3..ea6db37 100644 --- a/src/widgets/modest-msg-edit-window.c +++ b/src/widgets/modest-msg-edit-window.c @@ -71,7 +71,6 @@ #include #include #include -#include "modest-color-button.h" #include #ifdef MODEST_USE_CALENDAR_WIDGETS @@ -81,15 +80,23 @@ #include #include "modest-maemo-utils.h" #include "modest-hildon-includes.h" +#include "modest-color-button.h" #endif -#define DEFAULT_FONT_SIZE 3 -#define DEFAULT_FONT 2 -#define DEFAULT_SIZE_BUTTON_FONT_FAMILY "Sans" #define DEFAULT_MAIN_VBOX_SPACING 0 #define SUBJECT_MAX_LENGTH 1000 #define IMAGE_MAX_WIDTH 560 +#ifdef MODEST_TOOLKIT_HILDON2 +#define DEFAULT_SIZE_BUTTON_FONT_FAMILY "Sans" #define DEFAULT_FONT_SCALE 1.5 +#define DEFAULT_FONT_SIZE 3 +#define DEFAULT_FONT 2 +#else +#define DEFAULT_SIZE_BUTTON_FONT_FAMILY "Sans" +#define DEFAULT_FONT_SCALE 1.0 +#define DEFAULT_FONT_SIZE 2 +#define DEFAULT_FONT 2 +#endif #define ATTACHMENT_BUTTON_WIDTH 118 #define MAX_FROM_VALUE 36 #define MAX_BODY_LENGTH 128*1024 @@ -125,6 +132,13 @@ static void subject_field_insert_text (GtkEditable *editable, ModestMsgEditWindow *window); static void modest_msg_edit_window_color_button_change (ModestMsgEditWindow *window, gpointer userdata); +#ifdef MODEST_TOOLKIT_HILDON2 +static void font_face_clicked (GtkToolButton *button, + ModestMsgEditWindow *window); +#else +static void modest_msg_edit_window_font_change (GtkCheckMenuItem *menu_item, + gpointer userdata); +#endif static void modest_msg_edit_window_setup_toolbar (ModestMsgEditWindow *window); static void modest_msg_edit_window_open_addressbook (ModestMsgEditWindow *window, @@ -174,6 +188,8 @@ static void text_buffer_mark_set (GtkTextBuffer *buffer, GtkTextIter *iter, GtkTextMark *mark, ModestMsgEditWindow *userdata); +static void on_show_toolbar_button_toggled (GtkWidget *button, + ModestMsgEditWindow *window); static void on_message_settings (GtkAction *action, ModestMsgEditWindow *window); static void setup_menu (ModestMsgEditWindow *self); @@ -182,8 +198,6 @@ static void from_field_changed (GtkWidget *button, ModestMsgEditWindow *self); static void font_size_clicked (GtkToolButton *button, ModestMsgEditWindow *window); -static void font_face_clicked (GtkToolButton *button, - ModestMsgEditWindow *window); static void update_signature (ModestMsgEditWindow *self, const gchar *old_account, const gchar *new_account); @@ -325,19 +339,22 @@ struct _ModestMsgEditWindowPrivate { GtkWidget *app_menu; GtkWidget *cc_button; GtkWidget *bcc_button; + GtkWidget *show_toolbar_button; GtkWidget *max_chars_banner; GtkWidget *brand_icon; GtkWidget *brand_label; GtkWidget *brand_container; + + TnyList *custom_header_pairs; }; #define MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \ MODEST_TYPE_MSG_EDIT_WINDOW, \ ModestMsgEditWindowPrivate)) /* globals */ -static GtkWindowClass *parent_class = NULL; +static ModestWindowParentClass *parent_class = NULL; /* uncomment the following if you have defined any signals */ /* static guint signals[LAST_SIGNAL] = {0}; */ @@ -359,7 +376,12 @@ modest_msg_edit_window_get_type (void) (GInstanceInitFunc) modest_msg_edit_window_init, NULL }; - my_type = g_type_register_static (MODEST_TYPE_HILDON2_WINDOW, + my_type = g_type_register_static ( +#ifdef MODEST_TOOLKIT_HILDON2 + MODEST_TYPE_HILDON2_WINDOW, +#else + MODEST_TYPE_SHELL_WINDOW, +#endif "ModestMsgEditWindow", &my_info, 0); @@ -455,6 +477,7 @@ modest_msg_edit_window_init (ModestMsgEditWindow *obj) priv->references = NULL; priv->in_reply_to = NULL; priv->max_chars_banner = NULL; + priv->custom_header_pairs = TNY_LIST (tny_simple_list_new ()); if (!is_wp_text_buffer_started) { is_wp_text_buffer_started = TRUE; @@ -462,9 +485,10 @@ modest_msg_edit_window_init (ModestMsgEditWindow *obj) } init_window (obj); - +#ifdef MODEST_TOOLKIT_HILDON2 hildon_program_add_window (hildon_program_get_instance(), HILDON_WINDOW(obj)); +#endif } static gchar * @@ -775,7 +799,9 @@ connect_signals (ModestMsgEditWindow *obj) G_CALLBACK (msg_body_focus), obj); g_signal_connect (G_OBJECT (priv->msg_body), "size-request", G_CALLBACK (body_size_request), obj); - g_signal_connect (G_OBJECT (obj), "set-focus", G_CALLBACK (window_focus), obj); + if (GTK_IS_WINDOW (obj)) { + g_signal_connect (G_OBJECT (obj), "set-focus", G_CALLBACK (window_focus), obj); + } g_signal_connect (G_OBJECT (modest_recpt_editor_get_buffer (MODEST_RECPT_EDITOR (priv->to_field))), "changed", G_CALLBACK (recpt_field_changed), obj); g_signal_connect (G_OBJECT (modest_recpt_editor_get_buffer (MODEST_RECPT_EDITOR (priv->cc_field))), @@ -822,7 +848,6 @@ init_window (ModestMsgEditWindow *obj) ModestMsgEditWindowPrivate *priv; GtkActionGroup *action_group; ModestWindowPrivate *parent_priv; - GdkPixbuf *window_icon = NULL; GError *error = NULL; GtkSizeGroup *title_size_group; @@ -887,10 +912,6 @@ init_window (ModestMsgEditWindow *obj) g_clear_error (&error); } - /* Add accelerators */ - gtk_window_add_accel_group (GTK_WINDOW (obj), - gtk_ui_manager_get_accel_group (parent_priv->ui_manager)); - parent_priv->menubar = NULL; title_size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); @@ -908,12 +929,14 @@ init_window (ModestMsgEditWindow *obj) priv->from_field); gtk_widget_show (from_caption); } else { +#ifdef MODEST_TOOLKIT_HILDON2 modest_toolkit_utils_set_hbutton_layout (title_size_group, NULL, _("mail_va_from"), priv->from_field); hildon_button_set_alignment (HILDON_BUTTON (priv->from_field), 0.0, 0.5, 1.0, 1.0); hildon_button_set_title_alignment (HILDON_BUTTON (priv->from_field), 0.0, 0.5); hildon_button_set_value_alignment (HILDON_BUTTON (priv->from_field), 1.0, 0.5); from_caption = priv->from_field; +#endif } priv->to_field = modest_recpt_editor_new (); @@ -929,8 +952,10 @@ init_window (ModestMsgEditWindow *obj) gtk_entry_set_max_length (GTK_ENTRY (priv->subject_field) ,SUBJECT_MAX_LENGTH); g_object_set (G_OBJECT (priv->subject_field), "truncate-multiline", TRUE, NULL); modest_entry_set_hint (priv->subject_field, _("mail_va_no_subject")); +#ifdef MAEMO_CHANGES hildon_gtk_entry_set_input_mode (GTK_ENTRY (priv->subject_field), HILDON_GTK_INPUT_MODE_FULL | HILDON_GTK_INPUT_MODE_AUTOCAP); +#endif gtk_box_pack_start (GTK_BOX (priv->subject_box), priv->subject_field, TRUE, TRUE, 0); priv->attachments_view = modest_attachments_view_new (NULL); modest_attachments_view_set_style (MODEST_ATTACHMENTS_VIEW (priv->attachments_view), @@ -953,14 +978,26 @@ init_window (ModestMsgEditWindow *obj) _("mail_va_attachment"), FALSE, priv->attachments_view, +#ifdef MODEST_TOOLKIT_HILDON2 HILDON_SIZE_AUTO_WIDTH | - HILDON_SIZE_AUTO_HEIGHT); + HILDON_SIZE_AUTO_HEIGHT +#else + 0 +#endif + ); attachments_label = modest_toolkit_utils_captioned_get_label_widget (priv->attachments_caption); +#ifdef MAEMO_CHANGES hildon_gtk_widget_set_theme_size (attachments_label, HILDON_SIZE_AUTO_HEIGHT); +#endif +#ifdef MODEST_TOOLKIT_HILDON2 priv->send_button = hildon_gtk_button_new (HILDON_SIZE_FINGER_HEIGHT); send_icon = gtk_image_new_from_icon_name (MODEST_TOOLBAR_ICON_MAIL_SEND, HILDON_ICON_SIZE_FINGER); +#else + priv->send_button = gtk_button_new (); + send_icon = gtk_image_new_from_icon_name (MODEST_TOOLBAR_ICON_MAIL_SEND, GTK_ICON_SIZE_BUTTON); +#endif gtk_container_add (GTK_CONTAINER (priv->send_button), send_icon); gtk_widget_set_size_request (GTK_WIDGET (priv->send_button), 148, -1); @@ -970,7 +1007,9 @@ init_window (ModestMsgEditWindow *obj) priv->brand_icon = gtk_image_new (); gtk_misc_set_alignment (GTK_MISC (priv->brand_icon), 0.5, 0.5); priv->brand_label = gtk_label_new (NULL); +#ifdef MODEST_TOOLKIT_HILDON2 hildon_helper_set_logical_font (priv->brand_label, "SmallSystemFont"); +#endif gtk_misc_set_alignment (GTK_MISC (priv->brand_label), 0.0, 0.5); gtk_widget_set_no_show_all (priv->brand_icon, TRUE); gtk_widget_set_no_show_all (priv->brand_label, TRUE); @@ -1021,15 +1060,14 @@ init_window (ModestMsgEditWindow *obj) NULL); gtk_widget_set_no_show_all (priv->isearch_toolbar, TRUE); -/* g_signal_connect (G_OBJECT (obj), "key_pressed", G_CALLBACK (on_key_pressed), NULL) */ - priv->scrollable = modest_toolkit_factory_create_scrollable (modest_runtime_get_toolkit_factory ()); g_object_set (G_OBJECT (priv->scrollable), "horizontal-policy", GTK_POLICY_NEVER, NULL); - + main_vbox = gtk_vbox_new (FALSE, DEFAULT_MAIN_VBOX_SPACING); window_align = gtk_alignment_new (0.0, 0.0, 1.0, 1.0); - gtk_alignment_set_padding (GTK_ALIGNMENT (window_align), 0, 0, MODEST_MARGIN_DOUBLE, MODEST_MARGIN_DEFAULT); + gtk_alignment_set_padding (GTK_ALIGNMENT (window_align), MODEST_MARGIN_HALF, 0, + MODEST_MARGIN_DOUBLE, MODEST_MARGIN_DEFAULT); gtk_box_pack_start (GTK_BOX(main_vbox), priv->header_box, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX(main_vbox), priv->msg_body, TRUE, TRUE, 0); @@ -1037,20 +1075,14 @@ init_window (ModestMsgEditWindow *obj) modest_scrollable_add_with_viewport (MODEST_SCROLLABLE (priv->scrollable), window_align); gtk_widget_show_all (GTK_WIDGET(priv->scrollable)); - + window_box = gtk_vbox_new (FALSE, 0); gtk_container_add (GTK_CONTAINER(obj), window_box); gtk_box_pack_start (GTK_BOX (window_box), priv->scrollable, TRUE, TRUE, 0); - /* Set window icon */ - window_icon = modest_platform_get_icon (MODEST_APP_MSG_EDIT_ICON, MODEST_ICON_SIZE_BIG); - if (window_icon) { - gtk_window_set_icon (GTK_WINDOW (obj), window_icon); - g_object_unref (window_icon); - } } - + static void modest_msg_edit_window_disconnect_signals (ModestWindow *window) { @@ -1079,6 +1111,8 @@ modest_msg_edit_window_finalize (GObject *obj) { ModestMsgEditWindowPrivate *priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (obj); + g_object_unref (priv->custom_header_pairs); + if (priv->max_chars_banner) { g_object_weak_unref (G_OBJECT (priv->max_chars_banner), (GWeakNotify) max_chars_banner_unref, obj); priv->max_chars_banner = FALSE; @@ -1133,6 +1167,7 @@ modest_msg_edit_window_finalize (GObject *obj) g_free (priv->original_mailbox); g_free (priv->msg_uid); g_free (priv->last_search); + g_slist_free (priv->font_items_group); g_free (priv->references); g_free (priv->in_reply_to); g_object_unref (priv->attachments); @@ -1187,7 +1222,7 @@ pixbuf_from_stream (TnyStream *stream, } g_signal_connect (G_OBJECT (loader), "size-prepared", G_CALLBACK (pixbuf_size_prepared), self); - hildon_gtk_window_set_progress_indicator (GTK_WINDOW (self), TRUE); + modest_window_show_progress (MODEST_WINDOW (self), TRUE); tny_stream_reset (TNY_STREAM (stream)); while (!tny_stream_is_eos (TNY_STREAM (stream))) { @@ -1202,7 +1237,7 @@ pixbuf_from_stream (TnyStream *stream, while (gtk_events_pending ()) gtk_main_iteration (); } - hildon_gtk_window_set_progress_indicator (GTK_WINDOW (self), FALSE); + modest_window_show_progress (MODEST_WINDOW (self), FALSE); gdk_pixbuf_loader_close (loader, &error); @@ -1258,7 +1293,9 @@ replace_with_images (ModestMsgEditWindow *self, TnyList *attachments) if (pixbuf != NULL) { priv->images_count ++; priv->images_size += stream_size; +#ifndef MODEST_HAVE_LIBWPEDITOR_PLUS wp_text_buffer_replace_image (WP_TEXT_BUFFER (priv->text_buffer), cid, pixbuf); +#endif g_object_unref (pixbuf); } } @@ -1359,6 +1396,7 @@ set_msg (ModestMsgEditWindow *self, TnyMsg *msg, gboolean preserve_is_rich) TnyFolder *msg_folder; gboolean is_html = FALSE; gboolean field_view_set; + TnyList *orig_header_pairs; g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (self)); g_return_if_fail (TNY_IS_MSG (msg)); @@ -1494,12 +1532,58 @@ set_msg (ModestMsgEditWindow *self, TnyMsg *msg, gboolean preserve_is_rich) g_object_unref (msg_folder); } + orig_header_pairs = TNY_LIST (tny_simple_list_new ()); + tny_mime_part_get_header_pairs (TNY_MIME_PART (msg), orig_header_pairs); + modest_msg_edit_window_set_custom_header_pairs (self, orig_header_pairs); + g_object_unref (orig_header_pairs); + g_free (to); g_free (subject); g_free (cc); g_free (bcc); } +#ifndef MODEST_TOOLKIT_HILDON2 +static void +menu_tool_button_clicked_popup (GtkMenuToolButton *item, + gpointer data) +{ + GList *item_children, *node; + GtkWidget *bin_child; + + bin_child = gtk_bin_get_child (GTK_BIN(item)); + + item_children = gtk_container_get_children (GTK_CONTAINER (bin_child)); + + for (node = item_children; node != NULL; node = g_list_next (node)) { + if (GTK_IS_TOGGLE_BUTTON (node->data)) { + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (node->data), TRUE); + } + } + g_list_free (item_children); +} + +static void +menu_tool_button_dont_expand (GtkMenuToolButton *item) +{ + GtkWidget *box; + GList *item_children, *node; + + box = gtk_bin_get_child (GTK_BIN (item)); + gtk_box_set_homogeneous (GTK_BOX (box), TRUE); + item_children = gtk_container_get_children (GTK_CONTAINER (box)); + + for (node = item_children; node != NULL; node = g_list_next (node)) { + gtk_box_set_child_packing (GTK_BOX (box), GTK_WIDGET (node->data), TRUE, TRUE, 0, GTK_PACK_START); + if (GTK_IS_TOGGLE_BUTTON (node->data)) + gtk_button_set_alignment (GTK_BUTTON (node->data), 0.0, 0.5); + else if (GTK_IS_BUTTON (node->data)) + gtk_button_set_alignment (GTK_BUTTON (node->data), 1.0, 0.5); + } + g_list_free (item_children); +} +#endif + static void modest_msg_edit_window_setup_toolbar (ModestMsgEditWindow *window) { @@ -1512,15 +1596,24 @@ modest_msg_edit_window_setup_toolbar (ModestMsgEditWindow *window) gint size_index; gint font_index; GtkWidget *sizes_menu; - GtkWidget *fonts_menu; gchar *markup; GtkWidget *arrow; GtkWidget *hbox; +#ifndef MODEST_TOOLKIT_HILDON2 + GSList *radio_group, *node; + GtkWidget *fonts_menu; +#endif /* Toolbar */ parent_priv->toolbar = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar"); gtk_toolbar_set_show_arrow (GTK_TOOLBAR (parent_priv->toolbar), FALSE); - gtk_toolbar_set_icon_size (GTK_TOOLBAR (parent_priv->toolbar), HILDON_ICON_SIZE_FINGER); + gtk_toolbar_set_icon_size (GTK_TOOLBAR (parent_priv->toolbar), +#ifdef MODEST_TOOLKIT_HILDON2 + HILDON_ICON_SIZE_FINGER +#else + GTK_ICON_SIZE_LARGE_TOOLBAR +#endif + ); modest_window_add_toolbar (MODEST_WINDOW (window), GTK_TOOLBAR (parent_priv->toolbar)); /* Font color placeholder */ @@ -1529,7 +1622,11 @@ modest_msg_edit_window_setup_toolbar (ModestMsgEditWindow *window) /* font color */ priv->font_color_toolitem = GTK_WIDGET (gtk_tool_item_new ()); +#ifdef MODEST_TOOLKIT_HILDON2 priv->font_color_button = modest_color_button_new (); +#else + priv->font_color_button = gtk_color_button_new (); +#endif gtk_widget_set_size_request (priv->font_color_button, -1, 48); GTK_WIDGET_UNSET_FLAGS (priv->font_color_toolitem, GTK_CAN_FOCUS); GTK_WIDGET_UNSET_FLAGS (priv->font_color_button, GTK_CAN_FOCUS); @@ -1546,7 +1643,7 @@ modest_msg_edit_window_setup_toolbar (ModestMsgEditWindow *window) placeholder = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/FontAttributes"); insert_index = gtk_toolbar_get_item_index(GTK_TOOLBAR (parent_priv->toolbar), GTK_TOOL_ITEM(placeholder)); /* font_size */ - tool_item = GTK_WIDGET (gtk_tool_button_new (NULL, NULL)); + tool_item = GTK_WIDGET (gtk_tool_button_new (NULL, "")); priv->size_tool_button_label = gtk_label_new (NULL); snprintf(size_text, sizeof(size_text), "%d", wp_font_size[DEFAULT_FONT_SIZE]); markup = g_strconcat ("", @@ -1554,7 +1651,9 @@ modest_msg_edit_window_setup_toolbar (ModestMsgEditWindow *window) gtk_label_set_markup (GTK_LABEL (priv->size_tool_button_label), markup); gtk_misc_set_alignment (GTK_MISC (priv->size_tool_button_label), 1.0, 0.5); g_free (markup); +#ifdef MODEST_TOOLKIT_HILDON2 hildon_helper_set_logical_font (priv->size_tool_button_label, "LargeSystemFont"); +#endif hbox = gtk_hbox_new (MODEST_MARGIN_DEFAULT, FALSE); gtk_box_pack_start (GTK_BOX (hbox), priv->size_tool_button_label, TRUE, TRUE, 0); arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_NONE); @@ -1585,8 +1684,9 @@ modest_msg_edit_window_setup_toolbar (ModestMsgEditWindow *window) gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (tool_item), TRUE); priv->font_size_toolitem = tool_item; +#ifdef MODEST_TOOLKIT_HILDON2 /* font face */ - tool_item = GTK_WIDGET (gtk_tool_button_new (NULL, NULL)); + tool_item = GTK_WIDGET (gtk_tool_button_new (NULL, "")); priv->font_tool_button_label = gtk_label_new (NULL); markup = g_strconcat ("Tt", NULL); gtk_label_set_markup (GTK_LABEL (priv->font_tool_button_label), markup); @@ -1600,7 +1700,20 @@ modest_msg_edit_window_setup_toolbar (ModestMsgEditWindow *window) gtk_box_pack_start (GTK_BOX (hbox), arrow, TRUE, TRUE, 0); gtk_widget_set_sensitive (arrow, FALSE); gtk_tool_button_set_label_widget (GTK_TOOL_BUTTON (tool_item), hbox); +#else + tool_item = GTK_WIDGET (gtk_menu_tool_button_new (NULL, NULL)); + priv->font_tool_button_label = gtk_label_new (NULL); + markup = g_strconcat ("Tt", NULL); + gtk_label_set_markup (GTK_LABEL (priv->font_tool_button_label), markup); + g_free(markup); + gtk_toolbar_insert (GTK_TOOLBAR (parent_priv->toolbar), GTK_TOOL_ITEM (tool_item), insert_index); + gtk_tool_button_set_label_widget (GTK_TOOL_BUTTON (tool_item), priv->font_tool_button_label); + gtk_widget_show (priv->font_tool_button_label); + gtk_widget_show (GTK_WIDGET (tool_item)); fonts_menu = gtk_menu_new (); +#endif + +#ifdef MODEST_TOOLKIT_HILDON2 priv->faces_model = GTK_TREE_MODEL (gtk_list_store_new (1, G_TYPE_STRING)); for (font_index = 0; font_index < wp_get_font_count (); font_index++) { GtkTreeIter iter; @@ -1619,6 +1732,41 @@ modest_msg_edit_window_setup_toolbar (ModestMsgEditWindow *window) gtk_tool_item_set_expand (GTK_TOOL_ITEM (tool_item), TRUE); gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (tool_item), TRUE); priv->font_face_toolitem = tool_item; +#else + priv->font_items_group = NULL; + radio_group = NULL; + for (font_index = 0; font_index < wp_get_font_count (); font_index++) { + GtkWidget *font_menu_item; + GtkWidget *child_label; + + font_menu_item = gtk_radio_menu_item_new_with_label (radio_group, ""); + child_label = gtk_bin_get_child (GTK_BIN (font_menu_item)); + markup = g_strconcat ("", + wp_get_font_name (font_index), "", NULL); + gtk_label_set_markup (GTK_LABEL (child_label), markup); + g_free (markup); + + radio_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (font_menu_item)); + gtk_menu_shell_append (GTK_MENU_SHELL (fonts_menu), font_menu_item); + gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (font_menu_item), (font_index == DEFAULT_FONT)); + gtk_widget_show (font_menu_item); + + priv->font_items_group = g_slist_prepend (priv->font_items_group, font_menu_item); + + } + for (node = radio_group; node != NULL; node = g_slist_next (node)) { + GtkWidget *item = (GtkWidget *) node->data; + g_signal_connect (G_OBJECT (item), "toggled", G_CALLBACK (modest_msg_edit_window_font_change), + window); + } + priv->font_items_group = g_slist_reverse (priv->font_items_group); + gtk_menu_tool_button_set_menu (GTK_MENU_TOOL_BUTTON (tool_item), fonts_menu); + g_signal_connect (G_OBJECT (tool_item), "clicked", G_CALLBACK (menu_tool_button_clicked_popup), NULL); + gtk_tool_item_set_expand (GTK_TOOL_ITEM (tool_item), TRUE); + gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (tool_item), TRUE); + menu_tool_button_dont_expand (GTK_MENU_TOOL_BUTTON (tool_item)); + priv->font_face_toolitem = tool_item; +#endif /* Set expand and homogeneous for remaining items */ tool_item = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ActionsBold"); @@ -1627,6 +1775,9 @@ modest_msg_edit_window_setup_toolbar (ModestMsgEditWindow *window) tool_item = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ActionsItalics"); gtk_tool_item_set_expand (GTK_TOOL_ITEM (tool_item), TRUE); gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (tool_item), TRUE); + tool_item = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ActionsInsertImage"); + gtk_tool_item_set_expand (GTK_TOOL_ITEM (tool_item), TRUE); + gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (tool_item), TRUE); /* Explicitelly show all the toolbar (a normal gtk_widget_show will not show the tool items added to the placeholders) */ @@ -1634,7 +1785,7 @@ modest_msg_edit_window_setup_toolbar (ModestMsgEditWindow *window) /* Set the no show all *after* showing all items. We do not want the toolbar to be shown with a show all because it - could go agains the gconf setting regarding showing or not + could go against the gconf setting regarding showing or not the toolbar of the editor window */ gtk_widget_set_no_show_all (parent_priv->toolbar, TRUE); } @@ -1889,6 +2040,7 @@ modest_msg_edit_window_get_msg_data (ModestMsgEditWindow *edit_window) g_object_unref (att_iter); data->priority_flags = priv->priority_flags; + data->custom_header_pairs = tny_list_copy (priv->custom_header_pairs); return data; } @@ -1921,6 +2073,8 @@ modest_msg_edit_window_free_msg_data (ModestMsgEditWindow *edit_window, g_free (data->account_name); g_free (data->references); g_free (data->in_reply_to); + + g_object_unref (data->custom_header_pairs); if (data->draft_msg != NULL) { g_object_unref (data->draft_msg); @@ -1982,11 +2136,16 @@ modest_msg_edit_window_set_format (ModestMsgEditWindow *self, switch (format) { case MODEST_MSG_EDIT_FORMAT_HTML: wp_text_buffer_enable_rich_text (WP_TEXT_BUFFER (priv->text_buffer), TRUE); - if (parent_priv->toolbar) gtk_widget_show (parent_priv->toolbar); + update_signature (self, priv->last_from_account, priv->last_from_account); + if (parent_priv->toolbar) + on_show_toolbar_button_toggled (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 (priv->show_toolbar_button, + MODEST_MSG_EDIT_WINDOW (self)); break; default: g_return_if_reached (); @@ -2166,7 +2325,11 @@ text_buffer_refresh_attributes (WPTextBuffer *buffer, ModestMsgEditWindow *windo g_signal_handlers_block_by_func (G_OBJECT (priv->font_color_button), G_CALLBACK (modest_msg_edit_window_color_button_change), window); +#ifdef MODEST_TOOLKIT_HILDON2 hildon_color_button_set_color (HILDON_COLOR_BUTTON (priv->font_color_button), & (buffer_format->color)); +#else + gtk_color_button_set_color (GTK_COLOR_BUTTON (priv->font_color_button), & (buffer_format->color)); +#endif g_signal_handlers_unblock_by_func (G_OBJECT (priv->font_color_button), G_CALLBACK (modest_msg_edit_window_color_button_change), window); @@ -2193,6 +2356,7 @@ text_buffer_refresh_attributes (WPTextBuffer *buffer, ModestMsgEditWindow *windo gtk_tree_path_free (path); } +#ifdef MODEST_TOOLKIT_HILDON2 if (priv->current_face_index != buffer_format->font) { GtkTreeIter iter; GtkTreePath *path; @@ -2211,6 +2375,27 @@ text_buffer_refresh_attributes (WPTextBuffer *buffer, ModestMsgEditWindow *windo } } +#else + GtkWidget *new_font_menuitem; + new_font_menuitem = GTK_WIDGET ((g_slist_nth (priv->font_items_group, + buffer_format->font))->data); + if (!gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (new_font_menuitem))) { + GtkWidget *label; + gchar *markup; + + label = gtk_bin_get_child (GTK_BIN (new_font_menuitem)); + markup = g_strconcat ("Tt", NULL); + gtk_label_set_markup (GTK_LABEL (priv->font_tool_button_label), markup); + g_free (markup); + g_signal_handlers_block_by_func (G_OBJECT (new_font_menuitem), + G_CALLBACK (modest_msg_edit_window_font_change), + window); + gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (new_font_menuitem), TRUE); + g_signal_handlers_unblock_by_func (G_OBJECT (new_font_menuitem), + G_CALLBACK (modest_msg_edit_window_font_change), + window); + } +#endif g_free (buffer_format); @@ -2227,6 +2412,7 @@ modest_msg_edit_window_select_color (ModestMsgEditWindow *window) priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window); wp_text_buffer_get_attributes (WP_TEXT_BUFFER (priv->text_buffer), buffer_format, FALSE); +#ifdef MODEST_TOOLKIT_HILDON2 dialog = hildon_color_chooser_new (); hildon_color_chooser_set_color (HILDON_COLOR_CHOOSER (dialog), &(buffer_format->color)); g_free (buffer_format); @@ -2238,31 +2424,27 @@ modest_msg_edit_window_select_color (ModestMsgEditWindow *window) (gpointer) &col); } gtk_widget_destroy (dialog); -} +#else + dialog = gtk_color_selection_dialog_new (NULL); + GtkWidget *selection; + g_object_get (G_OBJECT (dialog), "color_selection", &selection, NULL); + gtk_color_selection_set_current_color (GTK_COLOR_SELECTION (selection), &(buffer_format->color)); + gtk_color_selection_set_previous_color (GTK_COLOR_SELECTION (selection), &(buffer_format->color)); + g_free (buffer_format); -void -modest_msg_edit_window_select_background_color (ModestMsgEditWindow *window) -{ - ModestMsgEditWindowPrivate *priv; - GtkWidget *dialog = NULL; - GdkColor *old_color = NULL; - - priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window); - old_color = (GdkColor*)wp_text_buffer_get_background_color (WP_TEXT_BUFFER (priv->text_buffer)); - - dialog = hildon_color_chooser_new (); - hildon_color_chooser_set_color (HILDON_COLOR_CHOOSER (dialog),(GdkColor*)old_color); - - if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) { + if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) { GdkColor col; - hildon_color_chooser_get_color (HILDON_COLOR_CHOOSER(dialog), &col); - wp_text_buffer_set_background_color (WP_TEXT_BUFFER (priv->text_buffer), &col); + gtk_color_selection_get_current_color (GTK_COLOR_SELECTION(selection), &col); + wp_text_buffer_set_attribute (WP_TEXT_BUFFER (priv->text_buffer), WPT_FORECOLOR, + (gpointer) &col); } gtk_widget_destroy (dialog); +#endif } + static TnyStream* create_stream_for_uri (const gchar* uri) { @@ -2390,7 +2572,7 @@ modest_msg_edit_window_insert_image (ModestMsgEditWindow *window) if (stream == NULL) { modest_platform_information_banner (NULL, NULL, - _FM("sfil_ib_opening_not_allowed")); + _FM_OPENING_NOT_ALLOWED); g_free (filename); g_object_unref (mime_part); gnome_vfs_file_info_unref (info); @@ -2612,7 +2794,7 @@ modest_msg_edit_window_attach_file_one (ModestMsgEditWindow *window, if (stream == NULL) { - modest_platform_information_banner (NULL, NULL, _FM("sfil_ib_opening_not_allowed")); + modest_platform_information_banner (NULL, NULL, _FM_OPENING_NOT_ALLOWED); g_object_unref (mime_part); g_free (filename); @@ -2746,17 +2928,51 @@ modest_msg_edit_window_color_button_change (ModestMsgEditWindow *window, priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window); - hildon_color_button_get_color (HILDON_COLOR_BUTTON(priv->font_color_button), &new_color); + gtk_color_button_get_color (GTK_COLOR_BUTTON(priv->font_color_button), &new_color); wp_text_buffer_set_attribute (WP_TEXT_BUFFER (priv->text_buffer), WPT_FORECOLOR, (gpointer) &new_color); gtk_window_set_focus (GTK_WINDOW (window), priv->msg_body); } +#ifndef MODEST_TOOLKIT_HILDON2 +static void +modest_msg_edit_window_font_change (GtkCheckMenuItem *menu_item, + gpointer userdata) +{ + ModestMsgEditWindowPrivate *priv; + gint new_font_index; + ModestMsgEditWindow *window; + GtkWidget *label; + + window = MODEST_MSG_EDIT_WINDOW (userdata); + priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window); + gtk_widget_grab_focus (GTK_WIDGET (priv->msg_body)); + + if (gtk_check_menu_item_get_active (menu_item)) { + gchar *markup; + + label = gtk_bin_get_child (GTK_BIN (menu_item)); + + new_font_index = wp_get_font_index (gtk_label_get_text (GTK_LABEL (label)), DEFAULT_FONT); + + if (!wp_text_buffer_set_attribute (WP_TEXT_BUFFER (priv->text_buffer), WPT_FONT, + GINT_TO_POINTER(new_font_index))) + wp_text_view_reset_and_show_im (WP_TEXT_VIEW (priv->msg_body)); + + text_buffer_refresh_attributes (WP_TEXT_BUFFER (priv->text_buffer), MODEST_MSG_EDIT_WINDOW (window)); + markup = g_strconcat ("Tt", NULL); + gtk_label_set_markup (GTK_LABEL (priv->font_tool_button_label), markup); + g_free (markup); + } +} +#endif + static void font_size_clicked (GtkToolButton *button, ModestMsgEditWindow *window) { +#ifdef MODEST_TOOLKIT_HILDON2 ModestMsgEditWindowPrivate *priv; GtkWidget *selector, *dialog; @@ -2803,9 +3019,10 @@ font_size_clicked (GtkToolButton *button, gtk_widget_destroy (dialog); gtk_widget_grab_focus (GTK_WIDGET (priv->msg_body)); - +#endif } +#ifdef MODEST_TOOLKIT_HILDON2 static void font_face_clicked (GtkToolButton *button, ModestMsgEditWindow *window) @@ -2857,8 +3074,8 @@ font_face_clicked (GtkToolButton *button, gtk_widget_destroy (dialog); gtk_widget_grab_focus (GTK_WIDGET (priv->msg_body)); - } +#endif void modest_msg_edit_window_show_cc (ModestMsgEditWindow *window, @@ -2972,6 +3189,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 (modest_togglable_get_active (priv->show_toolbar_button) != show_toolbar) { + modest_togglable_set_active (priv->show_toolbar_button, show_toolbar); + } } void @@ -2995,7 +3216,12 @@ modest_msg_edit_window_set_priority_flags (ModestMsgEditWindow *window, case TNY_HEADER_FLAG_HIGH_PRIORITY: gtk_image_set_from_icon_name (GTK_IMAGE (priv->priority_icon), MODEST_HEADER_ICON_HIGH, - HILDON_ICON_SIZE_SMALL); +#ifdef MODEST_TOOLKIT_HILDON2 + HILDON_ICON_SIZE_SMALL +#else + GTK_ICON_SIZE_BUTTON +#endif +); gtk_widget_show (priv->priority_icon); priority_action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/ToolsMenu/MessagePriorityMenu/MessagePriorityHighMenu"); @@ -3003,7 +3229,12 @@ modest_msg_edit_window_set_priority_flags (ModestMsgEditWindow *window, case TNY_HEADER_FLAG_LOW_PRIORITY: gtk_image_set_from_icon_name (GTK_IMAGE (priv->priority_icon), MODEST_HEADER_ICON_LOW, - HILDON_ICON_SIZE_SMALL); +#ifdef MODEST_TOOLKIT_HILDON2 + HILDON_ICON_SIZE_SMALL +#else + GTK_ICON_SIZE_BUTTON +#endif +); gtk_widget_show (priv->priority_icon); priority_action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/ToolsMenu/MessagePriorityMenu/MessagePriorityLowMenu"); @@ -3043,20 +3274,20 @@ modest_msg_edit_window_set_file_format (ModestMsgEditWindow *window, case MODEST_FILE_FORMAT_FORMATTED_TEXT: wp_text_buffer_enable_rich_text (WP_TEXT_BUFFER (priv->text_buffer), TRUE); 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 (priv->show_toolbar_button, + MODEST_MSG_EDIT_WINDOW (window)); break; case MODEST_FILE_FORMAT_PLAIN_TEXT: { - GtkWidget *dialog; gint response; - dialog = hildon_note_new_confirmation (NULL, _("emev_nc_formatting_lost")); - response = gtk_dialog_run (GTK_DIALOG (dialog)); - gtk_widget_destroy (dialog); + response = modest_platform_run_confirmation_dialog (NULL, _("emev_nc_formatting_lost")); 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 (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); @@ -3073,6 +3304,7 @@ modest_msg_edit_window_set_file_format (ModestMsgEditWindow *window, void modest_msg_edit_window_select_font (ModestMsgEditWindow *window) { +#ifdef MODEST_TOOLKIT_HILDON2 GtkWidget *dialog; ModestMsgEditWindowPrivate *priv; WPTextBufferFormat oldfmt, fmt; @@ -3206,6 +3438,7 @@ modest_msg_edit_window_select_font (ModestMsgEditWindow *window) gtk_widget_destroy (dialog); gtk_widget_grab_focus(GTK_WIDGET(priv->msg_body)); +#endif } void @@ -3226,10 +3459,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 (priv->show_toolbar_button, + MODEST_MSG_EDIT_WINDOW (window)); } modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window)); @@ -3418,14 +3649,18 @@ modest_msg_edit_window_check_names (ModestMsgEditWindow *window, gboolean add_to { ModestMsgEditWindowPrivate *priv = NULL; GSList *address_list = NULL; + gboolean no_to, no_cc, no_bcc; g_return_val_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window), FALSE); priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window); /* check if there's no recipient added */ - if ((gtk_text_buffer_get_char_count (modest_recpt_editor_get_buffer (MODEST_RECPT_EDITOR (priv->to_field))) == 0) && - (gtk_text_buffer_get_char_count (modest_recpt_editor_get_buffer (MODEST_RECPT_EDITOR (priv->cc_field))) == 0) && - (gtk_text_buffer_get_char_count (modest_recpt_editor_get_buffer (MODEST_RECPT_EDITOR (priv->bcc_field))) == 0)) { + no_to = modest_text_utils_no_recipient (modest_recpt_editor_get_buffer (MODEST_RECPT_EDITOR (priv->to_field))); + no_cc = modest_text_utils_no_recipient (modest_recpt_editor_get_buffer (MODEST_RECPT_EDITOR (priv->cc_field))); + no_bcc = modest_text_utils_no_recipient (modest_recpt_editor_get_buffer (MODEST_RECPT_EDITOR (priv->bcc_field))); + + + if (no_to && no_cc && no_bcc) { /* no recipient contents, then select contacts */ modest_msg_edit_window_open_addressbook (window, NULL); return FALSE; @@ -3433,19 +3668,19 @@ modest_msg_edit_window_check_names (ModestMsgEditWindow *window, gboolean add_to /* Check names */ g_object_ref (window); - if (!modest_address_book_check_names (MODEST_RECPT_EDITOR (priv->to_field), + if (!no_to && !modest_address_book_check_names (MODEST_RECPT_EDITOR (priv->to_field), (add_to_addressbook) ? &address_list : NULL)) { modest_recpt_editor_grab_focus (MODEST_RECPT_EDITOR (priv->to_field)); g_object_unref (window); return FALSE; } - if (!modest_address_book_check_names (MODEST_RECPT_EDITOR (priv->cc_field), + if (!no_cc && !modest_address_book_check_names (MODEST_RECPT_EDITOR (priv->cc_field), (add_to_addressbook) ? &address_list : NULL)) { modest_recpt_editor_grab_focus (MODEST_RECPT_EDITOR (priv->cc_field)); g_object_unref (window); return FALSE; } - if (!modest_address_book_check_names (MODEST_RECPT_EDITOR (priv->bcc_field), + if (!no_bcc && !modest_address_book_check_names (MODEST_RECPT_EDITOR (priv->bcc_field), (add_to_addressbook) ? &address_list : NULL)) { modest_recpt_editor_grab_focus (MODEST_RECPT_EDITOR (priv->bcc_field)); g_object_unref (window); @@ -3659,9 +3894,11 @@ body_insert_text (GtkTextBuffer *buffer, } if (line > MAX_BODY_LINES || offset + utf8_len > MAX_BODY_LENGTH) { if (priv->max_chars_banner == NULL) { +#ifdef MODEST_TOOLKIT_HILDON2 priv->max_chars_banner = hildon_banner_show_information (GTK_WIDGET (window), NULL, - _CS("ckdg_ib_maximum_characters_reached")); + _CS_MAXIMUM_CHARACTERS_REACHED); g_object_weak_ref (G_OBJECT (priv->max_chars_banner), (GWeakNotify) max_chars_banner_unref, window); +#endif } } } @@ -3719,7 +3956,7 @@ subject_field_insert_text (GtkEditable *editable, if (result_len + old_length > 1000) { modest_platform_system_banner (GTK_WIDGET (window), NULL, - _CS("ckdg_ib_maximum_characters_reached")); + _CS_MAXIMUM_CHARACTERS_REACHED); } g_string_free (result, TRUE); } @@ -3826,7 +4063,7 @@ modest_msg_edit_window_isearch_toolbar_search (GtkWidget *widget, g_free (priv->last_search); priv->last_search = NULL; /* Information banner about empty search */ - modest_platform_system_banner (NULL, NULL, _CS("ecdg_ib_find_rep_enter_text")); + modest_platform_system_banner (NULL, NULL, _CS_FIND_REP_ENTER_TEXT); return; } @@ -3842,14 +4079,14 @@ modest_msg_edit_window_isearch_toolbar_search (GtkWidget *widget, result = gtk_text_iter_forward_search_insensitive (&selection_end, current_search, &match_start, &match_end); if (!result) - modest_platform_system_banner (NULL, NULL, _HL("ckct_ib_find_search_complete")); + modest_platform_system_banner (NULL, NULL, _HL_IB_FIND_COMPLETE); } else { GtkTextIter buffer_start; gtk_text_buffer_get_start_iter (priv->text_buffer, &buffer_start); result = gtk_text_iter_forward_search_insensitive (&buffer_start, current_search, &match_start, &match_end); if (!result) - modest_platform_system_banner (NULL, NULL, _HL("ckct_ib_find_no_matches")); + modest_platform_system_banner (NULL, NULL, _HL_IB_FIND_NO_MATCHES); } /* Mark as selected the string found in search */ @@ -4068,12 +4305,29 @@ update_signature (ModestMsgEditWindow *self, priv->last_from_account = modest_selector_get_active_id (priv->from_field); signature = modest_account_mgr_get_signature_from_recipient (mgr, new_account, &has_new_signature); if (has_new_signature) { + gboolean is_rich; gchar *full_signature = g_strconcat ((gtk_text_iter_starts_line (&iter)) ? "" : "\n", MODEST_TEXT_UTILS_SIGNATURE_MARKER, "\n", signature, NULL); - gtk_text_buffer_insert (priv->text_buffer, &iter, full_signature, -1); - g_free (full_signature); + is_rich = wp_text_buffer_is_rich_text (WP_TEXT_BUFFER (priv->text_buffer)); + if (is_rich) { + WPTextBufferFormat *fmt; + GdkColor style_color; + if (!gtk_style_lookup_color (GTK_WIDGET (self)->style, "SecondaryTextColor", &style_color)) { + gdk_color_parse ("grey", &style_color); + } + fmt = g_new0 (WPTextBufferFormat, 1); + fmt->color = style_color; + fmt->cs.color = 0x1; + wp_text_buffer_insert_with_attribute (WP_TEXT_BUFFER (priv->text_buffer), &iter, + full_signature, -1, + fmt, TRUE); + g_free (fmt); + g_free (full_signature); + } else { + gtk_text_buffer_insert (priv->text_buffer, &iter, full_signature, -1); + } } g_free (signature); gtk_text_buffer_end_user_action (priv->text_buffer); @@ -4246,7 +4500,7 @@ modest_msg_edit_window_show_msg_settings_dialog (ModestMsgEditWindow *window) 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); + _HL_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); @@ -4257,15 +4511,27 @@ modest_msg_edit_window_show_msg_settings_dialog (ModestMsgEditWindow *window) /* Priority toggles */ priority_hbox = gtk_hbox_new (TRUE, 0); +#ifdef MODEST_TOOLKIT_HILDON2 high_toggle = hildon_gtk_toggle_button_new (HILDON_SIZE_FINGER_HEIGHT); +#else + high_toggle = gtk_toggle_button_new (); +#endif 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)); +#ifdef MODEST_TOOLKIT_HILDON2 medium_toggle = hildon_gtk_toggle_button_new (HILDON_SIZE_FINGER_HEIGHT); +#else + medium_toggle = gtk_toggle_button_new (); +#endif 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)); +#ifdef MODEST_TOOLKIT_HILDON2 low_toggle = hildon_gtk_toggle_button_new (HILDON_SIZE_FINGER_HEIGHT); +#else + low_toggle = gtk_toggle_button_new (); +#endif 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)); @@ -4280,12 +4546,20 @@ modest_msg_edit_window_show_msg_settings_dialog (ModestMsgEditWindow *window) /* format toggles */ format_hbox = gtk_hbox_new (TRUE, 0); +#ifdef MODEST_TOOLKIT_HILDON2 html_toggle = hildon_gtk_toggle_button_new (HILDON_SIZE_FINGER_HEIGHT); +#else + html_toggle = gtk_toggle_button_new (); +#endif 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)); +#ifdef MODEST_TOOLKIT_HILDON2 text_toggle = hildon_gtk_toggle_button_new (HILDON_SIZE_FINGER_HEIGHT); +#else + text_toggle = gtk_toggle_button_new (); +#endif 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)); @@ -4369,6 +4643,16 @@ on_message_settings (GtkAction *action, } static void +on_show_toolbar_button_toggled (GtkWidget *button, + ModestMsgEditWindow *window) +{ + g_return_if_fail (MODEST_MSG_EDIT_WINDOW (window)); + + modest_msg_edit_window_show_toolbar (MODEST_WINDOW (window), + modest_togglable_get_active (button)); +} + +static void on_cc_button_toggled (GtkWidget *button, ModestMsgEditWindow *window) { @@ -4388,7 +4672,7 @@ on_bcc_button_toggled (GtkWidget *button, modest_togglable_get_active (button)); } -static void +static void setup_menu (ModestMsgEditWindow *self) { ModestMsgEditWindowPrivate *priv = NULL; @@ -4398,26 +4682,18 @@ setup_menu (ModestMsgEditWindow *self) priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (self); /* Settings menu buttons */ - modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_editor_checknames"), NULL, - MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_on_check_names), - NULL); - modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_viewer_addtocontacts"), NULL, - MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_add_to_contacts), - MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_add_to_contacts)); - modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_inbox_undo"), "z", - MODEST_WINDOW_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); + priv->cc_button = modest_toolkit_factory_create_check_menu (modest_runtime_get_toolkit_factory (), + _("mcen_me_editor_showcc")); + modest_togglable_set_active (priv->cc_button, + FALSE); modest_window_add_item_to_menu (MODEST_WINDOW (self), priv->cc_button, NULL); + gtk_widget_show (priv->cc_button); g_signal_connect (G_OBJECT (priv->cc_button), "toggled", G_CALLBACK (on_cc_button_toggled), (gpointer) self); priv->bcc_button = modest_toolkit_factory_create_check_menu (modest_runtime_get_toolkit_factory (), _("mcen_me_editor_showbcc")); + gtk_widget_show (priv->bcc_button); modest_togglable_set_active (priv->bcc_button, FALSE); modest_window_add_item_to_menu (MODEST_WINDOW (self), priv->bcc_button, @@ -4425,6 +4701,22 @@ setup_menu (ModestMsgEditWindow *self) g_signal_connect (G_OBJECT (priv->bcc_button), "toggled", G_CALLBACK (on_bcc_button_toggled), (gpointer) self); + priv->show_toolbar_button = modest_toolkit_factory_create_check_menu (modest_runtime_get_toolkit_factory (), + _("mcen_bd_show_toolbar")); + modest_togglable_set_active (priv->show_toolbar_button, + FALSE); + modest_window_add_item_to_menu (MODEST_WINDOW (self), priv->show_toolbar_button, + MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_editor_show_toolbar)); + gtk_widget_show (priv->show_toolbar_button); + g_signal_connect (G_OBJECT (priv->show_toolbar_button), "toggled", + G_CALLBACK (on_show_toolbar_button_toggled), (gpointer) self); + + modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_message_settings"), NULL, + MODEST_WINDOW_MENU_CALLBACK (on_message_settings), + NULL); + modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_editor_checknames"), NULL, + MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_on_check_names), + NULL); modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_editor_attach_inlineimage"), NULL, MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_on_insert_image), MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_set_style)); @@ -4434,12 +4726,14 @@ setup_menu (ModestMsgEditWindow *self) modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_inbox_remove_attachments"), NULL, MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_on_remove_attachments), MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_editor_remove_attachment)); - modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_message_settings"), NULL, - MODEST_WINDOW_MENU_CALLBACK (on_message_settings), - NULL); + modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_viewer_addtocontacts"), NULL, + MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_add_to_contacts), + MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_add_to_contacts)); + modest_window_add_to_menu (MODEST_WINDOW (self), _("mcen_me_viewer_find"), "f", MODEST_WINDOW_MENU_CALLBACK (modest_ui_actions_on_toggle_find_in_page), NULL); + } static void @@ -4450,37 +4744,54 @@ emit_open_addressbook (GtkButton *button, } static GtkWidget * -_create_addressbook_box (GtkSizeGroup *title_size_group, GtkSizeGroup *value_size_group, - const gchar *label, GtkWidget *control) +_create_addressbook_box (GtkSizeGroup *title_size_group, + GtkSizeGroup *value_size_group, + const gchar *label, + GtkWidget *control) { GtkWidget *abook_button; GtkWidget *align; GtkWidget *box; - GtkWidget *label_widget; + GtkWidget *label_widget; box = gtk_hbox_new (FALSE, 0); - align = gtk_alignment_new (0.0, 0.0, 1.0, 0.0); + align = gtk_alignment_new (0.0, 0.0, 1.0, 1.0); +#ifndef MODEST_TOOLKIT_HILDON2 + gtk_alignment_set_padding (GTK_ALIGNMENT (align), 0, 0, MODEST_MARGIN_DOUBLE, MODEST_MARGIN_DOUBLE); +#else gtk_alignment_set_padding (GTK_ALIGNMENT (align), 0, 0, 0, MODEST_MARGIN_DEFAULT); +#endif - abook_button = hildon_gtk_button_new (HILDON_SIZE_FINGER_HEIGHT); +#ifdef MODEST_TOOLKIT_HILDON2 + abook_button = hildon_gtk_button_new (HILDON_SIZE_FINGER_HEIGHT); +#else + abook_button = gtk_button_new (); +#endif label_widget = gtk_label_new (label); gtk_misc_set_alignment (GTK_MISC (label_widget), 0.0, 0.5); - gtk_container_add (GTK_CONTAINER (abook_button), label_widget); - gtk_container_add (GTK_CONTAINER (align), abook_button); - gtk_widget_set_size_request (label_widget, 148 - MODEST_MARGIN_DOUBLE, -1); + gtk_container_add (GTK_CONTAINER (abook_button), label_widget); + + gtk_container_add (GTK_CONTAINER (align), abook_button); +#ifdef MODEST_TOOLKIT_HILDON2 + gtk_widget_set_size_request (label_widget, 148 - MODEST_MARGIN_DOUBLE, -1); +#endif gtk_box_pack_start (GTK_BOX (box), align, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (box), control, TRUE, TRUE, 0); if (title_size_group) +#ifdef MODEST_TOOLKIT_HILDON2 gtk_size_group_add_widget (title_size_group, label_widget); +#else + gtk_size_group_add_widget (title_size_group, abook_button); +#endif if (value_size_group) gtk_size_group_add_widget (value_size_group, control); - g_signal_connect (G_OBJECT (abook_button), "clicked", - G_CALLBACK (emit_open_addressbook), control); - - return box; + g_signal_connect (G_OBJECT (abook_button), "clicked", + G_CALLBACK (emit_open_addressbook), control); + + return box; } static void @@ -4556,3 +4867,17 @@ modest_msg_edit_window_has_pending_addresses (ModestMsgEditWindow *self) else return TRUE; } + +void +modest_msg_edit_window_set_custom_header_pairs (ModestMsgEditWindow *self, + TnyList *header_pairs) +{ + ModestMsgEditWindowPrivate *priv = NULL; + + g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (self)); + g_return_if_fail (TNY_IS_LIST (header_pairs)); + + priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (self); + g_object_unref (priv->custom_header_pairs); + priv->custom_header_pairs = tny_list_copy (header_pairs); +}