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:
committed by
Rodrigo Moya
parent
bb99cdc5de
commit
2c2c462895
@ -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);
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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;
|
||||
|
||||
Reference in New Issue
Block a user