diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2011-05-04 02:07:50 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2011-05-04 02:07:50 +0800 |
commit | 76280e456d8d9789e9a9d2186926fc5607bd8967 (patch) | |
tree | 36625829ef5c079b42ac753f11913e82f8d8be08 /mail | |
parent | 06411bdbbb3e6877c679007c269c84b05713f895 (diff) | |
download | gsoc2013-evolution-76280e456d8d9789e9a9d2186926fc5607bd8967.tar.gz gsoc2013-evolution-76280e456d8d9789e9a9d2186926fc5607bd8967.tar.zst gsoc2013-evolution-76280e456d8d9789e9a9d2186926fc5607bd8967.zip |
Build vfolder rules with CamelFolders instead of folder URIs.
Diffstat (limited to 'mail')
-rw-r--r-- | mail/e-mail-reader-utils.c | 8 | ||||
-rw-r--r-- | mail/e-mail-reader.c | 12 | ||||
-rw-r--r-- | mail/mail-autofilter.c | 19 | ||||
-rw-r--r-- | mail/mail-autofilter.h | 4 | ||||
-rw-r--r-- | mail/mail-vfolder.c | 14 | ||||
-rw-r--r-- | mail/mail-vfolder.h | 6 |
6 files changed, 35 insertions, 28 deletions
diff --git a/mail/e-mail-reader-utils.c b/mail/e-mail-reader-utils.c index 5953f64006..cb3eef5796 100644 --- a/mail/e-mail-reader-utils.c +++ b/mail/e-mail-reader-utils.c @@ -578,17 +578,15 @@ mail_reader_create_vfolder_cb (CamelFolder *folder, { struct { EMailSession *session; - gchar *uri; gint type; } *vfolder_data = user_data; if (message != NULL) vfolder_gui_add_from_message ( vfolder_data->session, message, - vfolder_data->type, vfolder_data->uri); + vfolder_data->type, folder); g_object_unref (vfolder_data->session); - g_free (vfolder_data->uri); g_free (vfolder_data); } @@ -599,12 +597,10 @@ e_mail_reader_create_vfolder_from_selected (EMailReader *reader, EMailBackend *backend; EMailSession *session; CamelFolder *folder; - const gchar *folder_uri; GPtrArray *uids; struct { EMailSession *session; - gchar *uri; gint type; } *vfolder_data; @@ -614,13 +610,11 @@ e_mail_reader_create_vfolder_from_selected (EMailReader *reader, session = e_mail_backend_get_session (backend); folder = e_mail_reader_get_folder (reader); - folder_uri = e_mail_reader_get_folder_uri (reader); uids = e_mail_reader_get_selected_uids (reader); if (uids->len == 1) { vfolder_data = g_malloc (sizeof (*vfolder_data)); vfolder_data->session = g_object_ref (session); - vfolder_data->uri = g_strdup (folder_uri); vfolder_data->type = vfolder_type; mail_get_message ( diff --git a/mail/e-mail-reader.c b/mail/e-mail-reader.c index ad596bba26..21d5341de2 100644 --- a/mail/e-mail-reader.c +++ b/mail/e-mail-reader.c @@ -1798,13 +1798,13 @@ action_search_folder_recipient_cb (GtkAction *action, EMailSession *session; EMFormatHTML *formatter; EWebView *web_view; + CamelFolder *folder; CamelURL *curl; - const gchar *folder_uri; const gchar *uri; /* This action is defined in EMailDisplay. */ - folder_uri = e_mail_reader_get_folder_uri (reader); + folder = e_mail_reader_get_folder (reader); formatter = e_mail_reader_get_formatter (reader); web_view = em_format_html_get_web_view (formatter); @@ -1824,7 +1824,7 @@ action_search_folder_recipient_cb (GtkAction *action, inet_addr = camel_internet_address_new (); camel_address_decode (CAMEL_ADDRESS (inet_addr), curl->path); vfolder_gui_add_from_address ( - session, inet_addr, AUTO_TO, folder_uri); + session, inet_addr, AUTO_TO, folder); g_object_unref (inet_addr); } @@ -1839,13 +1839,13 @@ action_search_folder_sender_cb (GtkAction *action, EMailSession *session; EMFormatHTML *formatter; EWebView *web_view; + CamelFolder *folder; CamelURL *curl; - const gchar *folder_uri; const gchar *uri; /* This action is defined in EMailDisplay. */ - folder_uri = e_mail_reader_get_folder_uri (reader); + folder = e_mail_reader_get_folder (reader); formatter = e_mail_reader_get_formatter (reader); web_view = em_format_html_get_web_view (formatter); @@ -1865,7 +1865,7 @@ action_search_folder_sender_cb (GtkAction *action, inet_addr = camel_internet_address_new (); camel_address_decode (CAMEL_ADDRESS (inet_addr), curl->path); vfolder_gui_add_from_address ( - session, inet_addr, AUTO_FROM, folder_uri); + session, inet_addr, AUTO_FROM, folder); g_object_unref (inet_addr); } diff --git a/mail/mail-autofilter.c b/mail/mail-autofilter.c index 2055480ea7..7c6a5c1b44 100644 --- a/mail/mail-autofilter.c +++ b/mail/mail-autofilter.c @@ -30,6 +30,7 @@ #include <glib.h> #include <glib/gi18n.h> +#include "e-mail-folder-utils.h" #include "e-mail-session.h" #include "mail-vfolder.h" #include "mail-autofilter.h" @@ -312,17 +313,22 @@ EFilterRule * em_vfolder_rule_from_message (EMVFolderContext *context, CamelMimeMessage *msg, gint flags, - const gchar *source) + CamelFolder *folder) { EFilterRule *rule; EMailSession *session; - gchar *euri = em_uri_from_camel (source); + gchar *uri, *euri; + + uri = e_mail_folder_uri_from_folder (folder); + euri = em_uri_from_camel (uri); 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 (uri); g_free (euri); return rule; @@ -332,17 +338,22 @@ EFilterRule * em_vfolder_rule_from_address (EMVFolderContext *context, CamelInternetAddress *addr, gint flags, - const gchar *source) + CamelFolder *folder) { EFilterRule *rule; EMailSession *session; - gchar *euri = em_uri_from_camel (source); + gchar *uri, *euri; + + uri = e_mail_folder_uri_from_folder (folder); + euri = em_uri_from_camel (uri); 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 (uri); g_free (euri); return rule; diff --git a/mail/mail-autofilter.h b/mail/mail-autofilter.h index 7967023b20..7c5c23ab87 100644 --- a/mail/mail-autofilter.h +++ b/mail/mail-autofilter.h @@ -41,14 +41,14 @@ enum { EFilterRule * em_vfolder_rule_from_message (EMVFolderContext *context, CamelMimeMessage *msg, gint flags, - const gchar *source); + CamelFolder *folder); EFilterRule * filter_rule_from_message (EMFilterContext *context, CamelMimeMessage *msg, gint flags); EFilterRule * em_vfolder_rule_from_address (EMVFolderContext *context, CamelInternetAddress *addr, gint flags, - const gchar *source); + CamelFolder *folder); /* easiest place to put this */ void filter_gui_add_from_message (EMailSession *session, diff --git a/mail/mail-vfolder.c b/mail/mail-vfolder.c index 0f98528d16..6958e82f62 100644 --- a/mail/mail-vfolder.c +++ b/mail/mail-vfolder.c @@ -1448,15 +1448,16 @@ vfolder_gui_add_rule (EMVFolderRule *rule) void vfolder_gui_add_from_message (EMailSession *session, - CamelMimeMessage *msg, + CamelMimeMessage *message, gint flags, - const gchar *source) + CamelFolder *folder) { EMVFolderRule *rule; - g_return_if_fail (msg != NULL); + g_return_if_fail (CAMEL_IS_MIME_MESSAGE (message)); - rule = (EMVFolderRule*)em_vfolder_rule_from_message (context, msg, flags, source); + rule = (EMVFolderRule*) em_vfolder_rule_from_message ( + context, message, flags, folder); vfolder_gui_add_rule (rule); } @@ -1464,13 +1465,14 @@ void vfolder_gui_add_from_address (EMailSession *session, CamelInternetAddress *addr, gint flags, - const gchar *source) + CamelFolder *folder) { EMVFolderRule *rule; g_return_if_fail (addr != NULL); - rule = (EMVFolderRule*)em_vfolder_rule_from_address (context, addr, flags, source); + rule = (EMVFolderRule*)em_vfolder_rule_from_address ( + context, addr, flags, folder); vfolder_gui_add_rule (rule); } diff --git a/mail/mail-vfolder.h b/mail/mail-vfolder.h index 91aae4d295..d1cdb371cc 100644 --- a/mail/mail-vfolder.h +++ b/mail/mail-vfolder.h @@ -40,13 +40,13 @@ EFilterRule * vfolder_clone_rule (EMailSession *session, EFilterRule *in); void vfolder_gui_add_rule (EMVFolderRule *rule); void vfolder_gui_add_from_message (EMailSession *session, - CamelMimeMessage *msg, + CamelMimeMessage *message, gint flags, - const gchar *source); + CamelFolder *folder); void vfolder_gui_add_from_address (EMailSession *session, CamelInternetAddress *addr, gint flags, - const gchar *source); + CamelFolder *folder); GList * mail_vfolder_get_sources_local (void); GList * mail_vfolder_get_sources_remote (void); |