src/gtkconv.c

changeset 12594
8848fcf3a39c
parent 12579
2cca132d1426
child 12600
7ecd4441fdc7
--- a/src/gtkconv.c	Wed Dec 21 07:27:04 2005 +0000
+++ b/src/gtkconv.c	Wed Dec 21 07:59:45 2005 +0000
@@ -2570,10 +2570,60 @@
 	return _((char *)path);
 }
 
+static void
+sound_method_pref_changed_cb(const char *name, GaimPrefType type, gpointer value, gpointer data)
+{
+	GaimGtkWindow *win = data;
+	const char *method = value;
+
+	if (!strcmp(method, "none"))
+	{
+		gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.sounds),
+		                               FALSE);
+		gtk_widget_set_sensitive(win->menu.sounds, FALSE);
+	}
+	else
+	{
+		GaimGtkConversation *gtkconv = gaim_gtk_conv_window_get_active_gtkconv(win);
+
+		if (gtkconv != NULL)
+			gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.sounds),
+			                               TRUE);
+		gtk_widget_set_sensitive(win->menu.sounds, TRUE);
+
+	}
+}
+
+static void
+show_buddy_icons_pref_changed_cb(const char *name, GaimPrefType type, gpointer value, gpointer data)
+{
+	GaimGtkWindow *win = data;
+	gboolean show_icons = GPOINTER_TO_INT(value);
+
+	if (!show_icons)
+	{
+		gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.show_icon),
+		                               FALSE);
+		gtk_widget_set_sensitive(win->menu.show_icon, FALSE);
+	}
+	else
+	{
+		GaimGtkConversation *gtkconv = gaim_gtk_conv_window_get_active_gtkconv(win);
+
+		if (gtkconv != NULL)
+			gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.show_icon),
+			                               TRUE);
+		gtk_widget_set_sensitive(win->menu.show_icon, TRUE);
+
+	}
+}
+
+
 static GtkWidget *
 setup_menubar(GaimGtkWindow *win)
 {
 	GtkAccelGroup *accel_group;
+	const char *method;
 
 	accel_group = gtk_accel_group_new ();
 	gtk_window_add_accel_group(GTK_WINDOW(win->window), accel_group);
@@ -2656,6 +2706,16 @@
 	win->menu.sounds =
 		gtk_item_factory_get_widget(win->menu.item_factory,
 		                            N_("/Options/Enable Sounds"));
+	method = gaim_prefs_get_string("/gaim/gtk/sound/method");
+	if (!strcmp(method, "none"))
+	{
+		gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.sounds),
+		                               FALSE);
+		gtk_widget_set_sensitive(win->menu.sounds, FALSE);
+	}
+	gaim_prefs_connect_callback(win, "/gaim/gtk/sound/method",
+				    sound_method_pref_changed_cb, win);
+
 	win->menu.show_formatting_toolbar =
 		gtk_item_factory_get_widget(win->menu.item_factory,
 		                            N_("/Options/Show Formatting Toolbars"));
@@ -2665,7 +2725,14 @@
 	win->menu.show_icon =
 		gtk_item_factory_get_widget(win->menu.item_factory,
 		                            N_("/Options/Show Buddy Icon"));
-
+	if (!gaim_prefs_get_bool("/gaim/gtk/conversations/im/show_buddy_icons"))
+	{
+		gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.show_icon),
+		                               FALSE);
+		gtk_widget_set_sensitive(win->menu.show_icon, FALSE);
+	}
+	gaim_prefs_connect_callback(win, "/gaim/gtk/conversations/im/show_buddy_icons",
+				    show_buddy_icons_pref_changed_cb, win);
 
 	win->menu.tray = gaim_gtk_menu_tray_new();
 	gtk_menu_shell_append(GTK_MENU_SHELL(win->menu.menubar),
@@ -6713,6 +6780,7 @@
 	GaimGtkWindow *win;
 	GaimConversation *conv;
 	GaimGtkConversation *gtkconv;
+	const char *sound_method;
 
 	win = user_data;
 	gtkconv = gaim_gtk_conv_window_get_gtkconv_at_index(win, page_num);
@@ -6735,8 +6803,10 @@
 
 	gaim_gtkconv_switch_active_conversation(conv);
 
-	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.sounds),
-	                               gtkconv->make_sound);
+	sound_method = gaim_prefs_get_string("/gaim/gtk/sound/method");
+	if (strcmp(sound_method, "none") != 0)
+		gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.sounds),
+		                               gtkconv->make_sound);
 
 	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.show_formatting_toolbar),
 	                               gaim_prefs_get_bool("/gaim/gtk/conversations/show_formatting_toolbar"));
@@ -6744,9 +6814,12 @@
 	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.show_timestamps),
 	                               gaim_prefs_get_bool("/gaim/gtk/conversations/show_timestamps"));
 
-	if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM)
+	if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM &&
+	    gaim_prefs_get_bool("/gaim/gtk/conversations/im/show_buddy_icons"))
+	{
 		gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(win->menu.show_icon),
 		                               gtkconv->u.im->show_icon);
+	}
 
 	/*
 	 * We pause icons when they are not visible.  If this icon should
@@ -6843,6 +6916,7 @@
 void
 gaim_gtk_conv_window_destroy(GaimGtkWindow *win)
 {
+	gaim_prefs_disconnect_by_handle(win);
 	window_list = g_list_remove(window_list, win);
 
 	if (win->gtkconvs) {

mercurial