[evolution] Do not empty trash/delete junk in disabled accounts on exit



commit 2bbd4baef086b6b4a077e8e7225029059bd6c1f8
Author: Milan Crha <mcrha redhat com>
Date:   Tue Dec 4 19:35:55 2012 +0100

    Do not empty trash/delete junk in disabled accounts on exit

 mail/e-mail-backend.c |   33 +++++++++++++++++++++++++++++++--
 1 files changed, 31 insertions(+), 2 deletions(-)
---
diff --git a/mail/e-mail-backend.c b/mail/e-mail-backend.c
index 2705520..4fb3291 100644
--- a/mail/e-mail-backend.c
+++ b/mail/e-mail-backend.c
@@ -258,6 +258,7 @@ mail_backend_delete_junk (CamelService *service,
 	camel_folder_thaw (folder);
 
 	camel_folder_free_uids (folder, uids);
+	g_object_unref (folder);
 }
 
 /* Helper for mail_backend_prepare_for_quit_cb() */
@@ -277,17 +278,43 @@ mail_backend_ready_to_quit (EActivity *activity)
 	g_object_unref (activity);
 }
 
+static gboolean
+mail_backend_service_is_enabled (ESourceRegistry *registry,
+				 CamelService *service)
+{
+	const gchar *uid;
+	ESource *source;
+	gboolean enabled;
+
+	g_return_val_if_fail (registry != NULL, FALSE);
+	g_return_val_if_fail (service != NULL, FALSE);
+
+	uid = camel_service_get_uid (service);
+	g_return_val_if_fail (uid != NULL, FALSE);
+
+	source = e_source_registry_ref_source (registry, uid);
+	if (!source)
+		return FALSE;
+
+	enabled = e_source_registry_check_enabled (registry, source);
+	g_object_unref (source);
+
+	return enabled;
+}
+
 static void
 mail_backend_prepare_for_quit_cb (EShell *shell,
                                   EActivity *activity,
                                   EMailBackend *backend)
 {
 	EMailSession *session;
+	ESourceRegistry *registry;
 	GList *list, *link;
 	gboolean delete_junk;
 	gboolean empty_trash;
 
 	session = e_mail_backend_get_session (backend);
+	registry = e_shell_get_registry (shell);
 
 	delete_junk = e_mail_backend_delete_junk_policy_decision (backend);
 	empty_trash = e_mail_backend_empty_trash_policy_decision (backend);
@@ -307,7 +334,8 @@ mail_backend_prepare_for_quit_cb (EShell *shell,
 
 			service = CAMEL_SERVICE (link->data);
 
-			if (!CAMEL_IS_STORE (service))
+			if (!CAMEL_IS_STORE (service) ||
+			    !mail_backend_service_is_enabled (registry, service))
 				continue;
 
 			mail_backend_delete_junk (service, backend);
@@ -319,7 +347,8 @@ mail_backend_prepare_for_quit_cb (EShell *shell,
 
 		service = CAMEL_SERVICE (link->data);
 
-		if (!CAMEL_IS_STORE (service))
+		if (!CAMEL_IS_STORE (service) ||
+		    !mail_backend_service_is_enabled (registry, service))
 			continue;
 
 		/* FIXME Not passing a GCancellable. */



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