aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libempathy-gtk/empathy-ui-utils.c17
-rw-r--r--libempathy-gtk/empathy-ui-utils.h6
-rw-r--r--python/pyempathygtk/pyempathygtk.defs9
-rw-r--r--src/empathy-chat-window.c20
-rw-r--r--src/empathy-main-window.c47
5 files changed, 50 insertions, 49 deletions
diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c
index da658dac6..f937ce110 100644
--- a/libempathy-gtk/empathy-ui-utils.c
+++ b/libempathy-gtk/empathy-ui-utils.c
@@ -38,6 +38,7 @@
#include <gtk/gtk.h>
#include <gio/gio.h>
#include <glade/glade.h>
+#include <canberra-gtk.h>
#include <libmissioncontrol/mc-profile.h>
@@ -1492,7 +1493,7 @@ empathy_send_file_with_file_chooser (EmpathyContact *contact)
gtk_widget_show (widget);
}
-gboolean
+static gboolean
empathy_sound_pref_is_enabled (const char *key)
{
EmpathyConf *conf;
@@ -1526,3 +1527,17 @@ empathy_sound_pref_is_enabled (const char *key)
return res;
}
+
+void
+empathy_sound_play (GtkWidget *widget,
+ const char *key,
+ const char *event_id,
+ const char *description)
+{
+ if (empathy_sound_pref_is_enabled (key)) {
+ ca_gtk_play_for_widget (widget, 0,
+ CA_PROP_EVENT_ID, event_id,
+ CA_PROP_EVENT_DESCRIPTION, description,
+ NULL);
+ }
+} \ No newline at end of file
diff --git a/libempathy-gtk/empathy-ui-utils.h b/libempathy-gtk/empathy-ui-utils.h
index 7c97f0943..285b66452 100644
--- a/libempathy-gtk/empathy-ui-utils.h
+++ b/libempathy-gtk/empathy-ui-utils.h
@@ -114,7 +114,11 @@ GtkWidget * empathy_link_button_new (const gchar *url,
void empathy_send_file_with_file_chooser (EmpathyContact *contact);
-gboolean empathy_sound_pref_is_enabled (const char *key);
+/* Sounds */
+void empathy_sound_play (GtkWidget *widget,
+ const char *key,
+ const char *event_id,
+ const char *description);
G_END_DECLS
diff --git a/python/pyempathygtk/pyempathygtk.defs b/python/pyempathygtk/pyempathygtk.defs
index 90bfa0c2f..3c83a28ec 100644
--- a/python/pyempathygtk/pyempathygtk.defs
+++ b/python/pyempathygtk/pyempathygtk.defs
@@ -1732,11 +1732,14 @@
)
)
-(define-function sound_pref_is_enabled
- (c-name "empathy_sound_pref_is_enabled")
- (return-type "gboolean")
+(define-function sound_play
+ (c-name "empathy_sound_play")
+ (return-type "none")
(parameters
+ '("GtkWidget*" "widget")
'("const-char*" "key")
+ '("const-char*" "event_id")
+ '("const-char*" "description")
)
)
diff --git a/src/empathy-chat-window.c b/src/empathy-chat-window.c
index e1bd9075e..2c97301a5 100644
--- a/src/empathy-chat-window.c
+++ b/src/empathy-chat-window.c
@@ -33,7 +33,6 @@
#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>
@@ -858,19 +857,14 @@ chat_window_new_message_cb (EmpathyChat *chat,
sender = empathy_message_get_sender (message);
if (empathy_contact_is_user (sender) != FALSE) {
- if (empathy_sound_pref_is_enabled (EMPATHY_PREFS_SOUNDS_OUTGOING_MESSAGE)) {
- 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"),
- NULL);
- }
+ empathy_sound_play (GTK_WIDGET (priv->dialog),
+ EMPATHY_PREFS_SOUNDS_OUTGOING_MESSAGE,
+ "message-sent-instant", _("Sent an instant message"));
} else {
- if ((!has_focus || priv->current_chat != chat) &&
- empathy_sound_pref_is_enabled (EMPATHY_PREFS_SOUNDS_INCOMING_MESSAGE)) {
- 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"),
- NULL);
+ if ((!has_focus || priv->current_chat != chat)) {
+ empathy_sound_play (GTK_WIDGET (priv->dialog),
+ EMPATHY_PREFS_SOUNDS_INCOMING_MESSAGE,
+ "message-new-instant", _("Received an instant message"));
}
}
diff --git a/src/empathy-main-window.c b/src/empathy-main-window.c
index 8a377d794..b95783f3a 100644
--- a/src/empathy-main-window.c
+++ b/src/empathy-main-window.c
@@ -27,7 +27,6 @@
#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>
@@ -284,12 +283,9 @@ main_window_flash_cb (EmpathyMainWindow *window)
static void
main_window_flash_start (EmpathyMainWindow *window)
{
- if (empathy_sound_pref_is_enabled (EMPATHY_PREFS_SOUNDS_NEW_CONVERSATION)) {
- ca_gtk_play_for_widget (GTK_WIDGET (window->window), 0,
- CA_PROP_EVENT_ID, "message-new-instant",
- CA_PROP_EVENT_DESCRIPTION, _("Incoming chat request"),
- NULL);
- }
+ empathy_sound_play (GTK_WIDGET (window->window),
+ EMPATHY_PREFS_SOUNDS_NEW_CONVERSATION,
+ "message-new-instant", _("Incoming chat request"));
if (window->flash_timeout_id != 0) {
return;
@@ -433,23 +429,18 @@ main_window_connection_changed_cb (EmpathyAccountManager *manager,
main_window_error_display (window, account, message);
}
- if (current == TP_CONNECTION_STATUS_DISCONNECTED &&
- empathy_sound_pref_is_enabled (EMPATHY_PREFS_SOUNDS_SERVICE_LOGOUT)) {
- ca_gtk_play_for_widget (GTK_WIDGET (window->window), 0,
- CA_PROP_EVENT_ID, "service-logout",
- CA_PROP_EVENT_DESCRIPTION, _("Disconnected from server"),
- NULL);
+ if (current == TP_CONNECTION_STATUS_DISCONNECTED) {
+ empathy_sound_play (GTK_WIDGET (window->window),
+ EMPATHY_PREFS_SOUNDS_SERVICE_LOGOUT,
+ "service-logout", _("Disconnected from server"));
}
if (current == TP_CONNECTION_STATUS_CONNECTED) {
GtkWidget *error_widget;
- if (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);
- }
+ empathy_sound_play (GTK_WIDGET (window->window),
+ EMPATHY_PREFS_SOUNDS_SERVICE_LOGIN,
+ "service-login", _("Connected to server"));
/* Account connected without error, remove error message if any */
error_widget = g_hash_table_lookup (window->errors, account);
@@ -479,23 +470,17 @@ main_window_contact_presence_changed_cb (EmpathyContactMonitor *monitor,
if (previous < MC_PRESENCE_AVAILABLE && current > MC_PRESENCE_OFFLINE) {
/* someone is logging in */
- if (empathy_sound_pref_is_enabled (EMPATHY_PREFS_SOUNDS_CONTACT_LOGIN)) {
- ca_gtk_play_for_widget (GTK_WIDGET (window->window), 0,
- CA_PROP_EVENT_ID, "service-login",
- CA_PROP_EVENT_DESCRIPTION, _("Contact logged in"),
- NULL);
- }
+ empathy_sound_play (GTK_WIDGET (window->window),
+ EMPATHY_PREFS_SOUNDS_CONTACT_LOGIN,
+ "service-login", _("Contact logged in"));
return;
}
if (previous > MC_PRESENCE_OFFLINE && current < MC_PRESENCE_AVAILABLE) {
/* someone is logging off */
- if (empathy_sound_pref_is_enabled (EMPATHY_PREFS_SOUNDS_CONTACT_LOGOUT)) {
- ca_gtk_play_for_widget (GTK_WIDGET (window->window), 0,
- CA_PROP_EVENT_ID, "service-logout",
- CA_PROP_EVENT_DESCRIPTION, _("Contact logged out"),
- NULL);
- }
+ empathy_sound_play (GTK_WIDGET (window->window),
+ EMPATHY_PREFS_SOUNDS_CONTACT_LOGOUT,
+ "service-logout", _("Contact logged out"));
}
}