evolution r37199 - in branches/kill-bonobo: . composer mail



Author: mbarnes
Date: Sat Jan 31 18:02:22 2009
New Revision: 37199
URL: http://svn.gnome.org/viewvc/evolution?rev=37199&view=rev

Log:
Let the mailer handle composer printing.
Start roughing in the mailer search bar.


Modified:
   branches/kill-bonobo/composer/e-composer-actions.c
   branches/kill-bonobo/composer/e-msg-composer.c
   branches/kill-bonobo/composer/e-msg-composer.h
   branches/kill-bonobo/configure.in
   branches/kill-bonobo/mail/e-mail-shell-view-actions.c
   branches/kill-bonobo/mail/e-mail-shell-view-private.c
   branches/kill-bonobo/mail/e-mail-shell-view-private.h
   branches/kill-bonobo/mail/em-composer-utils.c

Modified: branches/kill-bonobo/composer/e-composer-actions.c
==============================================================================
--- branches/kill-bonobo/composer/e-composer-actions.c	(original)
+++ branches/kill-bonobo/composer/e-composer-actions.c	Sat Jan 31 18:02:22 2009
@@ -22,7 +22,6 @@
 #include <fcntl.h>
 #include <e-util/e-error.h>
 #include <mail/em-event.h>
-#include <mail/em-format-html-print.h>
 #include <mail/em-composer-utils.h>
 
 #include "misc/e-charset-picker.h"
@@ -184,15 +183,9 @@
                  EMsgComposer *composer)
 {
 	GtkPrintOperationAction print_action;
-	CamelMimeMessage *message;
-	EMFormatHTMLPrint *efhp;
 
 	print_action = GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG;
-	message = e_msg_composer_get_message (composer, 1);
-
-	efhp = em_format_html_print_new (NULL, print_action);
-	em_format_html_print_raw_message (efhp, message);
-	g_object_unref (efhp);
+	e_msg_composer_print (composer, print_action);
 }
 
 static void
@@ -200,15 +193,9 @@
                          EMsgComposer *composer)
 {
 	GtkPrintOperationAction print_action;
-	CamelMimeMessage *message;
-	EMFormatHTMLPrint *efhp;
 
 	print_action = GTK_PRINT_OPERATION_ACTION_PREVIEW;
-	message = e_msg_composer_get_message_print (composer, 1);
-
-	efhp = em_format_html_print_new (NULL, print_action);
-	em_format_html_print_raw_message (efhp, message);
-	g_object_unref (efhp);
+	e_msg_composer_print (composer, print_action);
 }
 
 static void

Modified: branches/kill-bonobo/composer/e-msg-composer.c
==============================================================================
--- branches/kill-bonobo/composer/e-msg-composer.c	(original)
+++ branches/kill-bonobo/composer/e-msg-composer.c	Sat Jan 31 18:02:22 2009
@@ -132,6 +132,7 @@
 enum {
 	SEND,
 	SAVE_DRAFT,
+	PRINT,
 	LAST_SIGNAL
 };
 
@@ -2695,7 +2696,7 @@
 
 	signals[SEND] = g_signal_new (
 		"send",
-		E_TYPE_MSG_COMPOSER,
+		G_OBJECT_CLASS_TYPE (class),
 		G_SIGNAL_RUN_LAST,
 		0, NULL, NULL,
 		g_cclosure_marshal_VOID__VOID,
@@ -2703,11 +2704,20 @@
 
 	signals[SAVE_DRAFT] = g_signal_new (
 		"save-draft",
-		E_TYPE_MSG_COMPOSER,
+		G_OBJECT_CLASS_TYPE (class),
 		G_SIGNAL_RUN_LAST,
 		0, NULL, NULL,
 		g_cclosure_marshal_VOID__VOID,
 		G_TYPE_NONE, 0);
+
+	signals[PRINT] = g_signal_new (
+		"print",
+		G_OBJECT_CLASS_TYPE (class),
+		G_SIGNAL_RUN_LAST,
+		0, NULL, NULL,
+		g_cclosure_marshal_VOID__ENUM,
+		G_TYPE_NONE, 1,
+		GTK_TYPE_PRINT_OPERATION_ACTION);
 }
 
 static void
@@ -3785,6 +3795,22 @@
 	e_composer_autosave_set_saved (composer, FALSE);
 }
 
+/**
+ * e_msg_composer_print:
+ * @composer: an #EMsgComposer
+ * @action: the print action to start
+ *
+ * Print the message in @composer.
+ **/
+void
+e_msg_composer_print (EMsgComposer *composer,
+                      GtkPrintOperationAction action)
+{
+	g_return_if_fail (E_IS_MSG_COMPOSER (composer));
+
+	g_signal_emit (composer, signals[PRINT], 0, action);
+}
+
 static GList *
 add_recipients (GList *list, const gchar *recips)
 {

Modified: branches/kill-bonobo/composer/e-msg-composer.h
==============================================================================
--- branches/kill-bonobo/composer/e-msg-composer.h	(original)
+++ branches/kill-bonobo/composer/e-msg-composer.h	Sat Jan 31 18:02:22 2009
@@ -83,6 +83,8 @@
 
 void		e_msg_composer_send		(EMsgComposer *composer);
 void		e_msg_composer_save_draft	(EMsgComposer *composer);
+void		e_msg_composer_print		(EMsgComposer *composer,
+						 GtkPrintOperationAction action);
 
 void		e_msg_composer_set_alternative	(EMsgComposer *composer,
 						 gboolean alt);

Modified: branches/kill-bonobo/configure.in
==============================================================================
--- branches/kill-bonobo/configure.in	(original)
+++ branches/kill-bonobo/configure.in	Sat Jan 31 18:02:22 2009
@@ -1630,7 +1630,7 @@
 
 dnl --- evolution-test flags
 
-EVO_SET_COMPILE_FLAGS(EVOLUTION_TEST, gtk+-2.0 libxml-2.0)
+EVO_SET_COMPILE_FLAGS(EVOLUTION_TEST, gtk+-2.0 libxml-2.0 unique-1.0)
 AC_SUBST(EVOLUTION_TEST_CFLAGS)
 AC_SUBST(EVOLUTION_TEST_LIBS)
 

Modified: branches/kill-bonobo/mail/e-mail-shell-view-actions.c
==============================================================================
--- branches/kill-bonobo/mail/e-mail-shell-view-actions.c	(original)
+++ branches/kill-bonobo/mail/e-mail-shell-view-actions.c	Sat Jan 31 18:02:22 2009
@@ -522,6 +522,14 @@
 		mail_shell_content, vertical_view);
 }
 
+static void
+action_search_filter_cb (GtkRadioAction *action,
+                         GtkRadioAction *current,
+                         EMailShellView *mail_shell_view)
+{
+	e_mail_shell_view_execute_search (mail_shell_view);
+}
+
 static GtkActionEntry mail_entries[] = {
 
 	{ "mail-account-disable",
@@ -1078,3 +1086,41 @@
 	dst_object = G_OBJECT (ACTION (MAIL_THREADS_EXPAND_ALL));
 	e_binding_new (src_object, "active", dst_object, "sensitive");
 }
+
+void
+e_mail_shell_view_update_search_filter (EMailShellView *mail_shell_view)
+{
+	EShellContent *shell_content;
+	EShellWindow *shell_window;
+	EShellView *shell_view;
+	GtkActionGroup *action_group;
+	GtkRadioAction *radio_action;
+	GList *list, *iter;
+	GSList *group;
+
+	shell_view = E_SHELL_VIEW (mail_shell_view);
+	shell_content = e_shell_view_get_shell_content (shell_view);
+	shell_window = e_shell_view_get_shell_window (shell_view);
+
+	action_group = ACTION_GROUP (MAIL_FILTER);
+	e_action_group_remove_all_actions (action_group);
+
+	/* Add the standard filter actions. */
+	gtk_action_group_add_radio_actions (
+		action_group, mail_filter_entries,
+		G_N_ELEMENTS (mail_filter_entries),
+		MAIL_FILTER_ALL_MESSAGES,
+		G_CALLBACK (action_search_filter_cb),
+		mail_shell_view);
+
+	/* Retrieve the radio group from an action we just added. */
+	list = gtk_action_group_list_actions (action_group);
+	radio_action = GTK_RADIO_ACTION (list->data);
+	group = gtk_radio_action_get_group (radio_action);
+	g_list_free (list);
+
+	/* FIXME Build the label actions. */
+
+	/* User any action in the group; doesn't matter which. */
+	e_shell_content_set_filter_action (shell_content, radio_action);
+}

Modified: branches/kill-bonobo/mail/e-mail-shell-view-private.c
==============================================================================
--- branches/kill-bonobo/mail/e-mail-shell-view-private.c	(original)
+++ branches/kill-bonobo/mail/e-mail-shell-view-private.c	Sat Jan 31 18:02:22 2009
@@ -209,6 +209,7 @@
 		mail_shell_view);
 
 	e_mail_shell_view_actions_init (mail_shell_view);
+	e_mail_shell_view_update_search_filter (mail_shell_view);
 	e_mail_reader_init (reader);
 
 	/* Restore the previously selected folder. */
@@ -245,6 +246,135 @@
 }
 
 void
+e_mail_shell_view_execute_search (EMailShellView *mail_shell_view)
+{
+	/* FIXME */
+}
+
+/* Helper for e_mail_shell_view_create_filter_from_selected() */
+static void
+mail_shell_view_create_filter_cb (CamelFolder *folder,
+                                  const gchar *uid,
+                                  CamelMimeMessage *message,
+                                  gpointer user_data)
+{
+	struct {
+		const gchar *source;
+		gint type;
+	} *filter_data = user_data;
+
+	if (message != NULL)
+		filter_gui_add_from_message (
+			message, filter_data->source, filter_data->type);
+
+	g_free (filter_data);
+}
+
+void
+e_mail_shell_view_create_filter_from_selected (EMailShellView *mail_shell_view,
+                                               gint filter_type)
+{
+	EMailReader *reader;
+	MessageList *message_list;
+	CamelFolder *folder;
+	const gchar *filter_source;
+	const gchar *folder_uri;
+	GPtrArray *uids;
+
+	struct {
+		const gchar *source;
+		gint type;
+	} *filter_data;
+
+	g_return_if_fail (E_IS_MAIL_SHELL_VIEW (mail_shell_view));
+
+	reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content);
+	message_list = e_mail_reader_get_message_list (reader);
+	folder_uri = message_list->folder_uri;
+	folder = message_list->folder;
+
+	if (em_utils_folder_is_sent (folder, folder_uri))
+		filter_source = FILTER_SOURCE_OUTGOING;
+	else if (em_utils_folder_is_outbox (folder, folder_uri))
+		filter_source = FILTER_SOURCE_OUTGOING;
+	else
+		filter_source = FILTER_SOURCE_INCOMING;
+
+	uids = message_list_get_selected (message_list);
+
+	if (uids->len == 1) {
+		filter_data = g_malloc (sizeof (*filter_data));
+		filter_data->source = filter_source;
+		filter_data->type = filter_type;
+
+		mail_get_message (
+			folder, uids->pdata[0],
+			mail_shell_view_create_filter_cb,
+			filter_data, mail_msg_unordered_push);
+	}
+
+	em_utils_uids_free (uids);
+}
+
+/* Helper for e_mail_shell_view_create_vfolder_from_selected() */
+static void
+mail_shell_view_create_vfolder_cb (CamelFolder *folder,
+                                   const gchar *uid,
+                                   CamelMimeMessage *message,
+                                   gpointer user_data)
+{
+	struct {
+		gchar *uri;
+		gint type;
+	} *vfolder_data = user_data;
+
+	if (message != NULL)
+		vfolder_gui_add_from_message (
+			message, vfolder_data->type, vfolder_data->uri);
+
+	g_free (vfolder_data->uri);
+	g_free (vfolder_data);
+}
+
+void
+e_mail_shell_view_create_vfolder_from_selected (EMailShellView *mail_shell_view,
+                                                gint vfolder_type)
+{
+	EMailReader *reader;
+	MessageList *message_list;
+	CamelFolder *folder;
+	const gchar *folder_uri;
+	GPtrArray *uids;
+
+	struct {
+		gchar *uri;
+		gint type;
+	} *vfolder_data;
+
+	g_return_if_fail (E_IS_MAIL_SHELL_VIEW (mail_shell_view));
+
+	reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content);
+	message_list = e_mail_reader_get_message_list (reader);
+	folder_uri = message_list->folder_uri;
+	folder = message_list->folder;
+
+	uids = message_list_get_selected (message_list);
+
+	if (uids->len == 1) {
+		vfolder_data = g_malloc (sizeof (*vfolder_data));
+		vfolder_data->uri = g_strdup (folder_uri);
+		vfolder_data->type = vfolder_type;
+
+		mail_get_message (
+			folder, uids->pdata[0],
+			mail_shell_view_create_vfolder_cb,
+			vfolder_data, mail_msg_unordered_push);
+	}
+
+	em_utils_uids_free (uids);
+}
+
+void
 e_mail_shell_view_update_sidebar (EMailShellView *mail_shell_view)
 {
 	EShellSidebar *shell_sidebar;
@@ -395,126 +525,3 @@
 	camel_object_free (folder, CAMEL_FOLDER_NAME, folder_name);
 	g_string_free (buffer, TRUE);
 }
-
-/* Helper for e_mail_shell_view_create_filter_from_selected() */
-static void
-mail_shell_view_create_filter_cb (CamelFolder *folder,
-                                  const gchar *uid,
-                                  CamelMimeMessage *message,
-                                  gpointer user_data)
-{
-	struct {
-		const gchar *source;
-		gint type;
-	} *filter_data = user_data;
-
-	if (message != NULL)
-		filter_gui_add_from_message (
-			message, filter_data->source, filter_data->type);
-
-	g_free (filter_data);
-}
-
-void
-e_mail_shell_view_create_filter_from_selected (EMailShellView *mail_shell_view,
-                                               gint filter_type)
-{
-	EMailReader *reader;
-	MessageList *message_list;
-	CamelFolder *folder;
-	const gchar *filter_source;
-	const gchar *folder_uri;
-	GPtrArray *uids;
-
-	struct {
-		const gchar *source;
-		gint type;
-	} *filter_data;
-
-	g_return_if_fail (E_IS_MAIL_SHELL_VIEW (mail_shell_view));
-
-	reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content);
-	message_list = e_mail_reader_get_message_list (reader);
-	folder_uri = message_list->folder_uri;
-	folder = message_list->folder;
-
-	if (em_utils_folder_is_sent (folder, folder_uri))
-		filter_source = FILTER_SOURCE_OUTGOING;
-	else if (em_utils_folder_is_outbox (folder, folder_uri))
-		filter_source = FILTER_SOURCE_OUTGOING;
-	else
-		filter_source = FILTER_SOURCE_INCOMING;
-
-	uids = message_list_get_selected (message_list);
-
-	if (uids->len == 1) {
-		filter_data = g_malloc (sizeof (*filter_data));
-		filter_data->source = filter_source;
-		filter_data->type = filter_type;
-
-		mail_get_message (
-			folder, uids->pdata[0],
-			mail_shell_view_create_filter_cb,
-			filter_data, mail_msg_unordered_push);
-	}
-
-	em_utils_uids_free (uids);
-}
-
-/* Helper for e_mail_shell_view_create_vfolder_from_selected() */
-static void
-mail_shell_view_create_vfolder_cb (CamelFolder *folder,
-                                   const gchar *uid,
-                                   CamelMimeMessage *message,
-                                   gpointer user_data)
-{
-	struct {
-		gchar *uri;
-		gint type;
-	} *vfolder_data = user_data;
-
-	if (message != NULL)
-		vfolder_gui_add_from_message (
-			message, vfolder_data->type, vfolder_data->uri);
-
-	g_free (vfolder_data->uri);
-	g_free (vfolder_data);
-}
-
-void
-e_mail_shell_view_create_vfolder_from_selected (EMailShellView *mail_shell_view,
-                                                gint vfolder_type)
-{
-	EMailReader *reader;
-	MessageList *message_list;
-	CamelFolder *folder;
-	const gchar *folder_uri;
-	GPtrArray *uids;
-
-	struct {
-		gchar *uri;
-		gint type;
-	} *vfolder_data;
-
-	g_return_if_fail (E_IS_MAIL_SHELL_VIEW (mail_shell_view));
-
-	reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content);
-	message_list = e_mail_reader_get_message_list (reader);
-	folder_uri = message_list->folder_uri;
-	folder = message_list->folder;
-
-	uids = message_list_get_selected (message_list);
-
-	if (uids->len == 1) {
-		vfolder_data = g_malloc (sizeof (*vfolder_data));
-		vfolder_data->uri = g_strdup (folder_uri);
-		vfolder_data->type = vfolder_type;
-
-		mail_get_message (
-			folder, uids->pdata[0],
-			mail_shell_view_create_vfolder_cb,
-			vfolder_data, mail_msg_unordered_push);
-	}
-
-	em_utils_uids_free (uids);
-}

Modified: branches/kill-bonobo/mail/e-mail-shell-view-private.h
==============================================================================
--- branches/kill-bonobo/mail/e-mail-shell-view-private.h	(original)
+++ branches/kill-bonobo/mail/e-mail-shell-view-private.h	Sat Jan 31 18:02:22 2009
@@ -137,7 +137,7 @@
 
 void		e_mail_shell_view_actions_init
 					(EMailShellView *mail_shell_view);
-void		e_mail_shell_view_update_sidebar
+void		e_mail_shell_view_execute_search
 					(EMailShellView *mail_shell_view);
 void		e_mail_shell_view_create_filter_from_selected
 					(EMailShellView *mail_shell_view,
@@ -145,6 +145,10 @@
 void		e_mail_shell_view_create_vfolder_from_selected
 					(EMailShellView *mail_shell_view,
 					 gint vfolder_type);
+void		e_mail_shell_view_update_sidebar
+					(EMailShellView *mail_shell_view);
+void		e_mail_shell_view_update_search_filter
+					(EMailShellView *mail_shell_view);
 
 G_END_DECLS
 

Modified: branches/kill-bonobo/mail/em-composer-utils.c
==============================================================================
--- branches/kill-bonobo/mail/em-composer-utils.c	(original)
+++ branches/kill-bonobo/mail/em-composer-utils.c	Sat Jan 31 18:02:22 2009
@@ -46,6 +46,7 @@
 #include "composer/e-msg-composer.h"
 #include "composer/e-composer-autosave.h"
 #include "em-format-html.h"
+#include "em-format-html-print.h"
 #include "em-format-quote.h"
 #include "em-event.h"
 
@@ -642,6 +643,20 @@
 	camel_object_unref (msg);
 }
 
+static void
+em_utils_composer_print_cb (EMsgComposer *composer,
+                            GtkPrintOperationAction action)
+{
+	CamelMimeMessage *message;
+	EMFormatHTMLPrint *efhp;
+
+	message = e_msg_composer_get_message_print (composer, 1);
+
+	efhp = em_format_html_print_new (NULL, action);
+	em_format_html_print_raw_message (efhp, message);
+	g_object_unref (efhp);
+}
+
 /* Composing messages... */
 
 static EMsgComposer *
@@ -2542,6 +2557,10 @@
 		composer, "save-draft",
 		G_CALLBACK (em_utils_composer_save_draft_cb), NULL);
 
+	g_signal_connect (
+		composer, "print",
+		G_CALLBACK (em_utils_composer_print_cb), NULL);
+
 	/* Supply the composer with a folder tree model. */
 	table = e_msg_composer_get_header_table (composer);
 	model = e_mail_shell_module_get_folder_tree_model (mail_shell_module);



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