[evolution/email-factory-3-4: 40/53] commit a9cfed5938aef37d95c009411f965ebc185547c1 Author: Matthew Barnes <mbarnes redhat com> Date:



commit a9e97708a68c9ae750f31a4fd06db0ae00b56f65
Author: Srinivasa Ragavan <sragavan gnome org>
Date:   Tue Jan 3 12:28:55 2012 +0530

    commit a9cfed5938aef37d95c009411f965ebc185547c1
    Author: Matthew Barnes <mbarnes redhat com>
    Date:   Fri Dec 16 10:40:37 2011 -0500
    
        Avoid passing EMailBackend as much as possible.
    
        More mail API churn... reversing some previous API
        decisions.
    
        I've made some key API changes to EMailSession on
        the account-mgmt  branch which should allow for this, and will
        hopefully also benefit the "email-factory" branch.
    
        EMailBackend barely needs to exist anymore, except as the owner of
        EMailSession.
    
        For several low-level functions, we replace its EMailBackend
        parameter with EMailSession and EAlertSink parameters; the
        latter so it can still pass user alerts up the chain.

 libemail-engine/mail-ops.c |   63 +++++++++++++++----------------------------
 libemail-engine/mail-ops.h |    7 +---
 mail/e-mail-ui-session.c   |   10 +-----
 3 files changed, 26 insertions(+), 54 deletions(-)
---
diff --git a/libemail-engine/mail-ops.c b/libemail-engine/mail-ops.c
index e9bf888..d97165d 100644
--- a/libemail-engine/mail-ops.c
+++ b/libemail-engine/mail-ops.c
@@ -416,28 +416,6 @@ mail_fetch_mail (CamelStore *store,
 	mail_msg_unordered_push (m);
 }
 
-static gchar *
-escape_percent_sign (const gchar *str)
-{
-	GString *res;
-
-	if (!str)
-		return NULL;
-
-	res = g_string_sized_new (strlen (str));
-	while (*str) {
-		if (*str == '%') {
-			g_string_append (res, "%%");
-		} else {
-			g_string_append_c (res, *str);
-		}
-
-		str++;
-	}
-
-	return g_string_free (res, FALSE);
-}
-
 /* ********************************************************************** */
 /* sending stuff */
 /* ** SEND MAIL *********************************************************** */
@@ -555,20 +533,11 @@ mail_send_message (struct _send_queue_msg *m,
 	}
 
 	if (transport != NULL) {
-		CamelURL *url;
-		gchar *url_string;
-		gchar *escaped;
-
-		url = camel_service_new_camel_url (CAMEL_SERVICE (transport));
-		url_string = camel_url_to_string (url, CAMEL_URL_HIDE_ALL);
-		escaped = escape_percent_sign (url_string);
-		camel_url_free (url);
-
-		/* Let the dialog know the right account it is using. */
-		report_status (m, CAMEL_FILTER_STATUS_ACTION, 0, escaped);
+		const gchar *uid;
 
-		g_free (escaped);
-		g_free (url_string);
+ 		/* Let the dialog know the right account it is using. */
+		uid = camel_service_get_uid (CAMEL_SERVICE (transport));
+		report_status (m, CAMEL_FILTER_STATUS_ACTION, 0, uid);
 	}
 
 	/* Check for email sending */
@@ -1543,13 +1512,19 @@ static MailMsgInfo expunge_folder_info = {
 };
 
 void
-mail_expunge_folder (EMailSession *session,
-                     CamelFolder *folder)
+mail_expunge_folder (CamelFolder *folder)
 {
 	struct _sync_folder_msg *m;
+	CamelSession *session;
+	CamelService *service;
+	CamelStore *parent_store;
+
+	parent_store = camel_folder_get_parent_store (m->folder);
+	service = CAMEL_SERVICE (parent_store);
+	session = camel_service_get_session (service);
 
 	m = mail_msg_new (&expunge_folder_info);
-	m->session = g_object_ref (session);
+	m->session = (EMailSession *) g_object_ref (session);
 	m->folder = g_object_ref (folder);
 
 	mail_msg_slow_ordered_push (m);
@@ -1633,15 +1608,21 @@ static MailMsgInfo empty_trash_info = {
 };
 
 void
-mail_empty_trash (EMailSession *session,
-                  CamelStore *store)
+mail_empty_trash (CamelStore *store)
 {
 	struct _empty_trash_msg *m;
+	CamelSession *session;
+	CamelService *service;
+	CamelStore *parent_store;
+
+	parent_store = camel_folder_get_parent_store (m->folder);
+	service = CAMEL_SERVICE (parent_store);
+	session = camel_service_get_session (service);
 
 	g_return_if_fail (CAMEL_IS_STORE (store));
 
 	m = mail_msg_new (&empty_trash_info);
-	m->session = g_object_ref (session);
+	m->session = (EMailSession *)g_object_ref (session);
 	m->store = g_object_ref (store);
 
 	mail_msg_slow_ordered_push (m);
diff --git a/libemail-engine/mail-ops.h b/libemail-engine/mail-ops.h
index 241fad3..6b4a595 100644
--- a/libemail-engine/mail-ops.h
+++ b/libemail-engine/mail-ops.h
@@ -50,11 +50,8 @@ void mail_refresh_folder (CamelFolder *folder,
 			  void (*done) (CamelFolder *folder, gpointer data),
 			  gpointer data);
 
-void		mail_expunge_folder		(EMailSession *session,
-						 CamelFolder *folder);
-
-void		mail_empty_trash		(EMailSession *session,
-						 CamelStore *store);
+void		mail_expunge_folder		(CamelFolder *folder);
+void		mail_empty_trash		(CamelStore *store);
 
 /* transfer (copy/move) a folder */
 void mail_xfer_folder (const gchar *src_uri, const gchar *dest_uri, gboolean remove_source,
diff --git a/mail/e-mail-ui-session.c b/mail/e-mail-ui-session.c
index 49b038c..e6258b0 100644
--- a/mail/e-mail-ui-session.c
+++ b/mail/e-mail-ui-session.c
@@ -300,8 +300,7 @@ main_get_filter_driver (CamelSession *session,
                         const gchar *type,
                         GError **error)
 {
-	EShell *shell;
-	EShellBackend *shell_backend;
+	EMailSession *ms = E_MAIL_SESSION (session);
 	CamelFilterDriver *driver;
 	EFilterRule *rule = NULL;
 	const gchar *config_dir;
@@ -312,17 +311,12 @@ main_get_filter_driver (CamelSession *session,
 
 	priv = E_MAIL_UI_SESSION_GET_PRIVATE (session);
 
-	shell = e_shell_get_default ();
-	shell_backend = e_shell_get_backend_by_name (shell, "mail");
-	g_return_val_if_fail (E_IS_MAIL_BACKEND (shell_backend), NULL);
-
 	settings = g_settings_new ("org.gnome.evolution.mail");
 
 	config_dir = mail_session_get_config_dir ();
 	user = g_build_filename (config_dir, "filters.xml", NULL);
 	system = g_build_filename (EVOLUTION_PRIVDATADIR, "filtertypes.xml", NULL);
-	fc = (ERuleContext *) em_filter_context_new (
-		E_MAIL_BACKEND (shell_backend));
+	fc = (ERuleContext *) em_filter_context_new (ms);
 	e_rule_context_load (fc, system, user);
 	g_free (system);
 	g_free (user);



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