diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/empathy-main-window.c | 13 |
1 files changed, 12 insertions, 1 deletions
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) { |