diff options
author | Xavier Claessens <xclaesse@src.gnome.org> | 2009-01-07 00:46:07 +0800 |
---|---|---|
committer | Xavier Claessens <xclaesse@src.gnome.org> | 2009-01-07 00:46:07 +0800 |
commit | ca2a03e84bd231e8e9c8522f42778493c977a478 (patch) | |
tree | c14f9df6e74ed26e9019aaa03ec7755fbb29ad10 | |
parent | 7b293aff4cbfa6f28b906d72605813c40b7b0ed6 (diff) | |
download | gsoc2013-empathy-ca2a03e84bd231e8e9c8522f42778493c977a478.tar gsoc2013-empathy-ca2a03e84bd231e8e9c8522f42778493c977a478.tar.gz gsoc2013-empathy-ca2a03e84bd231e8e9c8522f42778493c977a478.tar.bz2 gsoc2013-empathy-ca2a03e84bd231e8e9c8522f42778493c977a478.tar.lz gsoc2013-empathy-ca2a03e84bd231e8e9c8522f42778493c977a478.tar.xz gsoc2013-empathy-ca2a03e84bd231e8e9c8522f42778493c977a478.tar.zst gsoc2013-empathy-ca2a03e84bd231e8e9c8522f42778493c977a478.zip |
Don't emit sound when changing state and properly play login sound.
svn path=/trunk/; revision=2027
-rw-r--r-- | libempathy-gtk/empathy-ui-utils.c | 6 | ||||
-rw-r--r-- | src/empathy-main-window.c | 13 |
2 files changed, 16 insertions, 3 deletions
diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c index a7a468c3f..83141afbf 100644 --- a/libempathy-gtk/empathy-ui-utils.c +++ b/libempathy-gtk/empathy-ui-utils.c @@ -1509,11 +1509,13 @@ empathy_sound_pref_is_enabled (const char *key) return FALSE; } - idle = empathy_idle_new (); + idle = empathy_idle_new (); presence = empathy_idle_get_state (idle); g_object_unref (idle); - if (presence > MC_PRESENCE_AVAILABLE) { + + if (presence != MC_PRESENCE_AVAILABLE && + presence != MC_PRESENCE_UNSET) { empathy_conf_get_bool (conf, EMPATHY_PREFS_SOUNDS_DISABLED_AWAY, &res); if (res) { diff --git a/src/empathy-main-window.c b/src/empathy-main-window.c index ced1d68e3..58c4a0184 100644 --- a/src/empathy-main-window.c +++ b/src/empathy-main-window.c @@ -36,6 +36,7 @@ #include <libempathy/empathy-contact-list.h> #include <libempathy/empathy-contact-manager.h> #include <libempathy/empathy-contact-factory.h> +#include <libempathy/empathy-idle.h> #include <libempathy/empathy-status-presets.h> #include <libempathy-gtk/empathy-contact-dialogs.h> @@ -1183,14 +1184,24 @@ main_window_status_changed_cb (MissionControl *mc, if (status == TP_CONNECTION_STATUS_CONNECTED) { GtkWidget *error_widget; + EmpathyIdle *idle; - if (empathy_sound_pref_is_enabled (EMPATHY_PREFS_SOUNDS_SERVICE_LOGIN)) { + idle = empathy_idle_new (); + + /* emit the sound only on first connect, i.e. when the saved + * idle state is MC_PRESENCE_UNSET. + */ + + if (empathy_idle_get_state (idle) == MC_PRESENCE_UNSET && + empathy_sound_pref_is_enabled (EMPATHY_PREFS_SOUNDS_SERVICE_LOGIN)) { ca_gtk_play_for_widget (GTK_WIDGET (window->window), 0, CA_PROP_EVENT_ID, "service-login", CA_PROP_EVENT_DESCRIPTION, _("Connected to server"), NULL); } + g_object_unref (idle); + /* Account connected without error, remove error message if any */ error_widget = g_hash_table_lookup (window->errors, account); if (error_widget) { |