aboutsummaryrefslogtreecommitdiffstats
path: root/mail/mail-autofilter.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2010-10-07 11:38:52 +0800
committerMatthew Barnes <mbarnes@redhat.com>2010-10-13 01:58:59 +0800
commita06e4484b8df804124b5bcf88d94dec5acfba270 (patch)
tree4fa42793d7dc461f2b3767296d76592182c48222 /mail/mail-autofilter.c
parent5e0758bb6934a7859b1d8a247c8fb21c156772cf (diff)
downloadgsoc2013-evolution-a06e4484b8df804124b5bcf88d94dec5acfba270.tar
gsoc2013-evolution-a06e4484b8df804124b5bcf88d94dec5acfba270.tar.gz
gsoc2013-evolution-a06e4484b8df804124b5bcf88d94dec5acfba270.tar.bz2
gsoc2013-evolution-a06e4484b8df804124b5bcf88d94dec5acfba270.tar.lz
gsoc2013-evolution-a06e4484b8df804124b5bcf88d94dec5acfba270.tar.xz
gsoc2013-evolution-a06e4484b8df804124b5bcf88d94dec5acfba270.tar.zst
gsoc2013-evolution-a06e4484b8df804124b5bcf88d94dec5acfba270.zip
Give MailSession a permanent home.
Global variables in shared libraries are a bad idea. EMailBackend now owns the MailSession instance, which is actually now EMailSession. Move the blocking utility functions in mail-tools.c to e-mail-session.c and add asynchronous variants. Same approach as Camel. Replace EMailReader.get_shell_backend() with EMailReader.get_backend(), which returns an EMailBackend. Easier access to the EMailSession.
Diffstat (limited to 'mail/mail-autofilter.c')
-rw-r--r--mail/mail-autofilter.c72
1 files changed, 48 insertions, 24 deletions
diff --git a/mail/mail-autofilter.c b/mail/mail-autofilter.c
index 5fa343e64b..566369a3b5 100644
--- a/mail/mail-autofilter.c
+++ b/mail/mail-autofilter.c
@@ -30,9 +30,9 @@
#include <glib.h>
#include <glib/gi18n.h>
+#include "e-mail-session.h"
#include "mail-vfolder.h"
#include "mail-autofilter.h"
-#include "mail-session.h"
#include "em-utils.h"
#include "e-util/e-alert-dialog.h"
#include "e-util/e-util-private.h"
@@ -297,50 +297,69 @@ rule_from_message (EFilterRule *rule, ERuleContext *context, CamelMimeMessage *m
}
EFilterRule *
-em_vfolder_rule_from_message (EMVFolderContext *context, CamelMimeMessage *msg, gint flags, const gchar *source)
+em_vfolder_rule_from_message (EMVFolderContext *context,
+ CamelMimeMessage *msg,
+ gint flags,
+ const gchar *source)
{
- EMVFolderRule *rule;
+ EFilterRule *rule;
+ EMailSession *session;
gchar *euri = em_uri_from_camel (source);
- rule = em_vfolder_rule_new ();
- em_vfolder_rule_add_source (rule, euri);
- rule_from_message ((EFilterRule *)rule, (ERuleContext *)context, msg, flags);
+ session = em_vfolder_context_get_session (context);
+
+ rule = em_vfolder_rule_new (session);
+ em_vfolder_rule_add_source (EM_VFOLDER_RULE (rule), euri);
+ rule_from_message (rule, E_RULE_CONTEXT (context), msg, flags);
g_free (euri);
- return (EFilterRule *)rule;
+ return rule;
}
EFilterRule *
-em_vfolder_rule_from_address (EMVFolderContext *context, CamelInternetAddress *addr, gint flags, const gchar *source)
+em_vfolder_rule_from_address (EMVFolderContext *context,
+ CamelInternetAddress *addr,
+ gint flags,
+ const gchar *source)
{
- EMVFolderRule *rule;
+ EFilterRule *rule;
+ EMailSession *session;
gchar *euri = em_uri_from_camel (source);
- rule = em_vfolder_rule_new ();
- em_vfolder_rule_add_source (rule, euri);
- rule_from_address ((EFilterRule *)rule, (ERuleContext *)context, addr, flags);
+ session = em_vfolder_context_get_session (context);
+
+ rule = em_vfolder_rule_new (session);
+ em_vfolder_rule_add_source (EM_VFOLDER_RULE (rule), euri);
+ rule_from_address (rule, E_RULE_CONTEXT (context), addr, flags);
g_free (euri);
- return (EFilterRule *)rule;
+ return rule;
}
EFilterRule *
-filter_rule_from_message (EMFilterContext *context, CamelMimeMessage *msg, gint flags)
+filter_rule_from_message (EMFilterContext *context,
+ CamelMimeMessage *msg,
+ gint flags)
{
- EMFilterRule *rule;
+ EFilterRule *rule;
EFilterPart *part;
rule = em_filter_rule_new ();
- rule_from_message ((EFilterRule *)rule, (ERuleContext *)context, msg, flags);
+ rule_from_message (rule, E_RULE_CONTEXT (context), msg, flags);
part = em_filter_context_next_action (context, NULL);
- em_filter_rule_add_action (rule, e_filter_part_clone (part));
- return (EFilterRule *)rule;
+ em_filter_rule_add_action (
+ EM_FILTER_RULE (rule), e_filter_part_clone (part));
+
+ return rule;
}
void
-filter_gui_add_from_message (CamelMimeMessage *msg, const gchar *source, gint flags)
+filter_gui_add_from_message (EMailSession *session,
+ CamelMimeMessage *msg,
+ const gchar *source,
+ gint flags)
{
EMFilterContext *fc;
const gchar *config_dir;
@@ -349,7 +368,7 @@ filter_gui_add_from_message (CamelMimeMessage *msg, const gchar *source, gint fl
g_return_if_fail (msg != NULL);
- fc = em_filter_context_new ();
+ fc = em_filter_context_new (session);
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);
@@ -366,7 +385,10 @@ filter_gui_add_from_message (CamelMimeMessage *msg, const gchar *source, gint fl
}
void
-mail_filter_rename_uri (CamelStore *store, const gchar *olduri, const gchar *newuri)
+mail_filter_rename_uri (EMailSession *session,
+ CamelStore *store,
+ const gchar *olduri,
+ const gchar *newuri)
{
EMFilterContext *fc;
const gchar *config_dir;
@@ -377,7 +399,7 @@ mail_filter_rename_uri (CamelStore *store, const gchar *olduri, const gchar *new
eolduri = em_uri_from_camel (olduri);
enewuri = em_uri_from_camel (newuri);
- fc = em_filter_context_new ();
+ fc = em_filter_context_new (session);
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);
@@ -400,7 +422,9 @@ mail_filter_rename_uri (CamelStore *store, const gchar *olduri, const gchar *new
}
void
-mail_filter_delete_uri (CamelStore *store, const gchar *uri)
+mail_filter_delete_uri (EMailSession *session,
+ CamelStore *store,
+ const gchar *uri)
{
EMFilterContext *fc;
const gchar *config_dir;
@@ -410,7 +434,7 @@ mail_filter_delete_uri (CamelStore *store, const gchar *uri)
euri = em_uri_from_camel (uri);
- fc = em_filter_context_new ();
+ fc = em_filter_context_new (session);
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);