X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fhildon2%2Fmodest-msg-edit-window.c;h=e3848452b4ea4dba2162994f053c667e49b8c07d;hp=22c846661be249b1a618b80f6171d6c23ece6c27;hb=e651bbc59e818afc97523a40d1f0043de735cb7a;hpb=1db8645a0d48bd5a578495e9f820a9e258552b58 diff --git a/src/hildon2/modest-msg-edit-window.c b/src/hildon2/modest-msg-edit-window.c index 22c8466..e384845 100644 --- a/src/hildon2/modest-msg-edit-window.c +++ b/src/hildon2/modest-msg-edit-window.c @@ -172,6 +172,8 @@ static void text_buffer_mark_set (GtkTextBuffer *buffer, GtkTextIter *iter, GtkTextMark *mark, ModestMsgEditWindow *userdata); +static void on_show_toolbar_button_toggled (HildonCheckButton *button, + ModestMsgEditWindow *window); static void on_message_settings (GtkAction *action, ModestMsgEditWindow *window); static void setup_menu (ModestMsgEditWindow *self); @@ -323,12 +325,15 @@ 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), \ @@ -453,6 +458,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; @@ -1061,6 +1067,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; @@ -1609,6 +1617,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) */ @@ -1616,7 +1627,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); } @@ -1867,6 +1878,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; } @@ -1899,6 +1911,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); @@ -1961,11 +1975,15 @@ modest_msg_edit_window_set_format (ModestMsgEditWindow *self, case MODEST_MSG_EDIT_FORMAT_HTML: wp_text_buffer_enable_rich_text (WP_TEXT_BUFFER (priv->text_buffer), TRUE); update_signature (self, priv->last_from_account, priv->last_from_account); - if (parent_priv->toolbar) gtk_widget_show (parent_priv->toolbar); + if (parent_priv->toolbar) + on_show_toolbar_button_toggled (HILDON_CHECK_BUTTON (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 (HILDON_CHECK_BUTTON (priv->show_toolbar_button), + MODEST_MSG_EDIT_WINDOW (self)); break; default: g_return_if_reached (); @@ -2944,6 +2962,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 (hildon_check_button_get_active (HILDON_CHECK_BUTTON (priv->show_toolbar_button)) != show_toolbar) { + hildon_check_button_set_active (HILDON_CHECK_BUTTON (priv->show_toolbar_button), show_toolbar); + } } void @@ -3017,7 +3039,8 @@ modest_msg_edit_window_set_file_format (ModestMsgEditWindow *window, 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 (HILDON_CHECK_BUTTON (priv->show_toolbar_button), + MODEST_MSG_EDIT_WINDOW (window)); break; case MODEST_FILE_FORMAT_PLAIN_TEXT: { @@ -3029,7 +3052,8 @@ modest_msg_edit_window_set_file_format (ModestMsgEditWindow *window, 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 (HILDON_CHECK_BUTTON (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); @@ -3199,10 +3223,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 (HILDON_CHECK_BUTTON (priv->show_toolbar_button), + MODEST_MSG_EDIT_WINDOW (window)); } modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window)); @@ -3391,14 +3413,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; @@ -3406,19 +3432,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); @@ -4361,6 +4387,16 @@ on_message_settings (GtkAction *action, } static void +on_show_toolbar_button_toggled (HildonCheckButton *button, + ModestMsgEditWindow *window) +{ + g_return_if_fail (MODEST_MSG_EDIT_WINDOW (window)); + + modest_msg_edit_window_show_toolbar (MODEST_WINDOW (window), + hildon_check_button_get_active (button)); +} + +static void on_cc_button_toggled (HildonCheckButton *button, ModestMsgEditWindow *window) { @@ -4422,9 +4458,6 @@ setup_menu (ModestMsgEditWindow *self) gtk_button_set_alignment (GTK_BUTTON (priv->bcc_button), 0.5, 0.5); gtk_button_set_alignment (GTK_BUTTON (priv->bcc_button), 0.5, 0.5); - 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_editor_add_attachment"), NULL, APP_MENU_CALLBACK (modest_msg_edit_window_add_attachment_clicked), NULL); @@ -4437,6 +4470,17 @@ setup_menu (ModestMsgEditWindow *self) modest_hildon2_window_add_to_menu (MODEST_HILDON2_WINDOW (self), _("mcen_me_viewer_find"), "f", APP_MENU_CALLBACK (modest_ui_actions_on_toggle_find_in_page), NULL); + priv->show_toolbar_button = hildon_check_button_new (0); + gtk_button_set_label (GTK_BUTTON (priv->show_toolbar_button), _("mcen_bd_show_toolbar")); + hildon_check_button_set_active (HILDON_CHECK_BUTTON (priv->show_toolbar_button), + FALSE); + modest_hildon2_window_add_button_to_menu (MODEST_HILDON2_WINDOW (self), GTK_BUTTON (priv->show_toolbar_button), + MODEST_DIMMING_CALLBACK (modest_ui_dimming_rules_on_editor_show_toolbar)); + g_signal_connect (G_OBJECT (priv->show_toolbar_button), "toggled", + G_CALLBACK (on_show_toolbar_button_toggled), (gpointer) self); + gtk_button_set_alignment (GTK_BUTTON (priv->show_toolbar_button), 0.5, 0.5); + gtk_button_set_alignment (GTK_BUTTON (priv->show_toolbar_button), 0.5, 0.5); + } static void @@ -4553,3 +4597,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); +}