diff options
Diffstat (limited to 'src/empathy-chat-window.c')
-rw-r--r-- | src/empathy-chat-window.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/empathy-chat-window.c b/src/empathy-chat-window.c index e0e9dae5d..b5e30d647 100644 --- a/src/empathy-chat-window.c +++ b/src/empathy-chat-window.c @@ -33,6 +33,7 @@ #include <gdk/gdkkeysyms.h> #include <glade/glade.h> #include <glib/gi18n.h> +#include <canberra-gtk.h> #include <telepathy-glib/util.h> #include <libmissioncontrol/mission-control.h> @@ -841,11 +842,34 @@ chat_window_new_message_cb (EmpathyChat *chat, EmpathyChatWindowPriv *priv; gboolean has_focus; gboolean needs_urgency; + gboolean action_sounds_enabled; + EmpathyContact *sender; priv = GET_PRIV (window); has_focus = empathy_chat_window_has_focus (window); + empathy_conf_get_bool (empathy_conf_get (), + EMPATHY_PREFS_INPUT_FEEDBACK_SOUNDS, + &action_sounds_enabled); + /* always play sounds if enabled, otherwise only play if chat is not in focus */ + if (action_sounds_enabled || !has_focus || priv->current_chat != chat) { + sender = empathy_message_get_sender(message); + if (empathy_contact_is_user (sender) != FALSE) { + ca_gtk_play_for_widget (GTK_WIDGET (priv->dialog), 0, + CA_PROP_EVENT_ID, "message-sent-instant", + CA_PROP_EVENT_DESCRIPTION, _("Sent an instant message"), + CA_PROP_APPLICATION_NAME, g_get_application_name (), + NULL); + } else { + ca_gtk_play_for_widget (GTK_WIDGET (priv->dialog), 0, + CA_PROP_EVENT_ID, "message-new-instant", + CA_PROP_EVENT_DESCRIPTION, _("Received an instant message"), + CA_PROP_APPLICATION_NAME, g_get_application_name (), + NULL); + } + } + if (has_focus && priv->current_chat == chat) { return; } |