changeset 3326:03daf01a8000

[gaim-migrate @ 3344] Easier ordering of sounds. See patch "[ 560514 ] changable ordering of sounds in prefs" for a more complete explanation. (Thanks, Robert McQueen) committer: Tailor Script <tailor@pidgin.im>
author Jim Seymour <jseymour>
date Tue, 18 Jun 2002 00:49:55 +0000
parents a6367446950d
children 220c9f1fc75e
files src/gaim.h src/prefs.c src/sound.c
diffstat 3 files changed, 27 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/src/gaim.h	Tue Jun 18 00:35:23 2002 +0000
+++ b/src/gaim.h	Tue Jun 18 00:49:55 2002 +0000
@@ -297,6 +297,9 @@
 #define SND_POUNCE_DEFAULT 9
 #define SND_CHAT_NICK 10
 #define NUM_SOUNDS 11
+/* these two for the sound_order list in prefs.c */
+#define SND_SEPARATOR -1
+#define SND_END -2
 extern char *sound_file[NUM_SOUNDS];
 
 /* global sound struct */
--- a/src/prefs.c	Tue Jun 18 00:35:23 2002 +0000
+++ b/src/prefs.c	Tue Jun 18 00:49:55 2002 +0000
@@ -1603,6 +1603,17 @@
 	GtkWidget *menu;
 	GtkWidget *opt;
 	int i=1, driver=0, j;
+	/* order that sound options are presented in, SND_SEPARATOR for  *
+         * a seperator. better to do it this way than try and re-order   *
+         * the sound defines 'cause that would mux up the sound prefs in *
+         * gaimrc. this list is terminated with SND_END.       -Robot101 */
+	int sound_order[] = {
+		SND_BUDDY_ARRIVE, SND_BUDDY_LEAVE, SND_SEPARATOR,
+		SND_FIRST_RECEIVE, SND_RECEIVE, SND_SEND, SND_SEPARATOR,
+		SND_CHAT_JOIN, SND_CHAT_LEAVE,
+		SND_CHAT_YOU_SAY, SND_CHAT_SAY, SND_CHAT_NICK,
+		SND_END
+	};
 
 	parent = prefdialog->parent;
 	gtk_widget_destroy(prefdialog);
@@ -1745,19 +1756,17 @@
 	gtk_container_add(GTK_CONTAINER(frame), vbox);
 	gtk_widget_show(vbox);
 
-	for (j=0; j < NUM_SOUNDS; j++) {
-		/* no entry for sounds without an option */
-		if (sounds[j].opt == 0)
-			continue;
-
-		/* seperators before SND_RECEIVE and SND_CHAT_JOIN */
-		if ((j == SND_RECEIVE) || (j == SND_CHAT_JOIN)) {
+	for (j=0; sound_order[j] != SND_END; j++) {
+		if (sound_order[j] == SND_SEPARATOR) {
 			sep = gtk_hseparator_new();
 			gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 5);
 			gtk_widget_show(sep);
+		} else {
+			/* no entry for sounds without an option */
+			if (sounds[sound_order[j]].opt == 0)
+				continue;
+			sound_entry(vbox, sound_order[j]);
 		}
-
-		sound_entry(vbox, j);
 	}
 
 	gtk_widget_show(prefdialog);
--- a/src/sound.c	Tue Jun 18 00:35:23 2002 +0000
+++ b/src/sound.c	Tue Jun 18 00:49:55 2002 +0000
@@ -52,12 +52,13 @@
 #include "sounds/Receive.h"
 #include "sounds/RedAlert.h"
 
-
 gboolean mute_sounds = 0;
 
-/* label and opt are null for the buddy pounce because it's configured *
- * per pounce. NULL option means it doesn't get displayed in the sound *
- * preferences box */
+/* description, option bit, default sound array, and it's size.   *
+ * if you want it to get displayed in the prefs dialog, it needs  *
+ * to be added to the sound_order array in prefs.c, if not, and   *
+ * it has no option bit, set it to 0. the order here has to match *
+ * the defines in gaim.h.                               -Robot101 */
 struct sound_struct sounds[NUM_SOUNDS] = {
 	{N_("Buddy logs in"), OPT_SOUND_LOGIN, BuddyArrive, sizeof(BuddyArrive)},
 	{N_("Buddy logs out"), OPT_SOUND_LOGOUT, BuddyLeave, sizeof(BuddyLeave)},
@@ -68,6 +69,7 @@
 	{N_("Person leaves chat"), OPT_SOUND_CHAT_PART, BuddyLeave, sizeof(BuddyLeave)},
 	{N_("You talk in chat"), OPT_SOUND_CHAT_YOU_SAY, Send, sizeof(Send)},
 	{N_("Others talk in chat"), OPT_SOUND_CHAT_SAY, Receive, sizeof(Receive)},
+	/* this isn't a terminator, it's the buddy pounce default sound event ;-) */
 	{NULL, 0, RedAlert, sizeof(RedAlert)},
 	{N_("Someone says your name in chat"), OPT_SOUND_CHAT_NICK, Receive, sizeof(Receive)}
 };