aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac1
-rw-r--r--libempathy-gtk/empathy-conf.h1
-rw-r--r--src/empathy-call-window.c23
-rw-r--r--src/empathy-chat-window.c24
-rw-r--r--src/empathy-main-window.c21
5 files changed, 69 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index 9c5837c6f..54f073245 100644
--- a/configure.ac
+++ b/configure.ac
@@ -107,6 +107,7 @@ PKG_CHECK_MODULES(EMPATHY,
x11
libglade-2.0 >= $LIBGLADE_REQUIRED
libebook-1.2
+ libcanberra-gtk >= 0.4
])
# -----------------------------------------------------------
diff --git a/libempathy-gtk/empathy-conf.h b/libempathy-gtk/empathy-conf.h
index 2c361f468..00f26c077 100644
--- a/libempathy-gtk/empathy-conf.h
+++ b/libempathy-gtk/empathy-conf.h
@@ -74,6 +74,7 @@ struct _EmpathyConfClass {
#define EMPATHY_PREFS_AUTOCONNECT EMPATHY_PREFS_PATH "/autoconnect"
#define EMPATHY_PREFS_IMPORT_ASKED EMPATHY_PREFS_PATH "/import_asked"
#define EMPATHY_PREFS_FILE_TRANSFER_DEFAULT_FOLDER EMPATHY_PREFS_PATH "/file_transfer/default_folder"
+#define EMPATHY_PREFS_INPUT_FEEDBACK_SOUNDS "/desktop/gnome/sound/input_feedback_sounds"
typedef void (*EmpathyConfNotifyFunc) (EmpathyConf *conf,
const gchar *key,
diff --git a/src/empathy-call-window.c b/src/empathy-call-window.c
index 8edf6817c..f8ccfc648 100644
--- a/src/empathy-call-window.c
+++ b/src/empathy-call-window.c
@@ -25,6 +25,7 @@
#include <glade/glade.h>
#include <glib/gi18n.h>
+#include <canberra-gtk.h>
#include <telepathy-glib/enums.h>
@@ -194,6 +195,11 @@ static void
call_window_hang_up_button_clicked_cb (GtkWidget *widget,
EmpathyCallWindow *window)
{
+ ca_gtk_play_for_widget (GTK_WIDGET (window->window), 0,
+ CA_PROP_EVENT_ID, "phone-hangup",
+ CA_PROP_EVENT_DESCRIPTION, _("Voice call ended"),
+ CA_PROP_APPLICATION_NAME, g_get_application_name (),
+ NULL);
DEBUG ("Call clicked, end call");
call_window_finalize (window);
}
@@ -394,8 +400,25 @@ call_window_update (EmpathyCallWindow *window)
gtk_window_set_title (GTK_WINDOW (window->window), title);
gtk_label_set_text (GTK_LABEL (window->status_label), _("Ringing"));
gtk_widget_set_sensitive (window->hang_up_button, TRUE);
+
if (is_incoming)
+ {
call_window_show_confirmation_dialog (window);
+ ca_gtk_play_for_widget (GTK_WIDGET (window->window), 0,
+ CA_PROP_EVENT_ID, "phone-incoming-call",
+ CA_PROP_EVENT_DESCRIPTION, _("Incoming voice call"),
+ CA_PROP_APPLICATION_NAME, g_get_application_name (),
+ NULL);
+ }
+ else
+ {
+ ca_gtk_play_for_widget (GTK_WIDGET (window->window), 0,
+ CA_PROP_EVENT_ID, "phone-outgoing-calling",
+ CA_PROP_EVENT_DESCRIPTION, _("Outgoing voice call"),
+ CA_PROP_APPLICATION_NAME, g_get_application_name (),
+ NULL);
+ }
+
}
else if (window->status == EMPATHY_TP_CALL_STATUS_ACCEPTED)
{
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;
}
diff --git a/src/empathy-main-window.c b/src/empathy-main-window.c
index 49bfe3d0a..5c82fe599 100644
--- a/src/empathy-main-window.c
+++ b/src/empathy-main-window.c
@@ -27,6 +27,7 @@
#include <gtk/gtk.h>
#include <glade/glade.h>
#include <glib/gi18n.h>
+#include <canberra-gtk.h>
#include <libempathy/empathy-contact.h>
#include <libempathy/empathy-utils.h>
@@ -212,7 +213,7 @@ main_window_flash_foreach (GtkTreeModel *model,
/* To be used with gtk_tree_model_foreach, update the status icon
* of the contact to show the event icon (on=TRUE) or the presence
* (on=FALSE) */
- gtk_tree_model_get (model, iter,
+ gtk_tree_model_get (model, iter,
EMPATHY_CONTACT_LIST_STORE_COL_CONTACT, &contact,
-1);
@@ -285,6 +286,11 @@ main_window_flash_cb (EmpathyMainWindow *window)
static void
main_window_flash_start (EmpathyMainWindow *window)
{
+ ca_gtk_play_for_widget (GTK_WIDGET (window->window), 0,
+ CA_PROP_EVENT_ID, "message-new-instant",
+ CA_PROP_EVENT_DESCRIPTION, _("Incoming chat request"),
+ CA_PROP_APPLICATION_NAME, g_get_application_name (),
+ NULL);
if (window->flash_timeout_id != 0) {
return;
@@ -1166,9 +1172,22 @@ main_window_status_changed_cb (MissionControl *mc,
main_window_error_display (window, account, message);
}
+ if (status == TP_CONNECTION_STATUS_DISCONNECTED) {
+ ca_gtk_play_for_widget (GTK_WIDGET (window->window), 0,
+ CA_PROP_EVENT_ID, "service-logout",
+ CA_PROP_EVENT_DESCRIPTION, _("Disconnected from server"),
+ CA_PROP_APPLICATION_NAME, g_get_application_name (),
+ NULL);
+ }
+
if (status == TP_CONNECTION_STATUS_CONNECTED) {
GtkWidget *error_widget;
+ ca_gtk_play_for_widget (GTK_WIDGET (window->window), 0,
+ CA_PROP_EVENT_ID, "service-login",
+ CA_PROP_EVENT_DESCRIPTION, _("Connected to server"),
+ CA_PROP_APPLICATION_NAME, g_get_application_name (),
+ NULL);
/* Account connected without error, remove error message if any */
error_widget = g_hash_table_lookup (window->errors, account);
if (error_widget) {