aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Claessens <xclaesse@gmail.com>2010-05-23 18:57:31 +0800
committerXavier Claessens <xclaesse@gmail.com>2010-05-26 17:34:59 +0800
commit58521ffc5dc4ca1b67ce3df25c16799237061f02 (patch)
treecf58f7d4f3884440d49903ffceb287fa84c78d89
parenta3006260dcca6bac7a2f291389823584a136f2d8 (diff)
downloadgsoc2013-empathy-58521ffc5dc4ca1b67ce3df25c16799237061f02.tar
gsoc2013-empathy-58521ffc5dc4ca1b67ce3df25c16799237061f02.tar.gz
gsoc2013-empathy-58521ffc5dc4ca1b67ce3df25c16799237061f02.tar.bz2
gsoc2013-empathy-58521ffc5dc4ca1b67ce3df25c16799237061f02.tar.lz
gsoc2013-empathy-58521ffc5dc4ca1b67ce3df25c16799237061f02.tar.xz
gsoc2013-empathy-58521ffc5dc4ca1b67ce3df25c16799237061f02.tar.zst
gsoc2013-empathy-58521ffc5dc4ca1b67ce3df25c16799237061f02.zip
Play sound for contact connected/disconnected from EmpathyEventManager instead of main window
-rw-r--r--src/empathy-event-manager.c38
-rw-r--r--src/empathy-main-window.c47
2 files changed, 25 insertions, 60 deletions
diff --git a/src/empathy-event-manager.c b/src/empathy-event-manager.c
index 025eec564..932164c10 100644
--- a/src/empathy-event-manager.c
+++ b/src/empathy-event-manager.c
@@ -864,33 +864,45 @@ event_manager_presence_changed_cb (EmpathyContactMonitor *monitor,
TP_CONNECTION_PRESENCE_TYPE_OFFLINE) > 0)
{
/* contact was online */
- empathy_conf_get_bool (empathy_conf_get (),
- EMPATHY_PREFS_NOTIFICATIONS_CONTACT_SIGNOUT, &preference);
- if (preference && tp_connection_presence_type_cmp_availability (current,
+ if (tp_connection_presence_type_cmp_availability (current,
TP_CONNECTION_PRESENCE_TYPE_OFFLINE) <= 0)
{
/* someone is logging off */
- header = g_strdup_printf (_("%s is now offline."),
- empathy_contact_get_name (contact));
+ empathy_sound_play (empathy_main_window_get (),
+ EMPATHY_SOUND_CONTACT_DISCONNECTED);
+
+ empathy_conf_get_bool (empathy_conf_get (),
+ EMPATHY_PREFS_NOTIFICATIONS_CONTACT_SIGNOUT, &preference);
+ if (preference)
+ {
+ header = g_strdup_printf (_("%s is now offline."),
+ empathy_contact_get_name (contact));
- event_manager_add (manager, contact, EMPATHY_EVENT_TYPE_PRESENCE,
- EMPATHY_IMAGE_AVATAR_DEFAULT, header, NULL, NULL, NULL, NULL);
+ event_manager_add (manager, contact, EMPATHY_EVENT_TYPE_PRESENCE,
+ EMPATHY_IMAGE_AVATAR_DEFAULT, header, NULL, NULL, NULL, NULL);
+ }
}
}
else
{
/* contact was offline */
- empathy_conf_get_bool (empathy_conf_get (),
- EMPATHY_PREFS_NOTIFICATIONS_CONTACT_SIGNIN, &preference);
if (preference && tp_connection_presence_type_cmp_availability (current,
TP_CONNECTION_PRESENCE_TYPE_OFFLINE) > 0)
{
/* someone is logging in */
- header = g_strdup_printf (_("%s is now online."),
- empathy_contact_get_name (contact));
+ empathy_sound_play (empathy_main_window_get (),
+ EMPATHY_SOUND_CONTACT_CONNECTED);
- event_manager_add (manager, contact, EMPATHY_EVENT_TYPE_PRESENCE,
- EMPATHY_IMAGE_AVATAR_DEFAULT, header, NULL, NULL, NULL, NULL);
+ empathy_conf_get_bool (empathy_conf_get (),
+ EMPATHY_PREFS_NOTIFICATIONS_CONTACT_SIGNIN, &preference);
+ if (preference)
+ {
+ header = g_strdup_printf (_("%s is now online."),
+ empathy_contact_get_name (contact));
+
+ event_manager_add (manager, contact, EMPATHY_EVENT_TYPE_PRESENCE,
+ EMPATHY_IMAGE_AVATAR_DEFAULT, header, NULL, NULL, NULL, NULL);
+ }
}
}
g_free (header);
diff --git a/src/empathy-main-window.c b/src/empathy-main-window.c
index 787743f67..ae1667622 100644
--- a/src/empathy-main-window.c
+++ b/src/empathy-main-window.c
@@ -556,49 +556,6 @@ main_window_connection_changed_cb (TpAccount *account,
}
static void
-main_window_contact_presence_changed_cb (EmpathyContactMonitor *monitor,
- EmpathyContact *contact,
- TpConnectionPresenceType current,
- TpConnectionPresenceType previous,
- EmpathyMainWindow *window)
-{
- TpAccount *account;
- gboolean should_play = FALSE;
- EmpathyIdle *idle;
-
- account = empathy_contact_get_account (contact);
- idle = empathy_idle_dup_singleton ();
-
- should_play = !empathy_idle_account_is_just_connected (idle, account);
-
- if (!should_play)
- goto out;
-
- if (tp_connection_presence_type_cmp_availability (previous,
- TP_CONNECTION_PRESENCE_TYPE_OFFLINE) > 0)
- {
- /* contact was online */
- if (tp_connection_presence_type_cmp_availability (current,
- TP_CONNECTION_PRESENCE_TYPE_OFFLINE) <= 0)
- /* someone is logging off */
- empathy_sound_play (GTK_WIDGET (window->window),
- EMPATHY_SOUND_CONTACT_DISCONNECTED);
- }
- else
- {
- /* contact was offline */
- if (tp_connection_presence_type_cmp_availability (current,
- TP_CONNECTION_PRESENCE_TYPE_OFFLINE) > 0)
- /* someone is logging in */
- empathy_sound_play (GTK_WIDGET (window->window),
- EMPATHY_SOUND_CONTACT_CONNECTED);
- }
-
-out:
- g_object_unref (idle);
-}
-
-static void
main_window_accels_load (void)
{
gchar *filename;
@@ -1325,7 +1282,6 @@ empathy_main_window_show (void)
{
EmpathyMainWindow *window;
EmpathyContactList *list_iface;
- EmpathyContactMonitor *monitor;
GtkBuilder *gui;
EmpathyConf *conf;
GtkWidget *sw;
@@ -1458,13 +1414,10 @@ empathy_main_window_show (void)
window->throbber_tool_item = GTK_WIDGET (item);
list_iface = EMPATHY_CONTACT_LIST (empathy_contact_manager_dup_singleton ());
- monitor = empathy_contact_list_get_monitor (list_iface);
window->list_store = empathy_contact_list_store_new (list_iface);
window->list_view = empathy_contact_list_view_new (window->list_store,
EMPATHY_CONTACT_LIST_FEATURE_ALL,
EMPATHY_CONTACT_FEATURE_ALL);
- g_signal_connect (monitor, "contact-presence-changed",
- G_CALLBACK (main_window_contact_presence_changed_cb), window);
window->butterfly_log_migration_members_changed_id = g_signal_connect (
list_iface, "members-changed",
G_CALLBACK (main_window_members_changed_cb), window);