changeset 19131:5da541d974a4

Fixed Cancel button callback Added ability to enable and disable event sounds. Still rather dirty, looking for a better way to do it still.
author Eric Polino <aluink@pidgin.im>
date Mon, 02 Jul 2007 05:22:56 +0000
parents d5a0b09470ee
children 1b942e21ec1b
files finch/gntsound.c
diffstat 1 files changed, 44 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/finch/gntsound.c	Mon Jul 02 01:29:01 2007 +0000
+++ b/finch/gntsound.c	Mon Jul 02 05:22:56 2007 +0000
@@ -51,6 +51,7 @@
 #include "gntcheckbox.h"
 #include "gntline.h"
 #include "gntslider.h"
+#include "gnttree.h"
 
 struct finch_sound_event {
 	char *label;
@@ -64,6 +65,7 @@
 	GntWidget *conv_focus;
 	GntWidget *while_status;
 	GntWidget *volume;
+	GntWidget *events;
 	GntWidget *window;
 } SoundPrefDialog;
 
@@ -572,15 +574,24 @@
 static void
 save_cb(GntWidget *button, gpointer win)
 {
+	gint i;
+
 	purple_prefs_set_string(FINCH_PREFS_ROOT "/sound/method", gnt_combo_box_get_selected_data(GNT_COMBO_BOX(pref_dialog->method)));
 	purple_prefs_set_path(FINCH_PREFS_ROOT "/sound/command", gnt_entry_get_text(GNT_ENTRY(pref_dialog->command)));
 	purple_prefs_set_bool(FINCH_PREFS_ROOT "/sound/conv_focus",gnt_check_box_get_checked(GNT_CHECK_BOX(pref_dialog->conv_focus)));
 	purple_prefs_set_int("/purple/sound/while_status",GPOINTER_TO_INT(gnt_combo_box_get_selected_data(GNT_COMBO_BOX(pref_dialog->while_status))));
 	purple_prefs_set_int(FINCH_PREFS_ROOT "/sound/volume",gnt_slider_get_value(GNT_SLIDER(pref_dialog->volume)));
 
+	for(i = 0;i < PURPLE_NUM_SOUNDS;i++){
+		const gchar * option = finch_sound_get_event_option(i);
+		gchar *pref =  g_strdup_printf(FINCH_PREFS_ROOT "/sound/enabled/%s",
+										option);
+		gboolean choice = gnt_tree_get_choice(GNT_TREE(pref_dialog->events),GINT_TO_POINTER(g_str_hash(option)));
+		purple_prefs_set_bool(pref,choice);
+		g_free(pref);
+	}
 	gnt_widget_destroy(GNT_WIDGET(win));
 }
-
 static void
 cancel_cb(GntWidget *button, gpointer win)
 {
@@ -604,9 +615,11 @@
 	GntWidget *chkbox;
 	GntWidget *button;
 	GntWidget *label;
+	GntWidget *tree;
 	GntWidget *win;
 
 	gchar *buf;
+	gint i;
 
 	if(pref_dialog){
 		gnt_window_present(pref_dialog->window);
@@ -691,7 +704,35 @@
 	gnt_box_add_widget(GNT_BOX(win), gnt_line_new(FALSE));
 
 	gnt_box_add_widget(GNT_BOX(win),gnt_label_new_with_format(_("Sound Events"),GNT_TEXT_FLAG_BOLD)); 
-	/* Put events tree here */
+
+	pref_dialog->events = tree = gnt_tree_new_with_columns(1);
+	gnt_tree_set_column_titles(GNT_TREE(tree),_("Play"),_("Event"));
+	gnt_tree_set_show_title(GNT_TREE(tree),TRUE);
+	fprintf(stderr,"got here\n");
+
+	for(i = 0;i < PURPLE_NUM_SOUNDS;i++){
+		const gchar *option = finch_sound_get_event_option(i);
+		gchar *pref =  g_strdup_printf(FINCH_PREFS_ROOT "/sound/enabled/%s",
+										option);
+		const gchar *label = finch_sound_get_event_label(i);
+
+		gnt_tree_add_choice(GNT_TREE(tree), GINT_TO_POINTER(g_str_hash(option)),
+			gnt_tree_create_row(GNT_TREE(tree),_(label)),
+			NULL, NULL);
+		gnt_tree_set_choice(GNT_TREE(tree),GINT_TO_POINTER(g_str_hash(option)),purple_prefs_get_bool(pref));
+		g_free(pref);
+	}
+
+	gnt_box_add_widget(GNT_BOX(win),tree);
+
+	box = gnt_hbox_new(TRUE);
+	button = gnt_button_new("Test");
+	gnt_box_add_widget(GNT_BOX(box),button);
+	button = gnt_button_new("Reset");
+	gnt_box_add_widget(GNT_BOX(box),button);
+	button = gnt_button_new("Choose...");
+	gnt_box_add_widget(GNT_BOX(box),button);
+	gnt_box_add_widget(GNT_BOX(win),box);
 
 	box = gnt_hbox_new(TRUE);
 	gnt_box_set_pad(GNT_BOX(box),0);
@@ -700,7 +741,7 @@
 	g_signal_connect(G_OBJECT(button),"activate",G_CALLBACK(save_cb),win);
 	gnt_box_add_widget(GNT_BOX(box),button);
 	button = gnt_button_new("Cancel");
-	g_signal_connect(G_OBJECT(button),"activate",G_CALLBACK(cancel_cb),NULL);
+	g_signal_connect(G_OBJECT(button),"activate",G_CALLBACK(cancel_cb),win);
 	gnt_box_add_widget(GNT_BOX(box),button);
 	gnt_box_add_widget(GNT_BOX(win),box);