[anjal] Update evo patch, till we commit



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]