[anjal] Update Evo stable/trunk for updated Anjal.



commit ae9021d589dbb83bb7b76519220bcff12d1ad4a9
Author: Srinivasa Ragavan <sragavan novell com>
Date:   Fri May 15 23:19:50 2009 +0530

    Update Evo stable/trunk for updated Anjal.
---
 evo-anjal-2-27.patch |  804 ++++++++++++++++++++++++++++++++++++++++++++++++--
 evo-anjal.patch      |  342 +++++++++++++++++++++
 2 files changed, 1122 insertions(+), 24 deletions(-)

diff --git a/evo-anjal-2-27.patch b/evo-anjal-2-27.patch
index cc1d8a0..1ed2307 100644
--- a/evo-anjal-2-27.patch
+++ b/evo-anjal-2-27.patch
@@ -67,10 +67,73 @@ index 74fda9a..f8c6dc6 100644
  
  /* Standard GObject macros */
 diff --git a/composer/e-composer-header-table.c b/composer/e-composer-header-table.c
-index 461c11e..4f2c6e1 100644
+index 461c11e..9612993 100644
 --- a/composer/e-composer-header-table.c
 +++ b/composer/e-composer-header-table.c
-@@ -649,7 +649,7 @@ composer_header_table_init (EComposerHeaderTable *table)
+@@ -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;
  
@@ -79,7 +142,24 @@ index 461c11e..4f2c6e1 100644
  	composer_header_table_bind_header ("reply-to", "changed", header);
  	table->priv->headers[E_COMPOSER_HEADER_REPLY_TO] = header;
  
-@@ -672,7 +672,7 @@ composer_header_table_init (EComposerHeaderTable *table)
+-	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);
+ 	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);
+ 	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);
+ 	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;
  
@@ -89,7 +169,7 @@ index 461c11e..4f2c6e1 100644
  	table->priv->headers[E_COMPOSER_HEADER_SUBJECT] = header;
  
 diff --git a/composer/e-composer-header.c b/composer/e-composer-header.c
-index 8cbcf64..1ed21b6 100644
+index 8cbcf64..fbb58f1 100644
 --- a/composer/e-composer-header.c
 +++ b/composer/e-composer-header.c
 @@ -1,3 +1,7 @@
@@ -119,7 +199,7 @@ index 8cbcf64..1ed21b6 100644
  };
  
  static gpointer parent_class;
-@@ -54,6 +62,14 @@ composer_header_button_clicked_cb (GtkButton *button,
+@@ -54,6 +62,20 @@ composer_header_button_clicked_cb (GtkButton *button,
  	g_signal_emit (header, signal_ids[CLICKED], 0);
  }
  
@@ -131,31 +211,44 @@ index 8cbcf64..1ed21b6 100644
 +	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 +97,20 @@ composer_header_constructor (GType type,
+@@ -81,6 +103,27 @@ composer_header_constructor (GType type,
  		gtk_label_set_mnemonic_widget (
  			GTK_LABEL (widget), header->input_widget);
  	}
 +
 +	if (header->priv->addaction) {
-+		header->action_widget = gtk_link_button_new_with_label (header->priv->label, 
-+									header->priv->addaction_text);
++		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);
-+
-+		/*TODO : Add + icon*/
-+		/* widget = gtk_image_new_from_stock (GTK_STOCK_ADD, GTK_ICON_SIZE_MENU); */
-+		/* gtk_button_set_image (header->action_widget, widget); */
 +	}
 +
  	header->title_widget = g_object_ref_sink (widget);
  
  	g_free (header->priv->label);
-@@ -104,6 +134,14 @@ composer_header_set_property (GObject *object,
+@@ -104,6 +147,14 @@ composer_header_set_property (GObject *object,
  			priv->button = g_value_get_boolean (value);
  			return;
  
@@ -170,7 +263,7 @@ index 8cbcf64..1ed21b6 100644
  		case PROP_LABEL:	/* construct only */
  			priv->label = g_value_dup_string (value);
  			return;
-@@ -124,6 +162,15 @@ composer_header_set_property (GObject *object,
+@@ -124,6 +175,15 @@ composer_header_set_property (GObject *object,
  	G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
  }
  
@@ -186,7 +279,7 @@ index 8cbcf64..1ed21b6 100644
  static void
  composer_header_get_property (GObject *object,
                                guint property_id,
-@@ -139,6 +186,15 @@ composer_header_get_property (GObject *object,
+@@ -139,6 +199,15 @@ composer_header_get_property (GObject *object,
  			g_value_set_boolean (value, priv->button);
  			return;
  
@@ -202,7 +295,7 @@ index 8cbcf64..1ed21b6 100644
  		case PROP_LABEL:	/* construct only */
  			g_value_take_string (
  				value, e_composer_header_get_label (
-@@ -207,6 +263,28 @@ composer_header_class_init (EComposerHeaderClass *class)
+@@ -207,6 +276,28 @@ composer_header_class_init (EComposerHeaderClass *class)
  
  	g_object_class_install_property (
  		object_class,
@@ -332,6 +425,134 @@ index 04f7100..92a379b 100644
  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);
++	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
@@ -406,6 +627,87 @@ index c0c4708..79e972d 100644
  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..0967eea 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];
+ 
+@@ -2473,6 +2475,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 +2688,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
@@ -1144,10 +1446,83 @@ index 9a5b09a..42421c2 100644
  gboolean em_account_editor_save (EMAccountEditor *gui);
  void em_account_editor_destroy (EMAccountEditor *gui);
 diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c
-index 38f35d1..d884154 100644
+index 38f35d1..a6c8c10 100644
 --- a/mail/em-composer-utils.c
 +++ b/mail/em-composer-utils.c
-@@ -1713,7 +1713,7 @@ generate_account_hash (void)
+@@ -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;
  }
  
@@ -1156,7 +1531,7 @@ index 38f35d1..d884154 100644
  em_utils_camel_address_to_destination (CamelInternetAddress *iaddr)
  {
  	EDestination *dest, **destv;
-@@ -1915,6 +1915,12 @@ get_reply_sender (CamelMimeMessage *message, CamelInternetAddress *to, CamelNNTP
+@@ -1915,6 +1938,12 @@ get_reply_sender (CamelMimeMessage *message, CamelInternetAddress *to, CamelNNTP
  	}
  }
  
@@ -1169,7 +1544,7 @@ index 38f35d1..d884154 100644
  static gboolean
  get_reply_list (CamelMimeMessage *message, CamelInternetAddress *to)
  {
-@@ -2028,6 +2034,13 @@ get_reply_all (CamelMimeMessage *message, CamelInternetAddress *to, CamelInterne
+@@ -2028,6 +2057,13 @@ get_reply_all (CamelMimeMessage *message, CamelInternetAddress *to, CamelInterne
  	g_hash_table_destroy (rcpt_hash);
  }
  
@@ -1183,7 +1558,7 @@ index 38f35d1..d884154 100644
  enum {
  	ATTRIB_UNKNOWN,
  	ATTRIB_CUSTOM,
-@@ -2285,6 +2298,21 @@ struct _reply_data {
+@@ -2285,6 +2321,21 @@ struct _reply_data {
  	int mode;
  };
  
@@ -1205,8 +1580,29 @@ index 38f35d1..d884154 100644
  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.
+  **/
+-void
++struct _EMsgComposer *
+ em_utils_reply_to_message(CamelFolder *folder, const char *uid, CamelMimeMessage *message, int mode, EMFormat *source)
+ {
+ 	CamelInternetAddress *to, *cc;
+@@ -2393,7 +2444,10 @@ em_utils_reply_to_message(CamelFolder *folder, const char *uid, CamelMimeMessage
+ 
+ 	composer_set_no_change (composer, TRUE, FALSE);
+ 
+-	gtk_widget_show (GTK_WIDGET (composer));
++	if (!e_msg_composer_get_lite())
++		gtk_widget_show (GTK_WIDGET (composer));
++
++	return composer;
+ }
+ 
+ /* Posting replies... */
 diff --git a/mail/em-composer-utils.h b/mail/em-composer-utils.h
-index d17a98c..8b5d279 100644
+index d17a98c..857d74c 100644
 --- a/mail/em-composer-utils.h
 +++ b/mail/em-composer-utils.h
 @@ -34,9 +34,12 @@ extern "C" {
@@ -1222,16 +1618,25 @@ index d17a98c..8b5d279 100644
  
  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);
-@@ -77,9 +80,15 @@ enum {
+@@ -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); 
+ 
+ /* 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);
 +
 +
- void em_utils_reply_to_message (struct _CamelFolder *, const char *uid, struct _CamelMimeMessage *message, int mode, struct _EMFormat *source);
++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);
@@ -1367,6 +1772,357 @@ index 124c736..b0486ab 100644
  
  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);
+-
+-	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
diff --git a/evo-anjal.patch b/evo-anjal.patch
old mode 100755
new mode 100644
index dab06aa..1009661
--- a/evo-anjal.patch
+++ b/evo-anjal.patch
@@ -1815,6 +1815,348 @@ index 95acd8b..2d92b1e 100644
  
  libefilterbar_la_LDFLAGS = $(NO_UNDEFINED)
  
+diff --git a/widgets/misc/e-filter-bar.c b/widgets/misc/e-filter-bar.c
+index 65b25c3..7e2afb3 100644
+--- a/widgets/misc/e-filter-bar.c
++++ b/widgets/misc/e-filter-bar.c
+@@ -968,12 +968,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 33fa94f..6e2174a 100644
+--- a/widgets/misc/e-search-bar.c
++++ b/widgets/misc/e-search-bar.c
+@@ -102,7 +102,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 *
+@@ -157,7 +158,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
+@@ -170,8 +172,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
+@@ -369,12 +373,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);
+@@ -666,7 +672,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);
+ }
+ 
+@@ -819,7 +825,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;
+ 	}
+@@ -990,60 +996,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);
+-
+-	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 */
+@@ -1057,8 +1079,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
+@@ -1269,12 +1291,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));
+@@ -1294,6 +1335,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);
+@@ -1335,6 +1379,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)
+@@ -1359,6 +1405,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;
+@@ -1371,7 +1419,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..7edafea 100644
 --- a/widgets/misc/e-spinner.c



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]