aboutsummaryrefslogtreecommitdiffstats
path: root/mail
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2013-02-27 07:19:28 +0800
committerMatthew Barnes <mbarnes@redhat.com>2013-02-27 23:59:54 +0800
commit7001c2fe656294d02fc6fe5784d25e2c817e854b (patch)
treeca6637aef0f8450878556c2729ca2bc773f1b861 /mail
parent26e1f45bf399a43b407c40af418232425e24e827 (diff)
downloadgsoc2013-evolution-7001c2fe656294d02fc6fe5784d25e2c817e854b.tar.gz
gsoc2013-evolution-7001c2fe656294d02fc6fe5784d25e2c817e854b.tar.zst
gsoc2013-evolution-7001c2fe656294d02fc6fe5784d25e2c817e854b.zip
EMailReader: Remove addresses from EPhotoCache as needed.
Use e_photo_cache_remove() instead of emu_remove_from_mail_cache_1().
Diffstat (limited to 'mail')
-rw-r--r--mail/e-mail-reader.c33
1 files changed, 28 insertions, 5 deletions
diff --git a/mail/e-mail-reader.c b/mail/e-mail-reader.c
index de9b3d62f8..64b8d78b40 100644
--- a/mail/e-mail-reader.c
+++ b/mail/e-mail-reader.c
@@ -159,7 +159,9 @@ action_mail_add_sender_cb (GtkAction *action,
{
EShell *shell;
EMailBackend *backend;
+ EMailSession *session;
EShellBackend *shell_backend;
+ CamelInternetAddress *cia;
CamelMessageInfo *info = NULL;
CamelFolder *folder;
GPtrArray *uids;
@@ -168,6 +170,7 @@ action_mail_add_sender_cb (GtkAction *action,
folder = e_mail_reader_get_folder (reader);
backend = e_mail_reader_get_backend (reader);
+ session = e_mail_backend_get_session (backend);
uids = e_mail_reader_get_selected_uids (reader);
g_return_if_fail (uids != NULL && uids->len == 1);
@@ -186,7 +189,19 @@ action_mail_add_sender_cb (GtkAction *action,
shell_backend = E_SHELL_BACKEND (backend);
shell = e_shell_backend_get_shell (shell_backend);
e_shell_event (shell, "contact-quick-add-email", (gpointer) address);
- emu_remove_from_mail_cache_1 (address);
+
+ /* Remove this address from the photo cache. */
+ cia = camel_internet_address_new ();
+ if (camel_address_decode (CAMEL_ADDRESS (cia), address) > 0) {
+ EPhotoCache *photo_cache;
+ const gchar *address_only = NULL;
+
+ photo_cache = e_mail_ui_session_get_photo_cache (
+ E_MAIL_UI_SESSION (session));
+ camel_internet_address_get (cia, 0, NULL, &address_only);
+ e_photo_cache_remove (photo_cache, address_only);
+ }
+ g_object_unref (cia);
exit:
if (info)
@@ -200,16 +215,20 @@ action_add_to_address_book_cb (GtkAction *action,
{
EShell *shell;
EMailBackend *backend;
+ EMailSession *session;
EShellBackend *shell_backend;
CamelInternetAddress *cia;
+ EPhotoCache *photo_cache;
EWebView *web_view;
CamelURL *curl;
const gchar *uri;
+ const gchar *address_only = NULL;
gchar *email;
/* This action is defined in EMailDisplay. */
backend = e_mail_reader_get_backend (reader);
+ session = e_mail_backend_get_session (backend);
web_view = E_WEB_VIEW (e_mail_reader_get_mail_display (reader));
if (!web_view)
@@ -230,17 +249,21 @@ action_add_to_address_book_cb (GtkAction *action,
goto exit;
}
- email = camel_address_format (CAMEL_ADDRESS (cia));
-
/* XXX EBookShellBackend should be listening for this
* event. Kind of kludgey, but works for now. */
shell_backend = E_SHELL_BACKEND (backend);
shell = e_shell_backend_get_shell (shell_backend);
+ email = camel_address_format (CAMEL_ADDRESS (cia));
e_shell_event (shell, "contact-quick-add-email", email);
- emu_remove_from_mail_cache_1 (curl->path);
+ g_free (email);
+
+ /* Remove this address from the photo cache. */
+ photo_cache = e_mail_ui_session_get_photo_cache (
+ E_MAIL_UI_SESSION (session));
+ camel_internet_address_get (cia, 0, NULL, &address_only);
+ e_photo_cache_remove (photo_cache, address_only);
g_object_unref (cia);
- g_free (email);
exit:
camel_url_free (curl);