src/gtkblist.c

changeset 10074
4fab99572bf1
parent 10046
7e9175ee9b63
child 10079
d4eaff5517fb
--- a/src/gtkblist.c	Sat Oct 02 15:28:03 2004 +0000
+++ b/src/gtkblist.c	Sat Oct 02 18:53:19 2004 +0000
@@ -48,6 +48,7 @@
 #include "gtkprefs.h"
 #include "gtkprivacy.h"
 #include "gtkroomlist.h"
+#include "gtksound.h"
 #include "gtkutils.h"
 
 #include "gaim.h"
@@ -1540,6 +1541,27 @@
 	}
 }
 
+static void gaim_gtk_blist_mute_sounds_cb(gpointer data, guint action, GtkWidget *item)
+{
+	gaim_prefs_set_bool("/gaim/gtk/sound/mute", GTK_CHECK_MENU_ITEM(item)->active);
+}
+
+static void gaim_gtk_blist_mute_pref_cb(const char *name, GaimPrefType type, gpointer value, gpointer data)
+{
+	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item(gtkblist->ift,
+						N_("/Tools/Mute Sounds"))),	(gboolean)GPOINTER_TO_INT(value));
+}
+
+static void gaim_gtk_blist_sound_method_pref_cb(const char *name, GaimPrefType type, gpointer value, gpointer data)
+{
+	gboolean sensitive = TRUE;
+
+	if(!strcmp(value, "none"))
+		sensitive = FALSE;
+
+	gtk_widget_set_sensitive(gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Mute Sounds")), sensitive);
+}
+
 static void
 add_buddies_from_vcard(const char *prpl_id, GaimGroup *group, GList *list,
 					   const char *alias)
@@ -2423,6 +2445,7 @@
 	{ N_("/Tools/R_oom List"), NULL, gaim_gtk_roomlist_dialog_show, 0, NULL },
 	{ N_("/Tools/Pr_eferences"), "<CTL>P", gaim_gtk_prefs_show, 0, "<StockItem>", GTK_STOCK_PREFERENCES },
 	{ N_("/Tools/Pr_ivacy"), NULL, gaim_gtk_privacy_dialog_show, 0, NULL },
+	{ N_("/Tools/Mute _Sounds"), "<CTL>S", gaim_gtk_blist_mute_sounds_cb, 0, "<CheckItem>"},
 	{ "/Tools/sep2", NULL, NULL, 0, "<Separator>" },
 	{ N_("/Tools/View System _Log"), NULL, gtk_blist_show_systemlog_cb, 0, NULL },
 
@@ -3299,6 +3322,10 @@
 			gaim_prefs_get_bool("/gaim/gtk/blist/show_offline_buddies"));
 	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Buddies/Show Empty Groups"))),
 			gaim_prefs_get_bool("/gaim/gtk/blist/show_empty_groups"));
+	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Tools/Mute Sounds"))),
+			gaim_prefs_get_bool("/gaim/gtk/sound/mute"));
+	if(!strcmp(gaim_prefs_get_string("/gaim/gtk/sound/method"), "none"))
+		gtk_widget_set_sensitive(gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Mute Sounds")), FALSE); 
 
 	/* OK... let's show this bad boy. */
 	gaim_gtk_blist_refresh(list);
@@ -3423,6 +3450,16 @@
 				gaim_prefs_connect_callback("/gaim/gtk/blist/show_warning_level",
 					gaim_gtk_blist_update_columns, NULL)));
 
+	/* menus */
+	blist_prefs_callbacks = g_slist_prepend(blist_prefs_callbacks,
+			GINT_TO_POINTER(
+				gaim_prefs_connect_callback("/gaim/gtk/sound/mute",
+					gaim_gtk_blist_mute_pref_cb, NULL)));
+	blist_prefs_callbacks = g_slist_prepend(blist_prefs_callbacks,
+			GINT_TO_POINTER(
+				gaim_prefs_connect_callback("/gaim/gtk/sound/method",
+					gaim_gtk_blist_sound_method_pref_cb, NULL)));
+
 	/* Setup some gaim signal handlers. */
 	gaim_signal_connect(gaim_connections_get_handle(), "signed-on",
 						gtkblist, GAIM_CALLBACK(sign_on_off_cb), list);

mercurial