EMEventTargetFolder: Add an EAccount member.

The mail-notification plugin can use the EAccount member directly
instead of searching for it by URI.
This commit is contained in:
Matthew Barnes
2011-05-02 14:21:21 -04:00
committed by Rodrigo Moya
parent bb99cdc5de
commit 2c2c462895
4 changed files with 23 additions and 13 deletions

View File

@ -361,6 +361,8 @@ mail_backend_folder_changed_cb (MailFolderCache *folder_cache,
EMEvent *event = em_event_peek ();
EMEventTargetFolder *target;
EMFolderTreeModel *model;
EAccount *account;
const gchar *uid;
gint folder_type;
gint flags = 0;
@ -370,8 +372,11 @@ mail_backend_folder_changed_cb (MailFolderCache *folder_cache,
folder_cache, folder, &flags))
g_return_if_reached ();
uid = camel_service_get_uid (CAMEL_SERVICE (store));
account = e_get_account_by_uid (uid);
target = em_event_target_new_folder (
event, folder_uri, new_messages,
event, account, folder_uri, new_messages,
msg_uid, msg_sender, msg_subject);
folder_type = (flags & CAMEL_FOLDER_TYPE_MASK);

View File

@ -42,6 +42,8 @@ eme_target_free (EEvent *ep, EEventTarget *t)
switch (t->type) {
case EM_EVENT_TARGET_FOLDER: {
EMEventTargetFolder *s = (EMEventTargetFolder *)t;
if (s->account != NULL)
g_object_unref (s->account);
g_free (s->name);
g_free (s->uri);
g_free (s->msg_uid);
@ -108,6 +110,7 @@ em_event_peek (void)
EMEventTargetFolder *
em_event_target_new_folder (EMEvent *eme,
EAccount *account,
const gchar *uri,
guint new,
const gchar *msg_uid,
@ -120,6 +123,10 @@ em_event_target_new_folder (EMEvent *eme,
t = e_event_target_new (
&eme->popup, EM_EVENT_TARGET_FOLDER, sizeof (*t));
if (E_IS_ACCOUNT (account))
t->account = g_object_ref (account);
else
t->account = NULL;
t->uri = g_strdup (uri);
t->target.mask = ~flags;
t->new = new;

View File

@ -74,6 +74,7 @@ typedef struct _EMEventTargetFolder EMEventTargetFolder;
struct _EMEventTargetFolder {
EEventTarget target;
EAccount *account;
gchar *uri;
guint new;
gboolean is_inbox;
@ -136,6 +137,7 @@ GType em_event_get_type (void);
EMEvent * em_event_peek (void);
EMEventTargetFolder *
em_event_target_new_folder (EMEvent *emp,
EAccount *account,
const gchar *uri,
guint32 count_new_msgs,
const gchar *msg_uid,

View File

@ -379,16 +379,13 @@ new_notify_status (EMEventTargetFolder *t)
gchar *msg;
if (!status_count) {
EAccount *account;
gchar *name = t->name;
gchar *folder_name;
account = e_get_account_by_source_url (t->uri);
if (account != NULL) {
name = g_strdup_printf (
"%s/%s", e_account_get_string (
account, E_ACCOUNT_NAME), name);
}
if (t->account != NULL)
folder_name = g_strdup_printf (
"%s/%s", t->account->name, t->name);
else
folder_name = g_strdup (t->name);
status_count = t->new;
@ -397,10 +394,9 @@ new_notify_status (EMEventTargetFolder *t)
msg = g_strdup_printf (ngettext (
"You have received %d new message\nin %s.",
"You have received %d new messages\nin %s.",
status_count), status_count, name);
status_count), status_count, folder_name);
if (name != t->name)
g_free (name);
g_free (folder_name);
if (t->msg_sender) {
gchar *tmp, *str;