[anjal] Update evo patch, till we commit
- From: Srinivasa Ragavan <sragavan src gnome org>
- To: svn-commits-list gnome org
- Subject: [anjal] Update evo patch, till we commit
- Date: Fri, 29 May 2009 14:12:52 -0400 (EDT)
commit 4b3a74d266b50296035d8fd474dfb50211d580ee
Author: Srinivasa Ragavan <sragavan novell com>
Date: Fri May 29 23:47:25 2009 +0530
Update evo patch, till we commit
---
evo-anjal-2-27.patch | 2288 +++-----------------------------------------------
1 files changed, 135 insertions(+), 2153 deletions(-)
diff --git a/evo-anjal-2-27.patch b/evo-anjal-2-27.patch
index b23fe0d..72d1372 100644
--- a/evo-anjal-2-27.patch
+++ b/evo-anjal-2-27.patch
@@ -1,2199 +1,181 @@
-diff --git a/composer/Makefile.am b/composer/Makefile.am
-index 578805c..97debe5 100644
---- a/composer/Makefile.am
-+++ b/composer/Makefile.am
-@@ -5,6 +5,19 @@ errordir = $(privdatadir)/errors
- @EVO_PLUGIN_RULE@
-
- noinst_LTLIBRARIES = libcomposer.la
-+libcomposerincludedir = $(privincludedir)/composer
-+libcomposerinclude_HEADERS = \
-+ e-composer-header.h \
-+ e-composer-header-table.h \
-+ e-composer-from-header.h \
-+ e-composer-name-header.h \
-+ e-composer-post-header.h \
-+ e-composer-private.h \
-+ e-composer-text-header.h \
-+ e-composer-common.h \
-+ e-composer-actions.h \
-+ e-composer-autosave.h \
-+ e-msg-composer.h
-
- INCLUDES = \
- -I$(top_srcdir) \
-@@ -27,27 +40,18 @@ INCLUDES = \
- libcomposer_la_SOURCES = \
- $(IDL_GENERATED) \
- $(HTML_EDITOR_GENERATED) \
-+ $(libcomposerinclude_HEADERS) \
- e-composer-actions.c \
-- e-composer-actions.h \
- e-composer-autosave.c \
-- e-composer-autosave.h \
-- e-composer-common.h \
- e-composer-header.c \
-- e-composer-header.h \
- e-composer-header-table.c \
-- e-composer-header-table.h \
- e-composer-from-header.c \
-- e-composer-from-header.h \
- e-composer-name-header.c \
-- e-composer-name-header.h \
- e-composer-post-header.c \
-- e-composer-post-header.h \
- e-composer-private.c \
-- e-composer-private.h \
- e-composer-text-header.c \
-- e-composer-text-header.h \
-- e-msg-composer.c \
-- e-msg-composer.h
-+ e-msg-composer.c
-+
-
- uidir = $(evolutionuidir)
- ui_DATA = evolution-composer.ui
-diff --git a/composer/e-composer-from-header.h b/composer/e-composer-from-header.h
-index 74fda9a..f8c6dc6 100644
---- a/composer/e-composer-from-header.h
-+++ b/composer/e-composer-from-header.h
-@@ -26,7 +26,7 @@
- #include <libedataserver/e-account.h>
- #include <libedataserver/e-account-list.h>
-
--#include "e-account-combo-box.h"
-+#include <misc/e-account-combo-box.h>
- #include "e-composer-header.h"
-
- /* Standard GObject macros */
diff --git a/composer/e-composer-header-table.c b/composer/e-composer-header-table.c
-index 461c11e..9612993 100644
+index 9612993..90a29ca 100644
--- a/composer/e-composer-header-table.c
+++ b/composer/e-composer-header-table.c
-@@ -28,6 +28,8 @@
- #include "e-composer-post-header.h"
- #include "e-composer-text-header.h"
-
-+extern gboolean composer_lite;
-+
- #define E_COMPOSER_HEADER_TABLE_GET_PRIVATE(obj) \
- (G_TYPE_INSTANCE_GET_PRIVATE \
- ((obj), E_TYPE_COMPOSER_HEADER_TABLE, EComposerHeaderTablePrivate))
-@@ -90,6 +92,7 @@ struct _EComposerHeaderTablePrivate {
- GtkWidget *signature_label;
- GtkWidget *signature_combo_box;
- ENameSelector *name_selector;
-+ GtkHBox *actions_container;
- };
-
- static gpointer parent_class;
-@@ -271,8 +274,16 @@ composer_header_table_constructor (GType type,
- gtk_table_attach (
- GTK_TABLE (object), priv->headers[ii]->input_widget,
- 1, 4, ii, ii + 1, GTK_FILL | GTK_EXPAND, 0, 0, 3);
-+ if (composer_lite && priv->headers[ii]->action_widget) {
-+ /* Pack the widgets to the end. Helps formatting when hiding the From field */
-+ gtk_box_pack_end (priv->actions_container, priv->headers[ii]->action_widget,
-+ FALSE, FALSE, 6);
-+ }
- }
-
-+ if (composer_lite)
-+ gtk_widget_show_all (priv->actions_container);
-+
- ii = E_COMPOSER_HEADER_FROM;
-
- /* Leave room in the "From" row for signature stuff. */
-@@ -289,6 +300,19 @@ composer_header_table_constructor (GType type,
- GTK_TABLE (object), priv->signature_combo_box,
- 3, 4, ii, ii + 1, 0, 0, 0, 3);
-
-+ if (composer_lite) {
-+ ii = E_COMPOSER_HEADER_TO;
-+
-+ /* Leave room for the action buttons. */
-+ gtk_container_child_set (
-+ GTK_CONTAINER (object),
-+ priv->headers[ii]->input_widget,
-+ "right-attach", 2, NULL);
-+
-+ gtk_table_attach (GTK_TABLE (object), priv->actions_container, 2, 4, E_COMPOSER_HEADER_TO,
-+ E_COMPOSER_HEADER_TO + 1, GTK_FILL, 0, 0, 3);
-+ }
-+
- return object;
- }
-
-@@ -640,6 +664,8 @@ composer_header_table_init (EComposerHeaderTable *table)
- name_selector = e_name_selector_new ();
- table->priv->name_selector = name_selector;
-
-+ table->priv->actions_container = gtk_hbox_new (FALSE, 6);
-+
- header = e_composer_from_header_new (_("Fr_om:"));
- composer_header_table_bind_header ("account", "changed", header);
- composer_header_table_bind_header ("account-list", "refreshed", header);
-@@ -649,21 +675,21 @@ composer_header_table_init (EComposerHeaderTable *table)
- composer_header_table_from_changed_cb), table);
- table->priv->headers[E_COMPOSER_HEADER_FROM] = header;
-
-- header = e_composer_text_header_new_label (_("_Reply-To:"));
-+ header = e_composer_text_header_new_label (_("_Reply-To:"), "");
- composer_header_table_bind_header ("reply-to", "changed", header);
- table->priv->headers[E_COMPOSER_HEADER_REPLY_TO] = header;
-
-- header = e_composer_name_header_new (_("_To:"), name_selector);
-+ header = e_composer_name_header_new_with_label (_("_To:"), name_selector);
- e_composer_header_set_input_tooltip (header, HEADER_TOOLTIP_TO);
+@@ -684,12 +684,12 @@ composer_header_table_init (EComposerHeaderTable *table)
composer_header_table_bind_header ("destinations-to", "changed", header);
table->priv->headers[E_COMPOSER_HEADER_TO] = header;
-- header = e_composer_name_header_new (_("_Cc:"), name_selector);
-+ header = e_composer_name_header_new_with_action (_("_Cc:"), _("Show CC"), name_selector);
+- header = e_composer_name_header_new_with_action (_("_Cc:"), _("Show CC"), name_selector);
++ header = e_composer_name_header_new_with_action (_("_Cc:"), _("CC"), name_selector);
e_composer_header_set_input_tooltip (header, HEADER_TOOLTIP_CC);
composer_header_table_bind_header ("destinations-cc", "changed", header);
table->priv->headers[E_COMPOSER_HEADER_CC] = header;
-- header = e_composer_name_header_new (_("_Bcc:"), name_selector);
-+ header = e_composer_name_header_new_with_action (_("_Bcc:"), _("Show BCC"), name_selector);
+- header = e_composer_name_header_new_with_action (_("_Bcc:"), _("Show BCC"), name_selector);
++ header = e_composer_name_header_new_with_action (_("_Bcc:"), _("BCC"), name_selector);
e_composer_header_set_input_tooltip (header, HEADER_TOOLTIP_BCC);
composer_header_table_bind_header ("destinations-bcc", "changed", header);
table->priv->headers[E_COMPOSER_HEADER_BCC] = header;
-@@ -672,7 +698,7 @@ composer_header_table_init (EComposerHeaderTable *table)
- composer_header_table_bind_header ("post-to", "changed", header);
- table->priv->headers[E_COMPOSER_HEADER_POST_TO] = header;
-
-- header = e_composer_text_header_new_label (_("S_ubject:"));
-+ header = e_composer_text_header_new_label (_("S_ubject:"), NULL);
- composer_header_table_bind_header ("subject", "changed", header);
- table->priv->headers[E_COMPOSER_HEADER_SUBJECT] = header;
-
diff --git a/composer/e-composer-header.c b/composer/e-composer-header.c
-index 8cbcf64..fbb58f1 100644
+index fbb58f1..2fef9d0 100644
--- a/composer/e-composer-header.c
+++ b/composer/e-composer-header.c
-@@ -1,3 +1,7 @@
-+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+
-+/*Modified for Anjal - Johnny Jacob <jjohnny novell com>*/
-+
- /*
- *
- * This program is free software; you can redistribute it and/or
-@@ -28,6 +32,8 @@ enum {
- PROP_0,
- PROP_BUTTON,
- PROP_LABEL,
-+ PROP_ADDACTION,
-+ PROP_ADDACTION_TEXT,
- PROP_SENSITIVE,
- PROP_VISIBLE
- };
-@@ -40,7 +46,9 @@ enum {
+@@ -23,7 +23,7 @@
+ */
- struct _EComposerHeaderPrivate {
- gchar *label;
-+ gchar *addaction_text;
+ #include "e-composer-header.h"
+-
++#include <glib/gi18n.h>
+ #define E_COMPOSER_HEADER_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), E_TYPE_COMPOSER_HEADER, EComposerHeaderPrivate))
+@@ -49,6 +49,7 @@ struct _EComposerHeaderPrivate {
+ gchar *addaction_text;
gboolean button;
-+ gboolean addaction; /*For Add button.*/
+ gboolean addaction; /*For Add button.*/
++ GtkWidget *action_label;
};
static gpointer parent_class;
-@@ -54,6 +62,20 @@ composer_header_button_clicked_cb (GtkButton *button,
- g_signal_emit (header, signal_ids[CLICKED], 0);
- }
-
-+static void
-+composer_header_addaction_clicked_cb (GtkButton *button,
-+ EComposerHeader *header)
-+{
-+ gtk_widget_hide (button);
-+ e_composer_header_set_visible (header, TRUE);
-+}
-+
-+static void
-+link_clicked_cb (GtkLinkButton *button, const gchar *link_, gpointer user_data)
-+{
-+ return;
-+}
-+
- static GObject *
- composer_header_constructor (GType type,
- guint n_construct_properties,
-@@ -81,6 +103,27 @@ composer_header_constructor (GType type,
- gtk_label_set_mnemonic_widget (
- GTK_LABEL (widget), header->input_widget);
- }
-+
-+ if (header->priv->addaction) {
-+ GtkWidget *box, *tmp;
-+ char *str;
-+
-+ header->action_widget = gtk_button_new ();
-+ box = gtk_hbox_new (FALSE, 0);
-+ tmp = gtk_image_new_from_stock("gtk-add", GTK_ICON_SIZE_BUTTON);
-+ gtk_box_pack_start(box, tmp, FALSE, FALSE, 3);
-+ tmp = gtk_label_new (NULL);
-+ str = g_strdup_printf ("<span foreground='blue' underline='single' underline_color='blue' >%s</span>", header->priv->addaction_text);
-+ gtk_label_set_markup(tmp, str);
-+ gtk_box_pack_start(box, tmp, FALSE, FALSE, 3);
-+ gtk_container_add(header->action_widget, box);
-+ gtk_widget_show_all(header->action_widget);
-+ g_signal_connect (
-+ header->action_widget, "clicked",
-+ G_CALLBACK (composer_header_addaction_clicked_cb),
-+ header);
-+ }
-+
- header->title_widget = g_object_ref_sink (widget);
-
- g_free (header->priv->label);
-@@ -104,6 +147,14 @@ composer_header_set_property (GObject *object,
- priv->button = g_value_get_boolean (value);
- return;
-
-+ case PROP_ADDACTION: /* construct only */
-+ priv->addaction = g_value_get_boolean (value);
-+ return;
-+
-+ case PROP_ADDACTION_TEXT:/* construct only */
-+ priv->addaction_text = g_value_dup_string (value);
-+ return;
-+
- case PROP_LABEL: /* construct only */
- priv->label = g_value_dup_string (value);
- return;
-@@ -124,6 +175,15 @@ composer_header_set_property (GObject *object,
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- }
-
-+void
-+e_composer_header_set_property (GObject *object,
-+ guint property_id,
-+ const GValue *value,
-+ GParamSpec *pspec)
-+{
-+ composer_header_set_property (object, property_id, value, pspec);
-+}
-+
- static void
- composer_header_get_property (GObject *object,
- guint property_id,
-@@ -139,6 +199,15 @@ composer_header_get_property (GObject *object,
- g_value_set_boolean (value, priv->button);
- return;
-
-+ case PROP_ADDACTION: /* construct only */
-+ g_value_set_boolean (value, priv->button);
-+ return;
-+
-+ case PROP_ADDACTION_TEXT: /* construct only */
-+ g_value_take_string (
-+ value, priv->addaction_text);
-+ return;
-+
- case PROP_LABEL: /* construct only */
- g_value_take_string (
- value, e_composer_header_get_label (
-@@ -207,6 +276,28 @@ composer_header_class_init (EComposerHeaderClass *class)
-
- g_object_class_install_property (
- object_class,
-+ PROP_ADDACTION,
-+ g_param_spec_boolean (
-+ "addaction",
-+ NULL,
-+ NULL,
-+ FALSE,
-+ G_PARAM_READWRITE |
-+ G_PARAM_CONSTRUCT_ONLY));
-+
-+ g_object_class_install_property (
-+ object_class,
-+ PROP_ADDACTION_TEXT,
-+ g_param_spec_string (
-+ "addaction_text",
-+ NULL,
-+ NULL,
-+ NULL,
-+ G_PARAM_READWRITE |
-+ G_PARAM_CONSTRUCT_ONLY));
-+
-+ g_object_class_install_property (
-+ object_class,
- PROP_LABEL,
- g_param_spec_string (
- "label",
-diff --git a/composer/e-composer-header.h b/composer/e-composer-header.h
-index d1edd11..2b8f802 100644
---- a/composer/e-composer-header.h
-+++ b/composer/e-composer-header.h
-@@ -49,6 +49,7 @@ struct _EComposerHeader {
- GObject parent;
- GtkWidget *title_widget;
- GtkWidget *input_widget;
-+ GtkWidget *action_widget;
- EComposerHeaderPrivate *priv;
- };
-
-@@ -64,6 +65,8 @@ void e_composer_header_set_sensitive (EComposerHeader *header,
- gboolean e_composer_header_get_visible (EComposerHeader *header);
- void e_composer_header_set_visible (EComposerHeader *header,
- gboolean visible);
-+void e_composer_header_set_property (GObject *object, guint property_id,
-+ const GValue *value, GParamSpec *pspec);
- void e_composer_header_set_title_tooltip
- (EComposerHeader *header,
- const gchar *tooltip);
-diff --git a/composer/e-composer-name-header.c b/composer/e-composer-name-header.c
-index 70a126b..ed96312 100644
---- a/composer/e-composer-name-header.c
-+++ b/composer/e-composer-name-header.c
-@@ -23,8 +23,8 @@
- #include <glib/gi18n.h>
-
- /* XXX Temporary kludge */
--#include "addressbook/gui/contact-editor/e-contact-editor.h"
--#include "addressbook/gui/contact-list-editor/e-contact-list-editor.h"
-+/* #include "addressbook/gui/contact-editor/e-contact-editor.h" */
-+/* #include "addressbook/gui/contact-list-editor/e-contact-list-editor.h" */
-
- #define E_COMPOSER_NAME_HEADER_GET_PRIVATE(obj) \
- (G_TYPE_INSTANCE_GET_PRIVATE \
-@@ -117,10 +117,7 @@ composer_name_header_constructor (GType type,
- entry = E_NAME_SELECTOR_ENTRY (
- e_name_selector_peek_section_list (
- priv->name_selector, label));
-- e_name_selector_entry_set_contact_editor_func (
-- entry, e_contact_editor_new);
-- e_name_selector_entry_set_contact_list_editor_func (
-- entry, e_contact_list_editor_new);
-+
- g_signal_connect (
- entry, "changed",
- G_CALLBACK (composer_name_header_entry_changed_cb), object);
-@@ -261,6 +258,32 @@ e_composer_name_header_new (const gchar *label,
- "button", TRUE, "name-selector", name_selector, NULL);
- }
-
-+EComposerHeader *
-+e_composer_name_header_new_with_label (const gchar *label,
-+ ENameSelector *name_selector)
-+{
-+ return g_object_new (
-+ E_TYPE_COMPOSER_NAME_HEADER, "label", label,
-+ "button", FALSE, "name-selector", name_selector,
-+ "addaction", FALSE, "visible", TRUE,
-+ NULL);
-+}
-+
-+EComposerHeader *
-+e_composer_name_header_new_with_action (const gchar *label,
-+ const gchar *action_label,
-+ ENameSelector *name_selector)
-+{
-+ g_return_val_if_fail (E_IS_NAME_SELECTOR (name_selector), NULL);
-+
-+ return g_object_new (
-+ E_TYPE_COMPOSER_NAME_HEADER, "label", label,
-+ "button", FALSE, "name-selector", name_selector,
-+ "addaction_text", action_label,
-+ "addaction", action_label != NULL,
-+ NULL);
-+}
-+
- ENameSelector *
- e_composer_name_header_get_name_selector (EComposerNameHeader *header)
- {
-diff --git a/composer/e-composer-name-header.h b/composer/e-composer-name-header.h
-index 04f7100..92a379b 100644
---- a/composer/e-composer-name-header.h
-+++ b/composer/e-composer-name-header.h
-@@ -62,6 +62,15 @@ struct _EComposerNameHeaderClass {
- GType e_composer_name_header_get_type (void);
- EComposerHeader * e_composer_name_header_new (const gchar *label,
- ENameSelector *name_selector);
-+/*No button. Just a label.*/
-+EComposerHeader * e_composer_name_header_new_with_label (const gchar *label,
-+ ENameSelector *name_selector);
-+
-+/*No button. Label with a Link button for show/hide.*/
-+EComposerHeader * e_composer_name_header_new_with_action (const gchar *label,
-+ const gchar *action,
-+ ENameSelector *name_selector);
-+
- ENameSelector * e_composer_name_header_get_name_selector
- (EComposerNameHeader *header);
- EDestination ** e_composer_name_header_get_destinations
-diff --git a/composer/e-composer-private.c b/composer/e-composer-private.c
-index 1729aae..36c87f5 100644
---- a/composer/e-composer-private.c
-+++ b/composer/e-composer-private.c
-@@ -17,6 +17,7 @@
-
- #include "e-composer-private.h"
- #include "e-util/e-util-private.h"
-+#include "e-util/e-icon-factory.h"
-
- static void
- composer_setup_charset_menu (EMsgComposer *composer)
-@@ -88,6 +89,7 @@ e_composer_private_init (EMsgComposer *composer)
- GtkWidget *widget;
- GtkWidget *container;
- GtkWidget *send_widget;
-+ GtkWidget *exp_box;
- const gchar *path;
- gchar *filename;
- GError *error = NULL;
-@@ -95,6 +97,15 @@ e_composer_private_init (EMsgComposer *composer)
- editor = GTKHTML_EDITOR (composer);
- ui_manager = gtkhtml_editor_get_ui_manager (editor);
-
-+ if (composer->lite) {
-+ widget = gtkhtml_editor_get_managed_widget (editor, "/main-menu");
-+ gtk_widget_hide (widget);
-+ widget = gtkhtml_editor_get_managed_widget (editor, "/main-toolbar");
-+ gtk_toolbar_set_style (widget, GTK_TOOLBAR_BOTH_HORIZ);
-+ gtk_widget_hide (widget);
-+
-+ }
-+
- priv->charset_actions = gtk_action_group_new ("charset");
- priv->composer_actions = gtk_action_group_new ("composer");
-
-@@ -127,6 +138,64 @@ e_composer_private_init (EMsgComposer *composer)
- send_widget = gtk_ui_manager_get_widget (ui_manager, path);
- gtk_tool_item_set_is_important (GTK_TOOL_ITEM (send_widget), TRUE);
-
-+ exp_box = gtk_hbox_new (FALSE, 0);
-+ gtk_widget_show(exp_box);
-+ if (composer->lite) {
-+ GtkWidget *tmp, *tmp1, *tmp_box, *align;
-+
-+ tmp_box = gtk_hbox_new (FALSE, 0);
-+
-+ tmp = gtk_hbox_new (FALSE, 0);
-+ tmp1 = gtk_image_new_from_pixbuf (e_icon_factory_get_icon("mail-send", E_ICON_SIZE_BUTTON));
-+ gtk_box_pack_start (tmp, tmp1, FALSE, FALSE, 0);
-+ tmp1 = gtk_label_new_with_mnemonic (_("S_end"));
-+ gtk_box_pack_start (tmp, tmp1, FALSE, FALSE, 6);
-+ gtk_widget_show_all(tmp);
-+ gtk_widget_reparent (send_widget, tmp_box);
-+ gtk_box_set_child_packing (tmp_box, send_widget, FALSE, FALSE, 6, GTK_PACK_END);
-+ gtk_tool_item_set_is_important (GTK_TOOL_ITEM (send_widget), TRUE);
-+ send_widget = gtk_bin_get_child (send_widget);
-+ gtk_container_remove(send_widget, gtk_bin_get_child (send_widget));
-+ gtk_container_add(send_widget, tmp);
-+ gtk_button_set_relief (send_widget, GTK_RELIEF_NORMAL);
-+
-+ path = "/main-toolbar/pre-main-toolbar/save-draft";
-+ send_widget = gtk_ui_manager_get_widget (ui_manager, path);
-+ tmp = gtk_hbox_new (FALSE, 0);
-+ tmp1 = gtk_image_new_from_pixbuf (e_icon_factory_get_icon(GTK_STOCK_SAVE, E_ICON_SIZE_BUTTON));
-+ gtk_box_pack_start (tmp, tmp1, FALSE, FALSE, 0);
-+ tmp1 = gtk_label_new_with_mnemonic (_("Save draft"));
-+ gtk_box_pack_start (tmp, tmp1, FALSE, FALSE, 3);
-+ gtk_widget_show_all(tmp);
-+ gtk_widget_reparent (send_widget, tmp_box);
-+ gtk_box_set_child_packing (tmp_box, send_widget, FALSE, FALSE, 6, GTK_PACK_END);
-+ gtk_tool_item_set_is_important (GTK_TOOL_ITEM (send_widget), TRUE);
-+ send_widget = gtk_bin_get_child (send_widget);
-+ gtk_container_remove(send_widget, gtk_bin_get_child (send_widget));
-+ gtk_container_add(send_widget, tmp);
-+ gtk_button_set_relief (send_widget, GTK_RELIEF_NORMAL);
-+
-+ path = "/main-toolbar/pre-main-toolbar/attach";
-+ send_widget = gtk_ui_manager_get_widget (ui_manager, path);
-+ tmp = gtk_hbox_new (FALSE, 0);
-+ tmp1 = gtk_image_new_from_pixbuf (e_icon_factory_get_icon("gtk-add", E_ICON_SIZE_BUTTON));
-+ gtk_box_pack_start (tmp, tmp1, FALSE, FALSE, 0);
-+ tmp1 = gtk_label_new_with_mnemonic (_("Add attachment"));
-+ gtk_box_pack_start (tmp, tmp1, FALSE, FALSE, 3);
-+ gtk_widget_show_all(tmp);
-+ gtk_widget_reparent (send_widget, tmp_box);
-+ gtk_box_set_child_packing (tmp_box, send_widget, FALSE, FALSE, 6, GTK_PACK_START);
-+ gtk_tool_item_set_is_important (GTK_TOOL_ITEM (send_widget), TRUE);
-+ send_widget = gtk_bin_get_child (send_widget);
-+ gtk_container_remove(send_widget, gtk_bin_get_child (send_widget));
-+ gtk_container_add(send_widget, tmp);
-+ gtk_button_set_relief (send_widget, GTK_RELIEF_NORMAL);
-+
-+ gtk_widget_show(tmp_box);
-+ gtk_box_pack_end (exp_box, tmp_box, TRUE, TRUE, 0);
-+ gtk_box_pack_end (editor->vbox, exp_box, FALSE, FALSE, 3);
-+
-+ }
- composer_setup_charset_menu (composer);
-
- if (error != NULL) {
-@@ -138,11 +207,15 @@ e_composer_private_init (EMsgComposer *composer)
- /* Construct the header table. */
-
- container = editor->vbox;
--
-+
- widget = e_composer_header_table_new ();
- gtk_container_set_border_width (GTK_CONTAINER (widget), 6);
- gtk_box_pack_start (GTK_BOX (editor->vbox), widget, FALSE, FALSE, 0);
-- gtk_box_reorder_child (GTK_BOX (editor->vbox), widget, 2);
-+ if (composer->lite)
-+ gtk_box_reorder_child (GTK_BOX (editor->vbox), widget, 0);
+@@ -66,8 +67,13 @@ static void
+ composer_header_addaction_clicked_cb (GtkButton *button,
+ EComposerHeader *header)
+ {
+- gtk_widget_hide (button);
+- e_composer_header_set_visible (header, TRUE);
++ gboolean show = !e_composer_header_get_visible(header);
++ if (!show)
++ gtk_label_set_markup (header->priv->action_label, g_object_get_data (header->priv->action_label, "show"));
+ else
-+ gtk_box_reorder_child (GTK_BOX (editor->vbox), widget, 2);
-+
- priv->header_table = g_object_ref (widget);
- gtk_widget_show (widget);
-
-@@ -153,6 +226,8 @@ e_composer_private_init (EMsgComposer *composer)
- priv->attachment_paned = g_object_ref (widget);
- gtk_widget_show (widget);
-
-+ g_object_set_data (composer, "vbox", editor->vbox);
-+
- /* Reparent the scrolled window containing the GtkHTML widget
- * into the content area of the top attachment pane. */
-
-diff --git a/composer/e-composer-text-header.c b/composer/e-composer-text-header.c
-index 2945720..e676ef9 100644
---- a/composer/e-composer-text-header.c
-+++ b/composer/e-composer-text-header.c
-@@ -1,3 +1,7 @@
-+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+
-+/*Modified for Anjal - Johnny Jacob <jjohnny novell com>*/
-+
- /*
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
-@@ -21,6 +25,11 @@
- #define E_COMPOSER_TEXT_HEADER_GET_ENTRY(header) \
- (GTK_ENTRY (E_COMPOSER_HEADER (header)->input_widget))
-
-+struct _EComposerTextHeaderPrivate {
-+ GtkLinkButton *linkbtn;
-+ guint destination_index;
-+};
-+
- static gpointer parent_class;
-
- static void
-@@ -99,19 +108,23 @@ e_composer_text_header_get_type (void)
- }
-
- EComposerHeader *
--e_composer_text_header_new_label (const gchar *label)
-+e_composer_text_header_new_label (const gchar *label, const gchar *action_label)
- {
- return g_object_new (
- E_TYPE_COMPOSER_TEXT_HEADER, "label", label,
-- "button", FALSE, NULL);
-+ "button", FALSE, "addaction", action_label && *action_label,
-+ "addaction_text", action_label,
-+ "visible", action_label == NULL, NULL);
- }
-
- EComposerHeader *
--e_composer_text_header_new_button (const gchar *label)
-+e_composer_text_header_new_button (const gchar *label, const gchar *action_label)
- {
- return g_object_new (
- E_TYPE_COMPOSER_TEXT_HEADER, "label", label,
-- "button", TRUE, NULL);
-+ "button", TRUE, "addaction", action_label != NULL,
-+ "addaction_text", action_label,
-+ "visible", action_label == NULL, NULL);
- }
-
- const gchar *
-diff --git a/composer/e-composer-text-header.h b/composer/e-composer-text-header.h
-index c0c4708..79e972d 100644
---- a/composer/e-composer-text-header.h
-+++ b/composer/e-composer-text-header.h
-@@ -57,10 +57,13 @@ struct _EComposerTextHeaderClass {
- };
-
- GType e_composer_text_header_get_type (void);
--EComposerHeader * e_composer_text_header_new_label
-- (const gchar *label);
--EComposerHeader * e_composer_text_header_new_button
-- (const gchar *label);
-+
-+EComposerHeader *
-+e_composer_text_header_new_label (const gchar *label, const gchar *action_label);
-+
-+EComposerHeader *
-+e_composer_text_header_new_button (const gchar *label, const gchar *action_label);
-+
- const gchar * e_composer_text_header_get_text (EComposerTextHeader *header);
- void e_composer_text_header_set_text (EComposerTextHeader *header,
- const gchar *text);
-diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c
-index 3195255..783f20f 100644
---- a/composer/e-msg-composer.c
-+++ b/composer/e-msg-composer.c
-@@ -150,6 +150,8 @@ enum {
- LAST_SIGNAL
- };
-
-+gboolean composer_lite = FALSE;
-+
- static gpointer parent_class;
- static guint signals[LAST_SIGNAL];
-
-@@ -1550,7 +1552,14 @@ msg_composer_update_preferences (GConfClient *client,
- GError *error = NULL;
-
- editor = GTKHTML_EDITOR (composer);
--
-+
-+ if (entry) {
-+ if (strcmp(gconf_entry_get_key(entry), COMPOSER_GCONF_INLINE_SPELLING_KEY) != 0 &&
-+ strcmp(gconf_entry_get_key(entry), COMPOSER_GCONF_MAGIC_LINKS_KEY) != 0 &&
-+ strcmp(gconf_entry_get_key(entry), COMPOSER_GCONF_MAGIC_SMILEYS_KEY) != 0)
-+ return;
-+ }
-+
- enable = gconf_client_get_bool (
- client, COMPOSER_GCONF_INLINE_SPELLING_KEY, &error);
- if (error == NULL)
-@@ -2473,6 +2482,7 @@ msg_composer_init (EMsgComposer *composer)
- GtkHTML *html;
- gint n_targets;
-
-+ composer->lite = composer_lite;
- composer->priv = E_MSG_COMPOSER_GET_PRIVATE (composer);
-
- e_composer_private_init (composer);
-@@ -2685,6 +2695,32 @@ e_msg_composer_new (void)
- return e_msg_composer_new_with_type (E_MSG_COMPOSER_MAIL);
- }
-
-+
-+void
-+e_msg_composer_set_lite (void)
-+{
-+ composer_lite = TRUE;
-+}
-+
-+gboolean
-+e_msg_composer_get_lite (void)
-+{
-+ return composer_lite;
-+}
-+
-+EMsgComposer *
-+e_msg_composer_lite_new (void)
-+{
-+ EMsgComposer *composer;
-+
-+ /* Init lite-composer for ever for the session */
-+ composer_lite = TRUE;
-+
-+ composer = e_msg_composer_new_with_type (E_MSG_COMPOSER_MAIL);
-+
-+ return composer;
-+}
-+
- static void
- e_msg_composer_set_pending_body (EMsgComposer *composer,
- gchar *text,
-diff --git a/composer/e-msg-composer.h b/composer/e-msg-composer.h
-index 54520ec..5a0e0e0 100644
---- a/composer/e-msg-composer.h
-+++ b/composer/e-msg-composer.h
-@@ -60,6 +60,7 @@ typedef struct _EMsgComposerPrivate EMsgComposerPrivate;
- struct _EMsgComposer {
- GtkhtmlEditor parent;
- EMsgComposerPrivate *priv;
-+ gboolean lite;
- };
-
- struct _EMsgComposerClass {
-@@ -74,11 +75,14 @@ struct _EAttachmentBar;
-
- GType e_msg_composer_get_type (void);
- EMsgComposer * e_msg_composer_new (void);
-+EMsgComposer * e_msg_composer_lite_new (void);
- EMsgComposer * e_msg_composer_new_with_type (gint type);
- EMsgComposer * e_msg_composer_new_with_message (CamelMimeMessage *msg);
- EMsgComposer * e_msg_composer_new_from_url (const gchar *url);
- EMsgComposer * e_msg_composer_new_redirect (CamelMimeMessage *message,
- const gchar *resent_from);
-+void e_msg_composer_set_lite (void);
-+gboolean e_msg_composer_get_lite (void);
-
- void e_msg_composer_send (EMsgComposer *composer);
- void e_msg_composer_save_draft (EMsgComposer *composer);
-diff --git a/e-util/e-config.c b/e-util/e-config.c
-index 1da54b5..a2d68e1 100644
---- a/e-util/e-config.c
-+++ b/e-util/e-config.c
-@@ -532,11 +532,13 @@ ec_rebuild(EConfig *emp)
- gnome_druid_page_edge_set_title((GnomeDruidPageEdge *)page, translated_label);
- gnome_druid_insert_page((GnomeDruid *)druid, pagenode?(GnomeDruidPage *)pagenode->frame:NULL, (GnomeDruidPage *)page);
- }
-- if (item->type == E_CONFIG_PAGE_FINISH) {
-- g_signal_connect(page, "back", G_CALLBACK(ec_druid_prev), wn);
-- g_signal_connect(page, "finish", G_CALLBACK(ec_druid_finish), wn);
-- } else
-- g_signal_connect(page, "next", G_CALLBACK(ec_druid_next), wn);
-+ if (page) {
-+ if (item->type == E_CONFIG_PAGE_FINISH) {
-+ g_signal_connect(page, "back", G_CALLBACK(ec_druid_prev), wn);
-+ g_signal_connect(page, "finish", G_CALLBACK(ec_druid_finish), wn);
-+ } else
-+ g_signal_connect(page, "next", G_CALLBACK(ec_druid_next), wn);
-+ }
- wn->frame = page;
- wn->widget = page;
- }
-@@ -567,10 +569,11 @@ ec_rebuild(EConfig *emp)
- page = item->factory(emp, item, root, wn->frame, wn->context->data);
- if (emp->type == E_CONFIG_DRUID) {
- if (page) {
-- g_return_if_fail (GNOME_IS_DRUID_PAGE_STANDARD(page));
-- connect = wn->frame != page;
-- wn->frame = page;
-- page = ((GnomeDruidPageStandard *)page)->vbox;
-+ if (GNOME_IS_DRUID_PAGE_STANDARD(page)) {
-+ connect = wn->frame != page;
-+ wn->frame = page;
-+ page = ((GnomeDruidPageStandard *)page)->vbox;
-+ }
- } else
- wn->frame = page;
- } else {
-diff --git a/filter/Makefile.am b/filter/Makefile.am
-index 8eee6bd..b58b4b2 100644
---- a/filter/Makefile.am
-+++ b/filter/Makefile.am
-@@ -12,6 +12,22 @@ INCLUDES = \
- privsolib_LTLIBRARIES = \
- libfilter.la
-
-+filterincludedir = $(privincludedir)/filter
-+
-+filterinclude_HEADERS = \
-+ filter-code.h \
-+ filter-colour.h \
-+ filter-datespec.h \
-+ filter-element.h \
-+ filter-file.h \
-+ filter-input.h \
-+ filter-int.h \
-+ filter-option.h \
-+ filter-part.h \
-+ filter-rule.h \
-+ rule-context.h \
-+ rule-editor.h
-+
- libfilter_la_SOURCES = \
- filter-code.c \
- filter-code.h \
-diff --git a/mail/Makefile.am b/mail/Makefile.am
-index 96ed893..74aefef 100644
---- a/mail/Makefile.am
-+++ b/mail/Makefile.am
-@@ -31,7 +31,9 @@ INCLUDES = \
- -DPREFIX=\""$(prefix)"\" \
- -DG_LOG_DOMAIN=\"evolution-mail\"
-
--component_LTLIBRARIES = libevolution-mail.la
-+component_LTLIBRARIES = libevolution-mail-shared.la \
-+ libevolution-mail.la
-+
-
- # Mail.idl
- MAIL_IDL = Evolution-Mail.idl
-@@ -55,9 +57,16 @@ idl_DATA = $(MAIL_IDL)
- mailinclude_HEADERS = \
- $(MAIL_IDL_GENERATED_H) \
- e-mail-attachment-bar.h \
-+ e-searching-tokenizer.h \
-+ em-account-editor.h \
- em-composer-utils.h \
- em-config.h \
- em-event.h \
-+ em-filter-context.h \
-+ em-filter-editor.h \
-+ em-filter-folder-element.h \
-+ em-filter-rule.h \
-+ em-filter-source-element.h \
- em-folder-browser.h \
- em-folder-tree-model.h \
- em-folder-tree.h \
-@@ -76,14 +85,17 @@ mailinclude_HEADERS = \
- em-menu.h \
- em-message-browser.h \
- em-popup.h \
-+ em-search-context.h \
- em-stripsig-filter.h \
- em-sync-stream.h \
- em-utils.h \
- mail-autofilter.h \
- mail-component.h \
- mail-config.h \
-+ mail-folder-cache.h \
- mail-mt.h \
- mail-ops.h \
-+ mail-send-recv.h \
- mail-session.h \
- mail-tools.h \
- message-list.h \
-@@ -98,16 +110,77 @@ libevolution_mail_la_SOURCES = \
- e-attachment-handler-mail.h \
- e-mail-attachment-bar.c \
- e-searching-tokenizer.c \
-- e-searching-tokenizer.h \
-- em-account-editor.c \
-- em-account-editor.h \
- em-account-prefs.c \
- em-account-prefs.h \
- em-composer-prefs.c \
- em-composer-prefs.h \
-- em-composer-utils.c \
-- em-config.c \
-+ em-folder-browser.c \
-+ em-folder-view.c \
-+ em-format-hook.c \
-+ em-format-html-display.c \
-+ em-format-html-print.c \
-+ em-format-html.c \
-+ em-html-stream.c \
-+ em-junk-hook.c \
-+ em-mailer-prefs.c \
-+ em-mailer-prefs.h \
-+ em-menu.c \
-+ em-message-browser.c \
-+ em-migrate.c \
-+ em-migrate.h \
-+ em-network-prefs.c \
-+ em-network-prefs.h \
-+ em-subscribe-editor.c \
-+ em-subscribe-editor.h \
-+ mail-component-factory.c \
-+ mail-component.c \
-+ mail-config-factory.c \
-+ mail-config-factory.h \
-+ mail-signature-editor.c \
-+ mail-signature-editor.h \
-+ mail-types.h \
-+ message-list.c
-+if ENABLE_SMIME
-+SMIME_LIBS = \
-+ $(top_builddir)/smime/lib/libessmime.la \
-+ $(top_builddir)/smime/gui/libevolution-smime.la
-+endif
-+
-+
-+libevolution_mail_la_LIBADD = \
-+ $(top_builddir)/mail/libevolution-mail-shared.la \
-+ $(top_builddir)/e-util/libeutil.la \
-+ $(top_builddir)/shell/libeshell.la \
-+ $(top_builddir)/widgets/table/libetable.la \
-+ $(top_builddir)/widgets/text/libetext.la \
-+ $(top_builddir)/widgets/misc/libemiscwidgets.la \
-+ $(top_builddir)/widgets/misc/libefilterbar.la \
-+ $(top_builddir)/filter/libfilter.la \
-+ $(top_builddir)/widgets/menus/libmenus.la \
-+ $(top_builddir)/addressbook/util/libeabutil.la \
-+ $(top_builddir)/addressbook/gui/contact-editor/libecontacteditor.la \
-+ $(top_builddir)/addressbook/gui/contact-list-editor/libecontactlisteditor.la \
-+ $(top_builddir)/mail/importers/libevolution-mail-importers.la \
-+ $(SMIME_LIBS) \
-+ $(EVOLUTION_MAIL_LIBS) \
-+ $(GTKHTML_LIBS) \
-+ $(REGEX_LIBS) \
-+ $(THREADS_LIBS)
-+
-+libevolution_mail_la_LDFLAGS = \
-+ -avoid-version -module $(NO_UNDEFINED)
-+
-+libevolution_mail_la_DEPENDENCIES = em-filter-i18n.h
-+
-+# .server files
-+
-+libevolution_mail_shared_la_SOURCES = \
-+ em-account-editor.c \
-+ em-account-editor.h \
- em-event.c \
-+ em-config.c \
-+ em-composer-utils.c \
-+ em-composer-utils.h \
- em-filter-context.c \
- em-filter-context.h \
- em-filter-editor.c \
-@@ -118,7 +191,8 @@ libevolution_mail_la_SOURCES = \
- em-filter-rule.h \
- em-filter-source-element.c \
- em-filter-source-element.h \
-- em-folder-browser.c \
-+ em-folder-tree-model.c \
-+ em-folder-tree.c \
- em-folder-properties.c \
- em-folder-properties.h \
- em-folder-selection-button.c \
-@@ -127,34 +201,15 @@ libevolution_mail_la_SOURCES = \
- em-folder-selection.h \
- em-folder-selector.c \
- em-folder-selector.h \
-- em-folder-tree-model.c \
-- em-folder-tree.c \
- em-folder-utils.c \
-- em-folder-view.c \
-- em-format-hook.c \
-- em-format-html-display.c \
-- em-format-html-print.c \
-- em-format-html.c \
- em-format-quote.c \
- em-format.c \
-- em-html-stream.c \
- em-icon-stream.c \
- em-inline-filter.c \
-- em-junk-hook.c \
-- em-mailer-prefs.c \
-- em-mailer-prefs.h \
-- em-menu.c \
-- em-message-browser.c \
-- em-migrate.c \
-- em-migrate.h \
-- em-network-prefs.c \
-- em-network-prefs.h \
- em-popup.c \
- em-search-context.c \
- em-search-context.h \
- em-stripsig-filter.c \
-- em-subscribe-editor.c \
-- em-subscribe-editor.h \
- em-sync-stream.c \
- em-utils.c \
- em-vfolder-context.c \
-@@ -164,63 +219,41 @@ libevolution_mail_la_SOURCES = \
- em-vfolder-rule.c \
- em-vfolder-rule.h \
- mail-autofilter.c \
-- mail-component-factory.c \
-- mail-component.c \
-- mail-config-factory.c \
-- mail-config-factory.h \
- mail-config.c \
- mail-crypto.c \
- mail-crypto.h \
- mail-folder-cache.c \
- mail-folder-cache.h \
-- mail-mt.c \
- mail-ops.c \
-+ mail-mt.c \
- mail-send-recv.c \
- mail-send-recv.h \
- mail-session.c \
-- mail-signature-editor.c \
-- mail-signature-editor.h \
- mail-tools.c \
-- mail-types.h \
- mail-vfolder.c \
-- message-list.c \
- message-tag-editor.c \
- message-tag-editor.h \
- message-tag-followup.c \
- message-tag-followup.h
-
--if ENABLE_SMIME
--SMIME_LIBS = \
-- $(top_builddir)/smime/lib/libessmime.la \
-- $(top_builddir)/smime/gui/libevolution-smime.la
--endif
-
--libevolution_mail_la_LIBADD = \
-+
-+
-+
-+
-+libevolution_mail_shared_la_LIBADD = \
- $(top_builddir)/e-util/libeutil.la \
-- $(top_builddir)/shell/libeshell.la \
-- $(top_builddir)/composer/libcomposer.la \
-- $(top_builddir)/widgets/table/libetable.la \
-- $(top_builddir)/widgets/text/libetext.la \
- $(top_builddir)/widgets/misc/libemiscwidgets.la \
-- $(top_builddir)/widgets/misc/libefilterbar.la \
-+ $(top_builddir)/composer/libcomposer.la \
- $(top_builddir)/filter/libfilter.la \
- $(top_builddir)/widgets/menus/libmenus.la \
-- $(top_builddir)/addressbook/util/libeabutil.la \
-- $(top_builddir)/addressbook/gui/contact-editor/libecontacteditor.la \
-- $(top_builddir)/addressbook/gui/contact-list-editor/libecontactlisteditor.la \
-- $(top_builddir)/mail/importers/libevolution-mail-importers.la \
- $(SMIME_LIBS) \
-- $(EVOLUTION_MAIL_LIBS) \
-- $(GTKHTML_LIBS) \
-- $(REGEX_LIBS) \
- $(THREADS_LIBS)
-
--libevolution_mail_la_LDFLAGS = \
-+libevolution_mail_shared_la_LDFLAGS = \
- -avoid-version -module $(NO_UNDEFINED)
-
--libevolution_mail_la_DEPENDENCIES = em-filter-i18n.h
-
--# .server files
-
- server_in_files = GNOME_Evolution_Mail.server.in.in
- server_DATA = $(server_in_files:.server.in.in=.server)
-diff --git a/mail/em-account-editor.c b/mail/em-account-editor.c
-index b9850bd..42a6fa0 100644
---- a/mail/em-account-editor.c
-+++ b/mail/em-account-editor.c
-@@ -276,6 +276,26 @@ EMAccountEditor *em_account_editor_new(EAccount *account, em_account_editor_t ty
- return emae;
- }
-
-+/**
-+ * em_account_editor_new_for_pages:
-+ * @account:
-+ * @type:
-+ *
-+ * Create a new account editor. If @account is NULL then this is to
-+ * create a new account, else @account is copied to a working
-+ * structure and is for editing an existing account.
-+ *
-+ * Return value:
-+ **/
-+EMAccountEditor *em_account_editor_new_for_pages(EAccount *account, em_account_editor_t type, char *id, GtkWidget **pages)
-+{
-+ EMAccountEditor *emae = g_object_new(em_account_editor_get_type(), NULL);
-+ emae->pages = pages;
-+ em_account_editor_construct(emae, account, type, id);
-+
-+ return emae;
-+}
-+
- /* ********************************************************************** */
-
- static struct {
-@@ -401,7 +421,7 @@ emae_display_license(EMAccountEditor *emae, CamelProvider *prov)
- gtk_text_view_set_editable((GtkTextView *)w, FALSE);
- response = gtk_dialog_run((GtkDialog *)dialog);
- } else {
-- e_error_run((GtkWindow *)gtk_widget_get_toplevel(emae->editor),
-+ e_error_run(emae->editor ? (GtkWindow *)gtk_widget_get_toplevel(emae->editor) : NULL,
- "mail:no-load-license", prov->license_file, NULL);
- }
-
-@@ -1018,7 +1038,8 @@ emae_url_set_hostport(CamelURL *url, const char *txt)
- }
-
- g_strstrip(host);
-- camel_url_set_host(url, host);
-+ if (txt && *txt)
-+ camel_url_set_host(url, host);
-
- g_free(host);
- }
-@@ -1381,7 +1402,8 @@ emae_refresh_providers(EMAccountEditor *emae, EMAccountEditorService *service)
- int active = 0, i;
- struct _service_info *info = &emae_service_info[service->type];
- const char *uri = e_account_get_string(account, info->account_uri_key);
-- char *current = NULL;
-+ char *current = NULL, *tmp;
-+ CamelURL *url;
-
- dropdown = service->providers;
- gtk_widget_show((GtkWidget *)dropdown);
-@@ -1396,8 +1418,10 @@ emae_refresh_providers(EMAccountEditor *emae, EMAccountEditorService *service)
- memcpy(current, uri, len);
- current[len] = 0;
- }
-+ } else {
-+ current = g_strdup("imap");
- }
--
-+
- store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_POINTER);
-
- i = 0;
-@@ -1423,7 +1447,7 @@ emae_refresh_providers(EMAccountEditor *emae, EMAccountEditorService *service)
-
- gtk_list_store_append(store, &iter);
- gtk_list_store_set(store, &iter, 0, provider->name, 1, provider, -1);
--
-+
- /* find the displayed and set default */
- if (i == 0 || (current && strcmp(provider->protocol, current) == 0)) {
- service->provider = provider;
-@@ -1441,13 +1465,30 @@ emae_refresh_providers(EMAccountEditor *emae, EMAccountEditorService *service)
- i++;
- }
-
-+
-+ gtk_cell_layout_clear((GtkCellLayout *)dropdown);
- gtk_combo_box_set_model(dropdown, (GtkTreeModel *)store);
- gtk_cell_layout_pack_start((GtkCellLayout *)dropdown, cell, TRUE);
- gtk_cell_layout_set_attributes((GtkCellLayout *)dropdown, cell, "text", 0, NULL);
-
-+ g_signal_handlers_disconnect_by_func(dropdown, emae_provider_changed, service);
- gtk_combo_box_set_active(dropdown, -1); /* needed for gtkcombo bug(?) */
- gtk_combo_box_set_active(dropdown, active);
- g_signal_connect(dropdown, "changed", G_CALLBACK(emae_provider_changed), service);
-+
-+ if (!uri || (url = camel_url_new(uri, NULL)) == NULL) {
-+ return;
-+ }
-+
-+ tmp = camel_url_get_param(url, "use_ssl");
-+ if (tmp == NULL)
-+ tmp = "never";
-+ for (i=0;i<num_ssl_options;i++) {
-+ if (!strcmp(ssl_options[i].value, tmp)) {
-+ gtk_combo_box_set_active(service->use_ssl, i);
-+ break;
-+ }
-+ }
- }
-
- static void
-@@ -1603,11 +1644,12 @@ static void emae_check_authtype(GtkWidget *w, EMAccountEditorService *service)
- uri = e_account_get_string(emae->account, emae_service_info[service->type].account_uri_key);
- g_object_ref(emae);
-
-- service->check_dialog = e_error_new((GtkWindow *)gtk_widget_get_toplevel(emae->editor),
-+ service->check_dialog = e_error_new(emae->editor ? (GtkWindow *)gtk_widget_get_toplevel(emae->editor) : NULL,
- "mail:checking-service", NULL);
- g_signal_connect(service->check_dialog, "response", G_CALLBACK(emae_check_authtype_response), service);
- gtk_widget_show(service->check_dialog);
-- gtk_widget_set_sensitive(emae->editor, FALSE);
-+ if (emae->editor)
-+ gtk_widget_set_sensitive(emae->editor, FALSE);
- service->check_id = mail_check_service(uri, service->type, emae_check_authtype_done, service);
- }
-
-@@ -1621,7 +1663,6 @@ emae_setup_service(EMAccountEditor *emae, EMAccountEditorService *service, Glade
- int i;
-
- service->provider = uri?camel_provider_get(uri, NULL):NULL;
--
- service->frame = glade_xml_get_widget(xml, info->frame);
- service->container = glade_xml_get_widget(xml, info->container);
- service->description = GTK_LABEL (glade_xml_get_widget (xml, info->description));
-@@ -1650,8 +1691,9 @@ emae_setup_service(EMAccountEditor *emae, EMAccountEditorService *service, Glade
- } else
- gtk_entry_set_text(service->hostname, url->host);
- }
-- if (url->user)
-+ if (url->user && *url->user) {
- gtk_entry_set_text(service->username, url->user);
-+ }
- if (service->pathentry) {
- GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER;
-
-@@ -1789,7 +1831,9 @@ emae_identity_page(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, st
- }
-
- w = glade_xml_get_widget(xml, item->label);
-- if (((EConfig *)gui->config)->type == E_CONFIG_DRUID) {
-+ if (emae->type == EMAE_PAGES) {
-+ gtk_box_pack_start (emae->pages[0], w, TRUE, TRUE, 0);
-+ } else if (((EConfig *)gui->config)->type == E_CONFIG_DRUID) {
- GladeXML *druidxml;
- GtkWidget *page;
-
-@@ -1838,7 +1882,9 @@ emae_receive_page(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, str
- emae_setup_service(emae, &gui->source, xml);
-
- w = glade_xml_get_widget(xml, item->label);
-- if (((EConfig *)gui->config)->type == E_CONFIG_DRUID) {
-+ if (emae->type == EMAE_PAGES) {
-+ gtk_box_pack_start (emae->pages[1], w, TRUE, TRUE, 0);
-+ } else if (((EConfig *)gui->config)->type == E_CONFIG_DRUID) {
- GladeXML *druidxml;
- GtkWidget *page;
-
-@@ -2306,7 +2352,9 @@ emae_send_page(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, struct
- emae_setup_service(emae, &gui->transport, xml);
-
- w = glade_xml_get_widget(xml, item->label);
-- if (((EConfig *)gui->config)->type == E_CONFIG_DRUID) {
-+ if (emae->type == EMAE_PAGES) {
-+ gtk_box_pack_start (emae->pages[2], w, TRUE, TRUE, 0);
-+ } else if (((EConfig *)gui->config)->type == E_CONFIG_DRUID) {
- GladeXML *druidxml;
- GtkWidget *page;
-
-@@ -2321,7 +2369,7 @@ emae_send_page(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, struct
- gtk_box_pack_start((GtkBox*)((GnomeDruidPageStandard *)page)->vbox, w, TRUE, TRUE, 0);
- w = page;
- g_object_unref(druidxml);
-- gnome_druid_append_page((GnomeDruid *)parent, (GnomeDruidPage *)page);
-+ gnome_druid_append_page((GnomeDruid *)parent, (GnomeDruidPage *)page);
- } else {
- gtk_notebook_append_page((GtkNotebook *)parent, w, gtk_label_new(_("Sending Email")));
- }
-@@ -2542,6 +2590,10 @@ emae_widget_druid_glade(EConfig *ec, EConfigItem *item, struct _GtkWidget *paren
- GladeXML *druidxml;
- GtkWidget *w;
- char *gladefile;
-+ EMAccountEditor *emae = (EMAccountEditor *)data;
-+
-+ if (emae->type == EMAE_PAGES)
-+ return NULL;
-
- gladefile = g_build_filename (EVOLUTION_GLADEDIR,
- "mail-config.glade",
-@@ -2631,10 +2683,12 @@ emae_service_complete(EMAccountEditor *emae, EMAccountEditorService *service)
- if (uri == NULL || (url = camel_url_new(uri, NULL)) == NULL)
- return FALSE;
-
-- if (CAMEL_PROVIDER_NEEDS(service->provider, CAMEL_URL_PART_HOST)
-- && (url->host == NULL || url->host[0] == 0))
-- ok = FALSE;
--
-+ if (CAMEL_PROVIDER_NEEDS(service->provider, CAMEL_URL_PART_HOST)) {
-+ if (url->host == NULL || url->host[0] == 0)
-+ ok = FALSE;
-+ else
-+ gtk_entry_set_text(service->hostname, url->host);
-+ }
- /* We only need the user if the service needs auth as well, i think */
- if (ok
- && (service->needs_auth == NULL
-@@ -2654,6 +2708,37 @@ emae_service_complete(EMAccountEditor *emae, EMAccountEditorService *service)
- return ok;
- }
-
-+enum {
-+ GMAIL = 0,
-+ YAHOO,
-+ AOL
-+};
-+struct _server_prefill {
-+ char *key;
-+ char *recv;
-+ char *send;
-+ char *proto;
-+ char *ssl;
-+} mail_servers [] = {
-+ {"gmail", "imap.gmail.com", "smtp.gmail.com", "imap", "always"},
-+ {"yahoo", "pop3.yahoo.com", "smtp.yahoo.com", "pop", "never"},
-+ {"aol", "imap.aol.com", "smtp.aol.com", "pop", "never"},
-+ {"msn", "pop3.email.msn.com", "smtp.email.msn.com", "pop", "never"}
-+};
++ gtk_label_set_markup (header->priv->action_label, g_object_get_data (header->priv->action_label, "hide"));
+
-+static int
-+check_servers (char *server)
-+{
-+ int len = G_N_ELEMENTS(mail_servers), i;
-+
-+ for (i=0; i<len; i++) {
-+ if (strstr(server, mail_servers[i].key) != NULL)
-+ return i;
-+ }
-+
-+ return -1;
-+}
-+
- static gboolean
- emae_check_complete(EConfig *ec, const char *pageid, void *data)
- {
-@@ -2661,6 +2746,7 @@ emae_check_complete(EConfig *ec, const char *pageid, void *data)
- int ok = TRUE;
- const char *tmp;
- EAccount *ea;
-+ gboolean refresh = FALSE;
-
- /* We use the page-check of various pages to 'prepare' or
- pre-load their values, only in the druid */
-@@ -2684,6 +2770,9 @@ emae_check_complete(EConfig *ec, const char *pageid, void *data)
- } else if (!strcmp(pageid, "10.receive")) {
- if (!emae->priv->receive_set) {
- char *user, *at;
-+ int index;
-+ char *uri = e_account_get_string(emae->account, E_ACCOUNT_SOURCE_URL);
-+ CamelURL *url;
-
- emae->priv->receive_set = 1;
- tmp = e_account_get_string(emae->account, E_ACCOUNT_ID_ADDRESS);
-@@ -2691,9 +2780,58 @@ emae_check_complete(EConfig *ec, const char *pageid, void *data)
- user = g_alloca(at-tmp+1);
- memcpy(user, tmp, at-tmp);
- user[at-tmp] = 0;
-+ at++;
-+
-+ index = check_servers(at);
- gtk_entry_set_text(emae->priv->source.username, user);
- gtk_entry_set_text(emae->priv->transport.username, user);
-+ if (uri && (url = camel_url_new(uri, NULL)) != NULL) {
-+ refresh = TRUE;
-+ camel_url_set_protocol(url, mail_servers[index].proto);
-+ camel_url_set_param(url, "use_ssl", mail_servers[index].ssl);
-+ camel_url_set_host (url, mail_servers[index].recv);
-+ camel_url_set_user (url, user);
-+ gtk_entry_set_text(emae->priv->source.hostname, mail_servers[index].recv);
-+ gtk_entry_set_text(emae->priv->transport.hostname, mail_servers[index].send);
-+ uri = camel_url_to_string(url, 0);
-+ e_account_set_string(emae->account, E_ACCOUNT_SOURCE_URL, uri);
-+
-+ g_free(uri);
-+ camel_url_free(url);
-+ } else {
-+ g_warning("buz1\n");
-+ }
-+
- }
-+ } else if (!strcmp(pageid, "30.send")) {
-+ CamelURL *url;
-+ char *at, *user;
-+ int index;
-+ char *uri = e_account_get_string(emae->account, E_ACCOUNT_TRANSPORT_URL);
-+
-+ tmp = e_account_get_string(emae->account, E_ACCOUNT_ID_ADDRESS);
-+ at = strchr(tmp, '@');
-+ user = g_alloca(at-tmp+1);
-+ memcpy(user, tmp, at-tmp);
-+ user[at-tmp] = 0;
-+ at++;
-+
-+ index = check_servers(at);
-+ if (uri && (url = camel_url_new(uri, NULL)) != NULL) {
-+ refresh = TRUE;
-+ camel_url_set_protocol (url, "smtp");
-+ camel_url_set_param(url, "use_ssl", mail_servers[index].ssl);
-+ camel_url_set_host (url, mail_servers[index].send);
-+ camel_url_set_user (url, user);
-+ uri = camel_url_to_string(url, 0);
-+ e_account_set_string(emae->account, E_ACCOUNT_TRANSPORT_URL, uri);
-+ g_free(uri);
-+ camel_url_free(url);
-+ } else {
-+ g_warning("buz2\n");
-+ }
-+
-+
- } else if (!strcmp(pageid, "20.receive_options")) {
- if (emae->priv->source.provider
- && emae->priv->extra_provider != emae->priv->source.provider) {
-@@ -2740,12 +2878,18 @@ emae_check_complete(EConfig *ec, const char *pageid, void *data)
- }
-
- if (ok && (pageid == NULL || !strcmp(pageid, "10.receive"))) {
-+ if (emae->type == EMAE_PAGES && refresh) {
-+ emae_refresh_providers(emae, &emae->priv->source);
-+ }
- ok = emae_service_complete(emae, &emae->priv->source);
- if (!ok)
- d(printf("receive page incomplete\n"));
- }
-
- if (ok && (pageid == NULL || !strcmp(pageid, "30.send"))) {
-+ if (emae->type == EMAE_PAGES && refresh) {
-+ emae_refresh_providers(emae, &emae->priv->transport);
-+ }
- ok = emae_service_complete(emae, &emae->priv->transport);
- if (!ok)
- d(printf("send page incomplete\n"));
-@@ -2763,6 +2907,12 @@ emae_check_complete(EConfig *ec, const char *pageid, void *data)
- return ok;
- }
-
-+void
-+em_account_editor_check (EMAccountEditor *emae, const char *page)
-+{
-+ emae_check_complete(emae->config, page, emae);
-+}
-+
- /* HACK: FIXME: the component should listen to the account object directly */
- static void
- add_new_store (char *uri, CamelStore *store, void *user_data)
-@@ -2809,6 +2959,12 @@ emae_commit(EConfig *ec, GSList *items, void *data)
- e_account_list_save(accounts);
++ e_composer_header_set_visible (header, show);
}
-+void
-+em_account_editor_commit (EMAccountEditor *emae)
-+{
-+ emae_commit (emae->config, NULL, emae);
-+}
+ static void
+@@ -113,8 +119,14 @@ composer_header_constructor (GType type,
+ tmp = gtk_image_new_from_stock("gtk-add", GTK_ICON_SIZE_BUTTON);
+ gtk_box_pack_start(box, tmp, FALSE, FALSE, 3);
+ tmp = gtk_label_new (NULL);
+- str = g_strdup_printf ("<span foreground='blue' underline='single' underline_color='blue' >%s</span>", header->priv->addaction_text);
++ str = g_strdup_printf ("<span foreground='blue' underline='single' underline_color='blue' >%s %s</span>", _("Show"), header->priv->addaction_text);
++ g_object_set_data (tmp, "show", str);
+ gtk_label_set_markup(tmp, str);
+
- static void
- emae_editor_destroyed(GtkWidget *dialog, EMAccountEditor *emae)
- {
-@@ -2928,7 +3084,11 @@ em_account_editor_construct(EMAccountEditor *emae, EAccount *account, em_account
-
- target = em_config_target_new_account(ec, emae->account);
- e_config_set_target((EConfig *)ec, (EConfigTarget *)target);
-- emae->editor = e_config_create_window((EConfig *)ec, NULL, type==EMAE_NOTEBOOK?_("Account Editor"):_("Evolution Account Assistant"));
-
-- g_signal_connect(emae->editor, "destroy", G_CALLBACK(emae_editor_destroyed), emae);
-+ if (type != EMAE_PAGES) {
-+ emae->editor = e_config_create_window((EConfig *)ec, NULL, type==EMAE_NOTEBOOK?_("Account Editor"):_("Evolution Account Assistant"));
-+ g_signal_connect(emae->editor, "destroy", G_CALLBACK(emae_editor_destroyed), emae);
-+ } else {
-+ e_config_create_widget((EConfig *)ec);
-+ }
- }
-diff --git a/mail/em-account-editor.h b/mail/em-account-editor.h
-index 9a5b09a..42421c2 100644
---- a/mail/em-account-editor.h
-+++ b/mail/em-account-editor.h
-@@ -39,6 +39,7 @@ typedef struct _EMAccountEditorClass EMAccountEditorClass;
- typedef enum {
- EMAE_NOTEBOOK,
- EMAE_DRUID,
-+ EMAE_PAGES,
- } em_account_editor_t;
-
- struct _EMAccountEditor {
-@@ -54,6 +55,8 @@ struct _EMAccountEditor {
- struct _EAccount *account; /* working account, must instant apply to this */
- struct _EAccount *original; /* original account, not changed unless commit is invoked */
-
-+ GtkWidget **pages; /* Pages for Anjal's page type editor */
++ str = g_strdup_printf ("<span foreground='blue' underline='single' underline_color='blue' >%s %s</span>", _("Hide"), header->priv->addaction_text);
++ g_object_set_data (tmp, "hide", str);
+
- guint do_signature:1; /* allow editing signature */
- };
-
-@@ -64,6 +67,9 @@ struct _EMAccountEditorClass {
- GType em_account_editor_get_type(void);
-
- EMAccountEditor *em_account_editor_new(struct _EAccount *account, em_account_editor_t type, char *id);
-+EMAccountEditor *em_account_editor_new_for_pages(struct _EAccount *account, em_account_editor_t type, char *id, struct _GtkWidget **pages);
-+void em_account_editor_commit (EMAccountEditor *emae);
-+void em_account_editor_check (EMAccountEditor *emae, const char *page);
-
- gboolean em_account_editor_save (EMAccountEditor *gui);
- void em_account_editor_destroy (EMAccountEditor *gui);
++ header->priv->action_label = tmp;
+ gtk_box_pack_start(box, tmp, FALSE, FALSE, 3);
+ gtk_container_add(header->action_widget, box);
+ gtk_widget_show_all(header->action_widget);
diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c
-index 38f35d1..a6c8c10 100644
+index 4985fc3..cf4b426 100644
--- a/mail/em-composer-utils.c
+++ b/mail/em-composer-utils.c
-@@ -653,13 +653,16 @@ em_composer_utils_setup_callbacks (EMsgComposer *composer,
- /* Composing messages... */
-
- static EMsgComposer *
--create_new_composer (const char *subject, const char *fromuri, gboolean use_default_callbacks)
-+create_new_composer (const char *subject, const char *fromuri, gboolean use_default_callbacks, gboolean lite)
- {
- EMsgComposer *composer;
- EComposerHeaderTable *table;
- EAccount *account = NULL;
-
-- composer = e_msg_composer_new ();
-+ if (lite)
-+ composer = e_msg_composer_lite_new ();
-+ else
-+ composer = e_msg_composer_new ();
- if (composer == NULL)
- return NULL;
-
-@@ -687,7 +690,7 @@ em_utils_compose_new_message (const char *fromuri)
- {
- GtkWidget *composer;
-
-- composer = (GtkWidget *) create_new_composer ("", fromuri, TRUE);
-+ composer = (GtkWidget *) create_new_composer ("", fromuri, TRUE, FALSE);
- if (composer == NULL)
- return;
-
-@@ -697,6 +700,26 @@ em_utils_compose_new_message (const char *fromuri)
- }
-
- /**
-+ * em_utils_compose_lite_new_message:
-+ *
-+ * Opens a new composer window as a child window of @parent's toplevel
-+ * window.
-+ **/
-+struct _EMsgComposer *
-+em_utils_compose_lite_new_message (const char *fromuri)
-+{
-+ GtkWidget *composer;
-+
-+ composer = (GtkWidget *) create_new_composer ("", fromuri, TRUE, TRUE);
-+ if (composer == NULL)
-+ return;
-+
-+ composer_set_no_change (E_MSG_COMPOSER (composer), TRUE, TRUE);
-+
-+ return composer;
-+}
-+
-+/**
- * em_utils_compose_new_message_with_mailto:
- * @url: mailto url
- *
-@@ -1073,7 +1096,7 @@ forward_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages, Cam
- {
- EMsgComposer *composer;
-
-- composer = create_new_composer (subject, fromuri, TRUE);
-+ composer = create_new_composer (subject, fromuri, TRUE, FALSE);
- if (composer == NULL)
- return;
-
-@@ -1152,7 +1175,7 @@ forward_non_attached (CamelFolder *folder, GPtrArray *uids, GPtrArray *messages,
- text = em_utils_message_to_html (message, _("-------- Forwarded Message --------"), flags, &len, NULL, NULL);
-
- if (text) {
-- composer = create_new_composer (subject, fromuri, !uids || !uids->pdata [i]);
-+ composer = create_new_composer (subject, fromuri, !uids || !uids->pdata [i], FALSE);
-
- if (composer) {
- if (CAMEL_IS_MULTIPART(camel_medium_get_content_object((CamelMedium *)message)))
-@@ -1713,7 +1736,7 @@ generate_account_hash (void)
- return account_hash;
- }
-
--static EDestination **
-+EDestination **
- em_utils_camel_address_to_destination (CamelInternetAddress *iaddr)
- {
- EDestination *dest, **destv;
-@@ -1915,6 +1938,12 @@ get_reply_sender (CamelMimeMessage *message, CamelInternetAddress *to, CamelNNTP
- }
- }
-
-+void
-+em_utils_get_reply_sender (CamelMimeMessage *message, CamelInternetAddress *to, CamelNNTPAddress *postto)
-+{
-+ get_reply_sender (message, to, postto);
-+}
-+
- static gboolean
- get_reply_list (CamelMimeMessage *message, CamelInternetAddress *to)
- {
-@@ -2028,6 +2057,13 @@ get_reply_all (CamelMimeMessage *message, CamelInternetAddress *to, CamelInterne
- g_hash_table_destroy (rcpt_hash);
- }
-
-+void
-+em_utils_get_reply_all (CamelMimeMessage *message, CamelInternetAddress *to, CamelInternetAddress *cc, CamelNNTPAddress *postto)
-+{
-+ get_reply_all (message, to, cc, postto);
-+}
-+
-+
- enum {
- ATTRIB_UNKNOWN,
- ATTRIB_CUSTOM,
-@@ -2285,6 +2321,21 @@ struct _reply_data {
- int mode;
- };
-
-+char *
-+em_utils_construct_composer_text (CamelMimeMessage *message, EMFormat *source)
-+{
-+ char *text, *credits;
-+ ssize_t len = 0;
-+ gboolean start_bottom = 0;
-+
-+ credits = attribution_format (ATTRIBUTION, message);
-+ text = em_utils_message_to_html (message, credits, EM_FORMAT_QUOTE_CITE, &len, source, start_bottom ? "<BR>" : NULL);
-+
-+ g_free (credits);
-+ return text;
-+}
-+
-+
- static void
- reply_to_message(CamelFolder *folder, const char *uid, CamelMimeMessage *message, void *user_data)
- {
-@@ -2315,7 +2366,7 @@ reply_to_message(CamelFolder *folder, const char *uid, CamelMimeMessage *message
- * may be supplied in order to update the message flags once it has
- * been replied to.
+@@ -725,7 +725,7 @@ em_utils_compose_lite_new_message (const char *fromuri)
+ * window. If @url is non-NULL, the composer fields will be filled in
+ * according to the values in the mailto url.
**/
-void
+struct _EMsgComposer *
- em_utils_reply_to_message(CamelFolder *folder, const char *uid, CamelMimeMessage *message, int mode, EMFormat *source)
+ em_utils_compose_new_message_with_mailto (const char *url, const char *fromuri)
{
- CamelInternetAddress *to, *cc;
-@@ -2393,7 +2444,10 @@ em_utils_reply_to_message(CamelFolder *folder, const char *uid, CamelMimeMessage
+ EMsgComposer *composer;
+@@ -746,8 +746,12 @@ em_utils_compose_new_message_with_mailto (const char *url, const char *fromuri)
- composer_set_no_change (composer, TRUE, FALSE);
+ composer_set_no_change (composer, TRUE);
-- gtk_widget_show (GTK_WIDGET (composer));
-+ if (!e_msg_composer_get_lite())
-+ gtk_widget_show (GTK_WIDGET (composer));
+- gtk_widget_show ((GtkWidget *) composer);
+- gdk_window_raise (((GtkWidget *) composer)->window);
++ if (!e_msg_composer_get_lite()) {
++ gtk_widget_show ((GtkWidget *) composer);
++ gdk_window_raise (((GtkWidget *) composer)->window);
++ }
+
+ return composer;
}
- /* Posting replies... */
+ /**
diff --git a/mail/em-composer-utils.h b/mail/em-composer-utils.h
-index d17a98c..857d74c 100644
+index 857d74c..678b981 100644
--- a/mail/em-composer-utils.h
+++ b/mail/em-composer-utils.h
-@@ -34,9 +34,12 @@ extern "C" {
- struct _CamelFolder;
- struct _CamelMimeMessage;
- struct _CamelException;
-+struct _CamelInternetAddress;
-+struct _CamelNNTPAddress;
- struct _EMsgComposer;
- struct _EMFormat;
- struct _EAccount;
-+struct _EDestination;
-
- void em_composer_utils_setup_callbacks (struct _EMsgComposer *composer, struct _CamelFolder *folder, const char *uid,
- guint32 flags, guint32 set, struct _CamelFolder *drafts, const char *drafts_uid);
-@@ -47,6 +50,7 @@ void em_utils_composer_send_cb(struct _EMsgComposer *composer, gpointer user_dat
- void em_utils_composer_save_draft_cb(struct _EMsgComposer *composer, gpointer user_data);
-
- void em_utils_compose_new_message (const char *fromuri);
-+struct _EMsgComposer * em_utils_compose_lite_new_message (const char *fromuri);
+@@ -53,7 +53,7 @@ void em_utils_compose_new_message (const char *fromuri);
+ struct _EMsgComposer * em_utils_compose_lite_new_message (const char *fromuri);
/* FIXME: mailto? url? should make up its mind what its called. imho use 'uri' */
- void em_utils_compose_new_message_with_mailto (const char *url, const char *fromuri);
-@@ -77,9 +81,15 @@ enum {
- REPLY_MODE_LIST
- };
-
--void em_utils_reply_to_message (struct _CamelFolder *, const char *uid, struct _CamelMimeMessage *message, int mode, struct _EMFormat *source);
-+char *em_utils_construct_composer_text (struct _CamelMimeMessage *message, struct _EMFormat *source);
-+void em_utils_get_reply_sender (struct _CamelMimeMessage *message, struct _CamelInternetAddress *to, struct _CamelNNTPAddress *postto);
-+void em_utils_get_reply_all (struct _CamelMimeMessage *message, struct _CamelInternetAddress *to, struct _CamelInternetAddress *cc, struct _CamelNNTPAddress *postto);
-+
-+
-+struct _EMsgComposer * em_utils_reply_to_message (struct _CamelFolder *, const char *uid, struct _CamelMimeMessage *message, int mode, struct _EMFormat *source);
-
- void em_utils_post_reply_to_message_by_uid (struct _CamelFolder *folder, const char *uid);
-+struct _EDestination ** em_utils_camel_address_to_destination (struct _CamelInternetAddress *iaddr);
-
- #ifdef __cplusplus
- }
-diff --git a/mail/em-folder-tree.c b/mail/em-folder-tree.c
-index e7063e9..de40377 100644
---- a/mail/em-folder-tree.c
-+++ b/mail/em-folder-tree.c
-@@ -109,6 +109,7 @@ struct _EMFolderTreePrivate {
- guint loaded_row_id;
-
- GtkTreeRowReference *drag_row;
-+ gboolean skip_double_click;
- };
-
- enum {
-@@ -436,6 +437,7 @@ em_folder_tree_init (EMFolderTree *emft)
- priv->treeview = NULL;
- priv->model = NULL;
- priv->drag_row = NULL;
-+ priv->skip_double_click = FALSE;
-
- emft->priv = priv;
- }
-@@ -2291,6 +2293,9 @@ emft_tree_button_press (GtkTreeView *treeview, GdkEventButton *event, EMFolderTr
- gtk_tree_view_set_cursor (treeview, tree_path, NULL, FALSE);
-
- if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) {
-+ if (emft->priv->skip_double_click) {
-+ return FALSE;
-+ }
- emft_tree_row_activated (treeview, tree_path, NULL, emft);
- gtk_tree_path_free (tree_path);
- return TRUE;
-@@ -2643,3 +2648,15 @@ emft_queue_save_state (EMFolderTree *emft)
-
- priv->save_state_id = g_timeout_add_seconds (1, (GSourceFunc) emft_save_state, emft);
- }
-+
-+GtkWidget *
-+em_folder_tree_get_tree_view (EMFolderTree *emft)
-+{
-+ return emft->priv->treeview;
-+}
-+
-+void
-+em_folder_tree_set_skip_double_click (EMFolderTree *emft, gboolean skip)
-+{
-+ emft->priv->skip_double_click = skip;
-+}
-diff --git a/mail/em-folder-tree.h b/mail/em-folder-tree.h
-index e89be47..b02a4d8 100644
---- a/mail/em-folder-tree.h
-+++ b/mail/em-folder-tree.h
-@@ -94,6 +94,8 @@ EMFolderTreeModel *em_folder_tree_get_model (EMFolderTree *emft);
- EMFolderTreeModelStoreInfo *em_folder_tree_get_model_storeinfo (EMFolderTree *emft, CamelStore *store);
-
- gboolean em_folder_tree_create_folder (EMFolderTree *emft, const char *full_name, const char *uri);
-+GtkWidget * em_folder_tree_get_tree_view (EMFolderTree *emft);
-+void em_folder_tree_set_skip_double_click (EMFolderTree *emft, gboolean skip);
-
- #ifdef __cplusplus
- }
-diff --git a/mail/mail-component.c b/mail/mail-component.c
-index 556715d..7d7547c 100644
---- a/mail/mail-component.c
-+++ b/mail/mail-component.c
-@@ -106,7 +106,7 @@ static void view_changed_timeout_remove (EComponentView *component_view);
-
- #define PARENT_TYPE evolution_component_get_type ()
- static BonoboObjectClass *parent_class = NULL;
--
-+const char *x_mailer = "Evolution " VERSION SUB_VERSION " " VERSION_COMMENT;
- #define OFFLINE 0
- #define ONLINE 1
-
-diff --git a/mail/mail-ops.c b/mail/mail-ops.c
-index a8aa14d..6ab48a0 100644
---- a/mail/mail-ops.c
-+++ b/mail/mail-ops.c
-@@ -73,6 +73,8 @@
- #define w(x)
- #define d(x)
-
-+extern const char *x_mailer;
-+
- /* used for both just filtering a folder + uid's, and for filtering a whole folder */
- /* used both for fetching mail, and for filtering mail */
- struct _filter_mail_msg {
-@@ -462,7 +464,7 @@ mail_send_message(CamelFolder *queue, const char *uid, const char *destination,
- if (!message)
- return;
-
-- camel_medium_set_header (CAMEL_MEDIUM (message), "X-Mailer", "Evolution " VERSION SUB_VERSION " " VERSION_COMMENT);
-+ camel_medium_set_header (CAMEL_MEDIUM (message), "X-Mailer", x_mailer);
-
- err = g_string_new("");
- xev = mail_tool_remove_xevolution_headers (message);
-@@ -919,8 +921,7 @@ mail_append_mail (CamelFolder *folder, CamelMimeMessage *message, CamelMessageIn
- g_return_if_fail (CAMEL_IS_MIME_MESSAGE (message));
-
- if (!camel_medium_get_header (CAMEL_MEDIUM (message), "X-Mailer"))
-- camel_medium_set_header (CAMEL_MEDIUM (message), "X-Mailer",
-- "Evolution " VERSION SUB_VERSION " " VERSION_COMMENT);
-+ camel_medium_set_header (CAMEL_MEDIUM (message), "X-Mailer", x_mailer);
-
- m = mail_msg_new (&append_mail_info);
- m->folder = folder;
-@@ -1879,7 +1880,7 @@ typedef void (*get_done)(CamelFolder *folder, const char *uid, CamelMimeMessage
- static void
- get_messagex_done (struct _get_message_msg *m)
- {
-- if (m->done) {
-+ if (m->done && !camel_operation_cancel_check (m->cancel)) {
- get_done done = (get_done)m->done;
- done(m->folder, m->uid, m->message, m->data, &m->base.ex);
- }
-@@ -1895,7 +1896,7 @@ static MailMsgInfo get_messagex_info = {
-
- /* This is temporary, to avoid having to rewrite everything that uses
- mail_get_message; it adds an exception argument to the callback */
--void
-+CamelOperation *
- mail_get_messagex(CamelFolder *folder, const char *uid, void (*done) (CamelFolder *folder, const char *uid, CamelMimeMessage *msg, void *data, CamelException *),
- void *data, MailMsgDispatchFunc dispatch)
- {
-@@ -1910,6 +1911,8 @@ mail_get_messagex(CamelFolder *folder, const char *uid, void (*done) (CamelFolde
- m->cancel = camel_operation_new(NULL, NULL);
-
- dispatch (m);
-+
-+ return m->cancel;
- }
-
- /* ********************************************************************** */
-diff --git a/mail/mail-ops.h b/mail/mail-ops.h
-index e615a91..9ee3899 100644
---- a/mail/mail-ops.h
-+++ b/mail/mail-ops.h
-@@ -57,7 +57,7 @@ void mail_get_message (CamelFolder *folder, const char *uid,
- void *data,
- MailMsgDispatchFunc dispatch);
-
--void
-+CamelOperation *
- mail_get_messagex(CamelFolder *folder, const char *uid,
- void (*done) (CamelFolder *folder, const char *uid, CamelMimeMessage *msg, void *data, CamelException *),
- void *data, MailMsgDispatchFunc dispatch);
-diff --git a/widgets/misc/Makefile.am b/widgets/misc/Makefile.am
-index 124c736..b0486ab 100644
---- a/widgets/misc/Makefile.am
-+++ b/widgets/misc/Makefile.am
-@@ -19,6 +19,7 @@ privsolib_LTLIBRARIES = \
- libefilterbar.la
-
- widgetsincludedir = $(privincludedir)/misc
-+filterbarincludedir = $(privincludedir)/misc
-
- if ENABLE_PILOT_CONDUITS
- pilot_sources = e-pilot-settings.c
-@@ -155,9 +156,11 @@ libemiscwidgets_la_LIBADD = $(top_builddir)/e-util/libeutil.la \
- $(EVOLUTON_MAIL_LIBS) \
- $(ICONV_LIBS)
-
-+filterbarinclude_HEADERS = e-filter-bar.h
-+
- libefilterbar_la_SOURCES = \
- e-filter-bar.c \
-- e-filter-bar.h
-+ $(filterbarinclude_HEADERS)
-
- libefilterbar_la_LDFLAGS = $(NO_UNDEFINED)
-
-diff --git a/widgets/misc/e-filter-bar.c b/widgets/misc/e-filter-bar.c
-index a527569..6fb2924 100644
---- a/widgets/misc/e-filter-bar.c
-+++ b/widgets/misc/e-filter-bar.c
-@@ -593,7 +593,7 @@ get_property (GObject *object, guint property_id, GValue *value, GParamSpec *psp
- /* empty search text means searching turned off */
- if (efb->current_query && text && *text) {
- GString *out = g_string_new ("");
--
-+ printf("text %s\n", text);
- filter_rule_build_code (efb->current_query, out);
- g_value_take_string (value, out->str);
- g_string_free (out, FALSE);
-@@ -966,12 +966,28 @@ e_filter_bar_new (RuleContext *context,
- EFilterBar *bar;
-
- bar = g_object_new (e_filter_bar_get_type (), NULL);
-+ ((ESearchBar *)bar)->lite = FALSE;
-
- e_filter_bar_new_construct (context, systemrules, userrules, config, data, bar);
-
- return bar;
- }
-
-+EFilterBar *
-+e_filter_bar_lite_new (RuleContext *context,
-+ const char *systemrules,
-+ const char *userrules,
-+ EFilterBarConfigRule config,
-+ void *data)
-+{
-+ EFilterBar *bar;
-+
-+ bar = g_object_new (e_filter_bar_get_type (), NULL);
-+ ((ESearchBar *)bar)->lite = TRUE;
-+ e_filter_bar_new_construct (context, systemrules, userrules, config, data, bar);
-+
-+ return bar;
-+}
-
- void
- e_filter_bar_new_construct (RuleContext *context,
-diff --git a/widgets/misc/e-filter-bar.h b/widgets/misc/e-filter-bar.h
-index e1d4fc7..ad2afbe 100644
---- a/widgets/misc/e-filter-bar.h
-+++ b/widgets/misc/e-filter-bar.h
-@@ -126,6 +126,12 @@ EFilterBar *e_filter_bar_new (RuleContext *context,
- const char *userrules,
- EFilterBarConfigRule config,
- void *data);
-+EFilterBar *e_filter_bar_lite_new (RuleContext *context,
-+ const char *systemrules,
-+ const char *userrules,
-+ EFilterBarConfigRule config,
-+ void *data);
-+
- void
- e_filter_bar_new_construct (RuleContext *context,
- const char *systemrules,
-diff --git a/widgets/misc/e-search-bar.c b/widgets/misc/e-search-bar.c
-index 30cba7f..824378c 100644
---- a/widgets/misc/e-search-bar.c
-+++ b/widgets/misc/e-search-bar.c
-@@ -101,7 +101,8 @@ clear_button_state_changed (GtkWidget *clear_button, GtkStateType state, ESearch
- {
- g_return_if_fail (clear_button != NULL && search_bar != NULL);
-
-- update_clear_menuitem_sensitive (search_bar);
-+ if (!search_bar->lite)
-+ update_clear_menuitem_sensitive (search_bar);
- }
-
- static char *
-@@ -156,7 +157,8 @@ static void
- emit_query_changed (ESearchBar *esb)
- {
- g_signal_emit (esb, esb_signals [QUERY_CHANGED], 0);
-- update_clear_menuitem_sensitive (esb);
-+ if (!esb->lite)
-+ update_clear_menuitem_sensitive (esb);
- }
-
- static void
-@@ -169,8 +171,10 @@ emit_search_activated(ESearchBar *esb)
-
- g_signal_emit (esb, esb_signals [SEARCH_ACTIVATED], 0);
-
-- set_find_now_sensitive (esb, FALSE);
-- update_clear_menuitem_sensitive (esb);
-+ if (!esb->lite) {
-+ set_find_now_sensitive (esb, FALSE);
-+ update_clear_menuitem_sensitive (esb);
-+ }
- }
-
- static void
-@@ -368,12 +372,14 @@ entry_activated_cb (GtkWidget *widget,
- gtk_widget_modify_base (esb->entry, GTK_STATE_NORMAL, &(style->base[GTK_STATE_SELECTED]));
- gtk_widget_modify_text (esb->entry, GTK_STATE_NORMAL, &(style->text[GTK_STATE_SELECTED]));
- gtk_widget_modify_base (esb->icon_entry, GTK_STATE_NORMAL, &(style->base[GTK_STATE_SELECTED]));
-- gtk_widget_modify_base (esb->viewoption, GTK_STATE_NORMAL, &(style->base[GTK_STATE_SELECTED]));
-+ if (!esb->lite)
-+ gtk_widget_modify_base (esb->viewoption, GTK_STATE_NORMAL, &(style->base[GTK_STATE_SELECTED]));
- } else {
- gtk_widget_modify_base (esb->entry, GTK_STATE_NORMAL, NULL);
- gtk_widget_modify_text (esb->entry, GTK_STATE_NORMAL, NULL);
- gtk_widget_modify_base (esb->icon_entry, GTK_STATE_NORMAL, NULL);
-- gtk_widget_set_sensitive (esb->clear_button, FALSE);
-+ if (!esb->lite)
-+ gtk_widget_set_sensitive (esb->clear_button, FALSE);
- }
-
- emit_search_activated (esb);
-@@ -665,7 +671,7 @@ set_menu (ESearchBar *esb,
- esb->menu_items = g_slist_append (esb->menu_items, new_item);
- }
-
-- if (esb->ui_component != NULL)
-+ if (!esb->lite && esb->ui_component != NULL)
- update_bonobo_menus (esb);
- }
-
-@@ -818,7 +824,7 @@ impl_dispose (GObject *object)
- /* These three we do need to unref, because we explicitly hold
- references to them. */
-
-- if (esb->ui_component != NULL) {
-+ if (!esb->lite && esb->ui_component != NULL) {
- bonobo_object_unref (BONOBO_OBJECT (esb->ui_component));
- esb->ui_component = NULL;
- }
-@@ -989,60 +995,76 @@ e_search_bar_construct (ESearchBar *search_bar,
- g_signal_connect (G_OBJECT (search_bar->option_button), "button-press-event", G_CALLBACK(option_button_clicked_cb), search_bar);
- e_icon_entry_pack_widget (E_ICON_ENTRY (search_bar->icon_entry), search_bar->option_button, TRUE);
-
-- gtk_box_pack_start (GTK_BOX(search_bar->entry_box), search_bar->icon_entry, FALSE, FALSE, 0);
-+ if (!search_bar->lite)
-+ gtk_box_pack_start (GTK_BOX(search_bar->entry_box), search_bar->icon_entry, FALSE, FALSE, 0);
-+ else
-+ gtk_box_pack_start (GTK_BOX(search_bar->entry_box), search_bar->icon_entry, TRUE, TRUE, 0);
-+
-
- gtk_widget_show_all (search_bar->entry_box);
- gtk_widget_set_sensitive (search_bar->clear_button, FALSE);
-
-- /* Current View filter */
-- search_bar->viewoption_box = gtk_hbox_new (0, FALSE);
-+ if (!search_bar->lite) {
-+ /* Current View filter */
-+ search_bar->viewoption_box = gtk_hbox_new (0, FALSE);
-
-- /* To Translators: The "Show: " label is followed by the Quick Search Dropdown Menu where you can choose
-- to display "All Messages", "Unread Messages", "Message with 'Important' Label" and so on... */
-- label = gtk_label_new_with_mnemonic (_("Sho_w: "));
-- gtk_widget_show (label);
-- gtk_box_pack_start (GTK_BOX(search_bar->viewoption_box), label, FALSE, FALSE, 0);
-+ /* To Translators: The "Show: " label is followed by the Quick Search Dropdown Menu where you can choose
-+ to display "All Messages", "Unread Messages", "Message with 'Important' Label" and so on... */
-+ label = gtk_label_new_with_mnemonic (_("Sho_w: "));
-+ gtk_widget_show (label);
-+ gtk_box_pack_start (GTK_BOX(search_bar->viewoption_box), label, FALSE, FALSE, 0);
-
-- search_bar->viewoption = gtk_option_menu_new ();
-- gtk_label_set_mnemonic_widget ((GtkLabel *)label, search_bar->viewoption);
-- gtk_box_pack_start (GTK_BOX(search_bar->viewoption_box), search_bar->viewoption, FALSE, TRUE, 0);
-- gtk_widget_show_all (search_bar->viewoption_box);
-- gtk_box_pack_start (GTK_BOX(search_bar), search_bar->viewoption_box, FALSE, FALSE, 0);
-+ search_bar->viewoption = gtk_option_menu_new ();
-+ gtk_label_set_mnemonic_widget ((GtkLabel *)label, search_bar->viewoption);
-+ gtk_box_pack_start (GTK_BOX(search_bar->viewoption_box), search_bar->viewoption, FALSE, TRUE, 0);
-+ gtk_widget_show_all (search_bar->viewoption_box);
-+ gtk_box_pack_start (GTK_BOX(search_bar), search_bar->viewoption_box, FALSE, FALSE, 0);
-
-- hbox = gtk_hbox_new (FALSE, 0);
-- gtk_box_pack_start (GTK_BOX(search_bar), hbox, FALSE, FALSE, 0);
-+ hbox = gtk_hbox_new (FALSE, 0);
-+ gtk_box_pack_start (GTK_BOX(search_bar), hbox, FALSE, FALSE, 0);
-+ }
-
- /* Search entry */
- hbox = gtk_hbox_new (FALSE, 0);
- /* To Translators: The "Show: " label is followed by the Quick Search Text input field where one enters
- the term to search for */
-- label = gtk_label_new_with_mnemonic (_("Sear_ch: "));
-- gtk_widget_show (label);
-- gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
-- gtk_box_pack_start (GTK_BOX(hbox), search_bar->entry_box, FALSE, FALSE, 0);
-+ if (!search_bar->lite) {
-+ label = gtk_label_new_with_mnemonic (_("Sear_ch: "));
-+ gtk_widget_show (label);
-+ gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
-+ gtk_box_pack_start (GTK_BOX(hbox), search_bar->entry_box, FALSE, FALSE, 0);
-+ gtk_label_set_mnemonic_widget ((GtkLabel *)label, search_bar->entry);
-+ } else {
-+ gtk_box_pack_start (GTK_BOX(hbox), search_bar->entry_box, TRUE, TRUE, 0);
-+ }
- gtk_widget_show (search_bar->entry_box);
-- gtk_label_set_mnemonic_widget ((GtkLabel *)label, search_bar->entry);
--
-- /* Search Scope Widgets */
-- search_bar->scopeoption_box = gtk_hbox_new (0, FALSE);
-- gtk_box_set_spacing (GTK_BOX (search_bar->scopeoption_box), 3);
-- /* To Translators: The " in " label is part of the Quick Search Bar, example:
-- Search: | <user's_search_term> | in | Current Folder/All Accounts/Current Account */
-- label = gtk_label_new_with_mnemonic (_(" i_n "));
-- gtk_widget_show (label);
-- gtk_box_pack_start (GTK_BOX(search_bar->scopeoption_box), label, FALSE, FALSE, 0);
+-void em_utils_compose_new_message_with_mailto (const char *url, const char *fromuri);
++struct _EMsgComposer *em_utils_compose_new_message_with_mailto (const char *url, const char *fromuri);
+ void em_utils_post_to_folder (struct _CamelFolder *folder);
+ void em_utils_post_to_url (const char *url);
+
+diff --git a/mail/searchtypes.xml b/mail/searchtypes.xml
+index 83941d8..63a52ca 100644
+--- a/mail/searchtypes.xml
++++ b/mail/searchtypes.xml
+@@ -329,7 +329,7 @@
+ </code>
+ </option>
+ </input>
+- <input type="address" name="recipient"/>
++ <input type="string" name="recipient"/>
+ </part>
+
+ <part name="subject">
+@@ -764,18 +764,29 @@
+ </partset>
+
+ <ruleset>
-
-- search_bar->scopeoption = gtk_option_menu_new ();
--/* g_signal_connect (GTK_OPTION_MENU (search_bar->scopeoption), "changed", scopeoption_changed_cb, search_bar); */
-- gtk_box_pack_start (GTK_BOX(search_bar->scopeoption_box), search_bar->scopeoption, FALSE, FALSE, 0);
-- gtk_widget_show_all (search_bar->scopeoption_box);
-- gtk_widget_hide (hbox);
-- gtk_label_set_mnemonic_widget ((GtkLabel *)label, search_bar->scopeoption);
--
-- gtk_box_pack_end (GTK_BOX(hbox), search_bar->scopeoption_box, FALSE, FALSE, 0);
-- gtk_widget_hide (search_bar->scopeoption_box);
--
-- gtk_box_pack_end (GTK_BOX(search_bar), hbox, FALSE, FALSE, 0);
-+
-+ if (!search_bar->lite) {
-+ /* Search Scope Widgets */
-+ search_bar->scopeoption_box = gtk_hbox_new (0, FALSE);
-+ gtk_box_set_spacing (GTK_BOX (search_bar->scopeoption_box), 3);
-+ /* To Translators: The " in " label is part of the Quick Search Bar, example:
-+ Search: | <user's_search_term> | in | Current Folder/All Accounts/Current Account */
-+ label = gtk_label_new_with_mnemonic (_(" i_n "));
-+ gtk_widget_show (label);
-+ gtk_box_pack_start (GTK_BOX(search_bar->scopeoption_box), label, FALSE, FALSE, 0);
-+
-+ search_bar->scopeoption = gtk_option_menu_new ();
-+ /* g_signal_connect (GTK_OPTION_MENU (search_bar->scopeoption), "changed", scopeoption_changed_cb, search_bar); */
-+ gtk_box_pack_start (GTK_BOX(search_bar->scopeoption_box), search_bar->scopeoption, FALSE, FALSE, 0);
-+ gtk_widget_show_all (search_bar->scopeoption_box);
-+ gtk_widget_hide (hbox);
-+ gtk_label_set_mnemonic_widget ((GtkLabel *)label, search_bar->scopeoption);
-+
-+ gtk_box_pack_end (GTK_BOX(hbox), search_bar->scopeoption_box, FALSE, FALSE, 0);
-+ gtk_widget_hide (search_bar->scopeoption_box);
-+
-+ }
-+ if (!search_bar->lite)
-+ gtk_box_pack_end (GTK_BOX(search_bar), hbox, FALSE, FALSE, 0);
-+ else
-+ gtk_box_pack_end (GTK_BOX(search_bar), hbox, TRUE, TRUE, 0);
-+
- gtk_widget_show (hbox);
-
- /* Set the menu */
-@@ -1056,8 +1078,8 @@ e_search_bar_construct (ESearchBar *search_bar,
- * so we can't emit here. Thus we launch a one-shot idle function that will
- * emit the changed signal, so that the proper callback will get invoked.
- */
--
-- search_bar->pending_activate = g_idle_add (idle_activate_hack, search_bar);
-+ if (!search_bar->lite)
-+ search_bar->pending_activate = g_idle_add (idle_activate_hack, search_bar);
- }
-
- void
-@@ -1268,12 +1290,31 @@ e_search_bar_new (ESearchBarItem *menu_items,
- return widget;
- }
-
-+GtkWidget *
-+e_search_bar_lite_new (ESearchBarItem *menu_items,
-+ ESearchBarItem *option_items)
-+{
-+ GtkWidget *widget;
-+
-+ g_return_val_if_fail (option_items != NULL, NULL);
-+
-+ widget = g_object_new (e_search_bar_get_type (), NULL);
-+ E_SEARCH_BAR(widget)->lite = TRUE;
-+
-+ e_search_bar_construct (E_SEARCH_BAR (widget), menu_items, option_items);
-+
-+ return widget;
-+}
-+
- void
- e_search_bar_set_ui_component (ESearchBar *search_bar,
- BonoboUIComponent *ui_component)
- {
- g_return_if_fail (E_IS_SEARCH_BAR (search_bar));
-
-+ if (search_bar->lite)
-+ return;
-+
- if (search_bar->ui_component != NULL) {
- remove_bonobo_menus (search_bar);
- bonobo_object_unref (BONOBO_OBJECT (search_bar->ui_component));
-@@ -1293,6 +1334,9 @@ e_search_bar_set_menu_sensitive (ESearchBar *search_bar, int id, gboolean state)
- char *verb_name;
- char *path;
-
-+ if (search_bar->lite)
-+ return;
-+
- verb_name = verb_name_from_id (id);
- path = g_strconcat ("/commands/", verb_name, NULL);
- g_free (verb_name);
-@@ -1334,6 +1378,8 @@ e_search_bar_set_viewitem_id (ESearchBar *search_bar, int id)
- int row;
-
- g_return_if_fail (E_IS_SEARCH_BAR (search_bar));
-+ if (!search_bar->viewoption_menu)
-+ return;
-
- row = find_id (search_bar->viewoption_menu, id, "EsbItemId", NULL);
- if (row == -1)
-@@ -1358,6 +1404,8 @@ e_search_bar_set_item_id (ESearchBar *search_bar, int id)
-
- g_return_if_fail (E_IS_SEARCH_BAR (search_bar));
-
-+ if (!search_bar->option_menu)
-+ return;
- row = find_id (search_bar->option_menu, id, "EsbItemId", NULL);
- if (row == -1)
- return;
-@@ -1370,7 +1418,8 @@ e_search_bar_set_item_id (ESearchBar *search_bar, int id)
- if (!search_bar->block_search)
- emit_query_changed (search_bar);
-
-- update_clear_menuitem_sensitive (search_bar);
-+ if (!search_bar->lite)
-+ update_clear_menuitem_sensitive (search_bar);
- }
-
- void
-diff --git a/widgets/misc/e-search-bar.h b/widgets/misc/e-search-bar.h
-index 1f7072d..a8dbf22 100644
---- a/widgets/misc/e-search-bar.h
-+++ b/widgets/misc/e-search-bar.h
-@@ -105,6 +105,7 @@ struct _ESearchBar
- int last_search_option;
-
- gboolean block_search;
-+ gboolean lite;
- };
-
- struct _ESearchBarClass
-@@ -133,6 +134,8 @@ void e_search_bar_construct (ESearchBar *search_bar,
- ESearchBarItem *option_items);
- GtkWidget *e_search_bar_new (ESearchBarItem *menu_items,
- ESearchBarItem *option_items);
-+GtkWidget *e_search_bar_lite_new (ESearchBarItem *menu_items,
-+ ESearchBarItem *option_items);
-
- void e_search_bar_set_ui_component (ESearchBar *search_bar,
- BonoboUIComponent *ui_component);
-diff --git a/widgets/misc/e-spinner.c b/widgets/misc/e-spinner.c
-index 56990d7..d980991 100644
---- a/widgets/misc/e-spinner.c
-+++ b/widgets/misc/e-spinner.c
-@@ -888,9 +888,10 @@ e_spinner_dispose (GObject *object)
- {
- ESpinner *spinner = E_SPINNER (object);
-
-- g_signal_handlers_disconnect_by_func
-- (spinner->details->icon_theme,
-- G_CALLBACK (icon_theme_changed_cb), spinner);
-+ if (spinner->details->icon_theme)
-+ g_signal_handlers_disconnect_by_func
-+ (spinner->details->icon_theme,
-+ G_CALLBACK (icon_theme_changed_cb), spinner);
-
- G_OBJECT_CLASS (parent_class)->dispose (object);
- }
+ <rule grouping="any" source="demand">
+- <_title>Subject or Sender contains</_title>
++ <_title>Subject or Addresses contains</_title>
+ <partset>
+ <part name="subject">
+ <value name="subject-type" type="option" value="contains"/>
+ <value name="subject" type="string"/>
+- </part>
++ </part>
+ <part name="sender">
+ <value name="sender-type" type="option" value="contains"/>
+ <value name="sender" type="string"/>
+ </part>
++ <part name="to">
++ <value name="recipient-type" type="option" value="contains"/>
++ <value name="recipient" type="address"/>
++ </part>
++ <part name="to">
++ <value name="recipient-type" type="option" value="contains"/>
++ <value name="recipient" type="address"/>
++ </part>
++ <part name="to">
++ <value name="recipient-type" type="option" value="contains"/>
++ <value name="recipient" type="address"/>
++ </part>
+ </partset>
+ <sources/>
+ </rule>
+@@ -796,6 +807,21 @@
+ </rule>
+
+ <rule grouping="any" source="demand">
++ <_title>Subject or Sender contains</_title>
++ <partset>
++ <part name="subject">
++ <value name="subject-type" type="option" value="contains"/>
++ <value name="subject" type="string"/>
++ </part>
++ <part name="sender">
++ <value name="sender-type" type="option" value="contains"/>
++ <value name="sender" type="string"/>
++ </part>
++ </partset>
++ <sources/>
++ </rule>
++
++ <rule grouping="any" source="demand">
+ <_title>Recipients contain</_title>
+ <partset>
+ <part name="to">
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]