aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Claessens <xclaesse@src.gnome.org>2008-07-15 22:00:40 +0800
committerXavier Claessens <xclaesse@src.gnome.org>2008-07-15 22:00:40 +0800
commit990ce28bd4ec033c6b378d9f1324159c137fc48e (patch)
treefbdecb7e3f45ae6ba774b99ac34061288ac431ae
parenta94c077818ed96fb9547f0cc9afd4d1f33c2bcde (diff)
downloadgsoc2013-empathy-990ce28bd4ec033c6b378d9f1324159c137fc48e.tar
gsoc2013-empathy-990ce28bd4ec033c6b378d9f1324159c137fc48e.tar.gz
gsoc2013-empathy-990ce28bd4ec033c6b378d9f1324159c137fc48e.tar.bz2
gsoc2013-empathy-990ce28bd4ec033c6b378d9f1324159c137fc48e.tar.lz
gsoc2013-empathy-990ce28bd4ec033c6b378d9f1324159c137fc48e.tar.xz
gsoc2013-empathy-990ce28bd4ec033c6b378d9f1324159c137fc48e.tar.zst
gsoc2013-empathy-990ce28bd4ec033c6b378d9f1324159c137fc48e.zip
Add the contact from who the event comes in the EmpathyEvent struct.
svn path=/trunk/; revision=1246
-rw-r--r--libempathy-gtk/empathy-event-manager.c30
-rw-r--r--libempathy-gtk/empathy-event-manager.h7
2 files changed, 21 insertions, 16 deletions
diff --git a/libempathy-gtk/empathy-event-manager.c b/libempathy-gtk/empathy-event-manager.c
index 0dcabda94..e6ddb1808 100644
--- a/libempathy-gtk/empathy-event-manager.c
+++ b/libempathy-gtk/empathy-event-manager.c
@@ -74,6 +74,11 @@ event_free (EventPriv *event)
{
g_free (event->public.icon_name);
g_free (event->public.message);
+
+ if (event->public.contact) {
+ g_object_unref (event->public.contact);
+ }
+
if (event->channel) {
g_signal_handlers_disconnect_by_func (event->channel,
event_remove,
@@ -96,6 +101,7 @@ event_remove (EventPriv *event)
static void
event_manager_add (EmpathyEventManager *manager,
+ EmpathyContact *contact,
const gchar *icon_name,
const gchar *message,
TpChannel *channel,
@@ -106,6 +112,7 @@ event_manager_add (EmpathyEventManager *manager,
EventPriv *event;
event = g_slice_new0 (EventPriv);
+ event->public.contact = contact ? g_object_ref (contact) : NULL;
event->public.icon_name = g_strdup (icon_name);
event->public.message = g_strdup (message);
event->manager = manager;
@@ -161,8 +168,8 @@ event_manager_chat_message_received_cb (EmpathyTpChat *tp_chat,
empathy_message_get_body (message));
channel = empathy_tp_chat_get_channel (tp_chat);
- event_manager_add (manager, EMPATHY_IMAGE_NEW_MESSAGE, msg, channel,
- event_channel_process_func, NULL);
+ event_manager_add (manager, sender, EMPATHY_IMAGE_NEW_MESSAGE, msg,
+ channel, event_channel_process_func, NULL);
g_free (msg);
}
@@ -198,8 +205,8 @@ event_manager_filter_channel_cb (EmpathyDispatcher *dispatcher,
msg = g_strdup_printf (_("Incoming call from %s"),
empathy_contact_get_name (contact));
- event_manager_add (manager, EMPATHY_IMAGE_VOIP, msg, channel,
- event_channel_process_func, NULL);
+ event_manager_add (manager, contact, EMPATHY_IMAGE_VOIP, msg,
+ channel, event_channel_process_func, NULL);
g_free (msg);
g_object_unref (contact);
@@ -288,8 +295,8 @@ event_manager_filter_tube_cb (EmpathyDispatcher *dispatcher,
empathy_contact_get_name (tube->initiator));
}
- event_manager_add (manager, icon_name, msg, tube->channel,
- event_tube_process_func,
+ event_manager_add (manager, tube->initiator, icon_name, msg,
+ tube->channel, event_tube_process_func,
empathy_dispatcher_tube_ref (tube));
g_free (msg);
@@ -298,11 +305,7 @@ event_manager_filter_tube_cb (EmpathyDispatcher *dispatcher,
static void
event_pending_subscribe_func (EventPriv *event)
{
- EmpathyContact *contact = EMPATHY_CONTACT (event->user_data);
-
- empathy_subscription_dialog_show (contact, NULL);
-
- g_object_unref (contact);
+ empathy_subscription_dialog_show (event->public.contact, NULL);
event_remove (event);
}
@@ -333,9 +336,8 @@ event_manager_pendings_changed_cb (EmpathyContactList *list,
g_string_append_printf (str, _("\nMessage: %s"), message);
}
- event_manager_add (manager, GTK_STOCK_DIALOG_QUESTION, str->str, NULL,
- event_pending_subscribe_func,
- g_object_ref (contact));
+ event_manager_add (manager, contact, GTK_STOCK_DIALOG_QUESTION, str->str,
+ NULL, event_pending_subscribe_func, NULL);
g_string_free (str, TRUE);
}
diff --git a/libempathy-gtk/empathy-event-manager.h b/libempathy-gtk/empathy-event-manager.h
index a4da56aac..89cb74d63 100644
--- a/libempathy-gtk/empathy-event-manager.h
+++ b/libempathy-gtk/empathy-event-manager.h
@@ -25,6 +25,8 @@
#include <glib.h>
#include <glib-object.h>
+#include <libempathy/empathy-contact.h>
+
G_BEGIN_DECLS
#define EMPATHY_TYPE_EVENT_MANAGER (empathy_event_manager_get_type ())
@@ -47,8 +49,9 @@ struct _EmpathyEventManagerClass {
};
typedef struct {
- gchar *icon_name;
- gchar *message;
+ EmpathyContact *contact;
+ gchar *icon_name;
+ gchar *message;
} EmpathyEvent;
GType empathy_event_manager_get_type (void) G_GNUC_CONST;