aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy-gtk
diff options
context:
space:
mode:
Diffstat (limited to 'libempathy-gtk')
-rw-r--r--libempathy-gtk/empathy-ui-utils.c47
-rw-r--r--libempathy-gtk/empathy-ui-utils.h18
2 files changed, 56 insertions, 9 deletions
diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c
index f937ce110..7c125a57b 100644
--- a/libempathy-gtk/empathy-ui-utils.c
+++ b/libempathy-gtk/empathy-ui-utils.c
@@ -1493,6 +1493,36 @@ empathy_send_file_with_file_chooser (EmpathyContact *contact)
gtk_widget_show (widget);
}
+typedef struct {
+ EmpathySound sound_id;
+ const char * event_ca_id;
+ const char * event_ca_description;
+ const char * gconf_key;
+} EmpathySoundEntry;
+
+static EmpathySoundEntry sound_entries[LAST_EMPATHY_SOUND] = {
+ { EMPATHY_SOUND_MESSAGE_INCOMING, "message-new-instant",
+ N_("Received an instant message"), EMPATHY_PREFS_SOUNDS_INCOMING_MESSAGE } ,
+ { EMPATHY_SOUND_MESSAGE_OUTGOING, "message-sent-instant",
+ N_("Sent an instant message"), EMPATHY_PREFS_SOUNDS_OUTGOING_MESSAGE } ,
+ { EMPATHY_SOUND_CONVERSATION_NEW, "message-new-instant",
+ N_("Incoming chat request"), EMPATHY_PREFS_SOUNDS_NEW_CONVERSATION },
+ { EMPATHY_SOUND_CONTACT_CONNECTED, "service-login",
+ N_("Contact connected"), EMPATHY_PREFS_SOUNDS_CONTACT_LOGIN },
+ { EMPATHY_SOUND_CONTACT_DISCONNECTED, "service-logout",
+ N_("Contact disconnected"), EMPATHY_PREFS_SOUNDS_CONTACT_LOGOUT },
+ { EMPATHY_SOUND_ACCOUNT_CONNECTED, "service-login",
+ N_("Connected to server"), EMPATHY_PREFS_SOUNDS_SERVICE_LOGIN },
+ { EMPATHY_SOUND_ACCOUNT_DISCONNECTED, "service-logout",
+ N_("Disconnected from server"), EMPATHY_PREFS_SOUNDS_SERVICE_LOGOUT },
+ { EMPATHY_SOUND_PHONE_INCOMING, "phone-incoming-call",
+ N_("Incoming voice call"), NULL },
+ { EMPATHY_SOUND_PHONE_OUTGOING, "phone-outgoing-calling",
+ N_("Outgoing voice call"), NULL },
+ { EMPATHY_SOUND_PHONE_HANGUP, "phone-hangup",
+ N_("Voice call ended"), NULL },
+};
+
static gboolean
empathy_sound_pref_is_enabled (const char *key)
{
@@ -1530,14 +1560,19 @@ empathy_sound_pref_is_enabled (const char *key)
void
empathy_sound_play (GtkWidget *widget,
- const char *key,
- const char *event_id,
- const char *description)
+ EmpathySound sound_id)
{
- if (empathy_sound_pref_is_enabled (key)) {
+ EmpathySoundEntry *entry = &(sound_entries[sound_id]);
+ gboolean should_play = TRUE;
+
+ if (entry->gconf_key != NULL) {
+ should_play = empathy_sound_pref_is_enabled (entry->gconf_key);
+ }
+
+ if (should_play) {
ca_gtk_play_for_widget (widget, 0,
- CA_PROP_EVENT_ID, event_id,
- CA_PROP_EVENT_DESCRIPTION, description,
+ CA_PROP_EVENT_ID, entry->event_ca_id,
+ CA_PROP_EVENT_DESCRIPTION, entry->event_ca_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 285b66452..0ed291af7 100644
--- a/libempathy-gtk/empathy-ui-utils.h
+++ b/libempathy-gtk/empathy-ui-utils.h
@@ -44,6 +44,20 @@
G_BEGIN_DECLS
+typedef enum {
+ EMPATHY_SOUND_MESSAGE_INCOMING,
+ EMPATHY_SOUND_MESSAGE_OUTGOING,
+ EMPATHY_SOUND_CONVERSATION_NEW,
+ EMPATHY_SOUND_CONTACT_CONNECTED,
+ EMPATHY_SOUND_CONTACT_DISCONNECTED,
+ EMPATHY_SOUND_ACCOUNT_CONNECTED,
+ EMPATHY_SOUND_ACCOUNT_DISCONNECTED,
+ EMPATHY_SOUND_PHONE_INCOMING,
+ EMPATHY_SOUND_PHONE_OUTGOING,
+ EMPATHY_SOUND_PHONE_HANGUP,
+ LAST_EMPATHY_SOUND
+} EmpathySound;
+
#define G_STR_EMPTY(x) ((x) == NULL || (x)[0] == '\0')
void empathy_gtk_init (void);
@@ -116,9 +130,7 @@ void empathy_send_file_with_file_chooser (EmpathyContact *conta
/* Sounds */
void empathy_sound_play (GtkWidget *widget,
- const char *key,
- const char *event_id,
- const char *description);
+ EmpathySound sound_id);
G_END_DECLS