diff src/prefs.c @ 4561:9df99116840a

[gaim-migrate @ 4842] This is the new sound subsystem Lots of stuff got renamed, and everything sound-wise is documented. Gaim now uses libaudiofile and libao to play sounds. Lots of ugly hacks were removed, and now we support playing audio through anything that libao will support. If you need to (you shouldn't) you can force libao to use a specific output driver, by putting a line into ~/.libao like: default_driver=esd You shouldn't need to do this, libao is pretty good at figuring out what driver to use. committer: Tailor Script <tailor@pidgin.im>
author Nathan Walp <nwalp@pidgin.im>
date Sun, 09 Feb 2003 01:55:35 +0000
parents eb32b3acef97
children 4b1e24835bbf
line wrap: on
line diff
--- a/src/prefs.c	Sun Feb 09 00:47:57 2003 +0000
+++ b/src/prefs.c	Sun Feb 09 01:55:35 2003 +0000
@@ -38,6 +38,7 @@
 #include "gaim.h"
 #include "prpl.h"
 #include "proxy.h"
+#include "sound.h"
 
 #ifdef _WIN32
 #include "win32dep.h"
@@ -957,7 +958,7 @@
 #ifndef _WIN32
 static gint sound_cmd_yeah(GtkEntry *entry, gpointer d)
 {
-	g_snprintf(sound_cmd, sizeof(sound_cmd), "%s", gtk_entry_get_text(GTK_ENTRY(sndcmd)));
+	gaim_sound_set_command(gtk_entry_get_text(GTK_ENTRY(sndcmd)));
 	return TRUE;
 }
 #endif
@@ -970,6 +971,7 @@
 	GtkWidget *dd;
 	GtkWidget *hbox;
 	GtkWidget *label;
+	char *cmd;
 #endif
 
 	ret = gtk_vbox_new(FALSE, 18);
@@ -984,19 +986,12 @@
 #ifndef _WIN32
 	vbox = make_frame (ret, _("Sound Method"));
 	dd = gaim_dropdown(vbox, _("_Method"), &sound_options, OPT_SOUND_BEEP |
-		      OPT_SOUND_ESD | OPT_SOUND_ARTSC | OPT_SOUND_NAS | OPT_SOUND_NORMAL |
+		      OPT_SOUND_NORMAL |
 		      OPT_SOUND_CMD,
 		      _("Console beep"), OPT_SOUND_BEEP,
-#ifdef ESD_SOUND
-		      "ESD", OPT_SOUND_ESD,
+#ifdef USE_AO
+		      _("Automatic"), OPT_SOUND_NORMAL,
 #endif
-#ifdef ARTSC_SOUND
-		      "ArtsC", OPT_SOUND_ARTSC,
-#endif
-#ifdef NAS_SOUND
-		      "NAS", OPT_SOUND_NAS,
-#endif
-		      _("Internal"), OPT_SOUND_NORMAL,
 		      _("Command"), OPT_SOUND_CMD, NULL);
 	gtk_size_group_add_widget(sg, dd);
 	gtk_misc_set_alignment(GTK_MISC(dd), 0, 0);
@@ -1015,7 +1010,9 @@
 	gtk_label_set_mnemonic_widget(GTK_LABEL(label), sndcmd);
 
 	gtk_entry_set_editable(GTK_ENTRY(sndcmd), TRUE);
-	gtk_entry_set_text(GTK_ENTRY(sndcmd), sound_cmd);
+	cmd = gaim_sound_get_command();
+	if(cmd)
+		gtk_entry_set_text(GTK_ENTRY(sndcmd), cmd);
 	gtk_widget_set_size_request(sndcmd, 75, -1);
 
 	gtk_widget_set_sensitive(sndcmd, (sound_options & OPT_SOUND_CMD));
@@ -1343,8 +1340,8 @@
 	gtk_tree_model_get_iter (model, &iter, path);
 	gtk_tree_model_get (model, &iter, 2, &soundnum, -1);
 
-	sound_options ^= sounds[soundnum].opt;
-	gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, sound_options & sounds[soundnum].opt, -1);
+	sound_options ^= gaim_sound_get_event_option(soundnum);
+	gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, sound_options & gaim_sound_get_event_option(soundnum), -1);
 
 	gtk_tree_path_free(path);
 }
@@ -1354,9 +1351,9 @@
 	guint32 tmp_sound = sound_options;
 	if (!(sound_options & OPT_SOUND_WHEN_AWAY))
 		sound_options ^= OPT_SOUND_WHEN_AWAY;
-	if (!(sound_options & sounds[sound_row_sel].opt))
-		sound_options ^= sounds[sound_row_sel].opt;
-	play_sound(sound_row_sel);
+	if (!(sound_options & gaim_sound_get_event_option(sound_row_sel)))
+		sound_options ^= gaim_sound_get_event_option(sound_row_sel);
+	gaim_sound_play_event(sound_row_sel);
 
 	sound_options = tmp_sound;
 }
@@ -1364,10 +1361,7 @@
 static void reset_sound(GtkWidget *button, gpointer i_am_also_NULL)
 {
 	/* This just resets a sound file back to default */
-	if (sound_file[sound_row_sel]) {
-		g_free(sound_file[sound_row_sel]);
-		sound_file[sound_row_sel] = NULL;
-	}
+	gaim_sound_set_event_file(sound_row_sel, NULL);
 
 	gtk_entry_set_text(GTK_ENTRY(sound_entry), "(default)");
 }
@@ -1397,22 +1391,18 @@
 	if (file_is_dir(file, sounddialog))
 		return;
 
-	/* Let's just be safe */
-	if (sound_file[snd])
-		g_free(sound_file[snd]);
-
 	/* Set it -- and forget it */
-	sound_file[snd] = g_strdup(file);
+	gaim_sound_set_event_file(snd, file);
 
 	/* Set our text entry */
-	gtk_entry_set_text(GTK_ENTRY(sound_entry), sound_file[snd]);
+	gtk_entry_set_text(GTK_ENTRY(sound_entry), file);
 
 	/* Close the window! It's getting cold in here! */
 	close_sounddialog(NULL, sounddialog);
 
 	if (last_sound_dir)
 		g_free(last_sound_dir);
-	last_sound_dir = g_dirname(sound_file[snd]);
+	last_sound_dir = g_dirname(file);
 }
 
 static void sel_sound(GtkWidget *button, gpointer being_NULL_is_fun)
@@ -1447,13 +1437,15 @@
 static void prefs_sound_sel (GtkTreeSelection *sel, GtkTreeModel *model) {
 	GtkTreeIter  iter;
 	GValue val = { 0, };
+	char *file;
 
 	if (! gtk_tree_selection_get_selected (sel, &model, &iter))
 		return;
 	gtk_tree_model_get_value (model, &iter, 2, &val);
 	sound_row_sel = g_value_get_uint(&val);
+	file = gaim_sound_get_event_file(sound_row_sel);
 	if (sound_entry)
-		gtk_entry_set_text(GTK_ENTRY(sound_entry), sound_file[sound_row_sel] ? sound_file[sound_row_sel] : "(default)");
+		gtk_entry_set_text(GTK_ENTRY(sound_entry), file ? file : "(default)");
 	g_value_unset (&val);
 	if (sounddialog)
 		gtk_widget_destroy(sounddialog);
@@ -1472,6 +1464,7 @@
 	GtkTreeSelection *sel;
 	GtkTreePath *path;
 	int j;
+	char *file;
 
 	ret = gtk_vbox_new(FALSE, 18);
 	gtk_container_set_border_width (GTK_CONTAINER (ret), 12);
@@ -1483,14 +1476,15 @@
 	gtk_box_pack_start(GTK_BOX(ret), sw, TRUE, TRUE, 0);
 	event_store = gtk_list_store_new (3, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_UINT);
 
-	for (j=0; j < NUM_SOUNDS; j++) {
-		if (sounds[j].opt == 0)
+	for (j=0; j < GAIM_NUM_SOUNDS; j++) {
+		guint opt = gaim_sound_get_event_option(j);
+		if (opt == 0)
 			continue;
 
 		gtk_list_store_append (event_store, &iter);
 		gtk_list_store_set(event_store, &iter,
-				   0, sound_options & sounds[j].opt,
-				   1, gettext(sounds[j].label),
+				   0, sound_options & opt,
+				   1, gettext(gaim_sound_get_event_label(j)),
 				   2, j, -1);
 	}
 
@@ -1525,7 +1519,8 @@
 	hbox = gtk_hbox_new(FALSE, 6);
 	gtk_box_pack_start(GTK_BOX(ret), hbox, FALSE, FALSE, 0);
 	sound_entry = gtk_entry_new();
-	gtk_entry_set_text(GTK_ENTRY(sound_entry), sound_file[0] ? sound_file[0] : "(default)");
+	file = gaim_sound_get_event_file(0);
+	gtk_entry_set_text(GTK_ENTRY(sound_entry), file ? file : "(default)");
 	gtk_entry_set_editable(GTK_ENTRY(sound_entry), FALSE);
 	gtk_box_pack_start(GTK_BOX(hbox), sound_entry, FALSE, FALSE, 5);