diff src/dialogs.c @ 832:0142b4c66394

[gaim-migrate @ 842] redesigned the away messages page committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Sat, 02 Sep 2000 10:41:53 +0000
parents 9108277c95e9
children 113205ae7e72
line wrap: on
line diff
--- a/src/dialogs.c	Sat Sep 02 09:02:47 2000 +0000
+++ b/src/dialogs.c	Sat Sep 02 10:41:53 2000 +0000
@@ -82,6 +82,7 @@
         GtkWidget *entry;
         GtkWidget *text;
         GtkWidget *checkbx;
+	struct away_message *mess;
 };
 
 
@@ -2815,7 +2816,10 @@
 	guint text_len;
 	gchar *away_message;
 	
-	am = g_new0(struct away_message, 1);
+	if (!ca->mess)
+		am = g_new0(struct away_message, 1);
+	else
+		am = ca->mess;
 	g_snprintf(am->name, sizeof(am->name), "%s", gtk_entry_get_text(GTK_ENTRY(ca->entry)));
 	text_len = gtk_text_get_length(GTK_TEXT(ca->text));
 	away_message = gtk_editable_get_chars(GTK_EDITABLE(ca->text), 0, text_len);
@@ -2823,50 +2827,22 @@
 	g_snprintf(am->message, sizeof(am->message), "%s", away_message);
 	g_free(away_message);
 
-	away_messages = g_list_append(away_messages, am);
+	if (!ca->mess) {
+		away_messages = g_list_append(away_messages, am);
+		if (GTK_TOGGLE_BUTTON(ca->checkbx)->active)
+			do_away_message(NULL, am);
+	}
+
 	save_prefs();
 	do_away_menu();	
+	if (prefs_away_list != NULL)
+		gtk_list_select_item(GTK_LIST(prefs_away_list), g_list_index(away_messages, am));
 	
 	destroy_dialog(NULL, ca->window);
 	
 	return;
 }
 	
-void create_mess(GtkWidget *widget, struct create_away *ca)
-{
-        struct away_message *b;
-	gchar  *away_message;
-	guint  text_len;
-	int    is_checked;
-
-	/* Grab the appropriate data */       
-	b = g_new0(struct away_message, 1);
-	g_snprintf(b->name, sizeof(b->name), "%s", gtk_entry_get_text(GTK_ENTRY(ca->entry)));
-
-	/* Get proper Length */
-	text_len = gtk_text_get_length(GTK_TEXT(ca->text));
-	away_message = gtk_editable_get_chars(GTK_EDITABLE(ca->text), 0, text_len);
-
-	g_snprintf(b->message, sizeof(b->message), "%s", away_message);
-	g_free(away_message);
-	is_checked = GTK_TOGGLE_BUTTON(ca->checkbx)->active;
-	
-	if (is_checked) {
-                away_messages = g_list_append(away_messages, b);
-                save_prefs();
-                do_away_menu();
-                if (prefs_away_list != NULL)
-                        gtk_list_select_item(GTK_LIST(prefs_away_list), g_list_index(away_messages, b));
-	}
-
-	/* stick it on the away list */
-	if (!strlen(b->name))
-		g_snprintf(b->name, sizeof(b->name), "I'm away!");
-	do_away_message(NULL, b);
-        
-        destroy_dialog(NULL, ca->window);
-}
-
 void create_away_mess(GtkWidget *widget, void *dummy)
 {
 	GtkWidget *bbox;
@@ -2925,22 +2901,8 @@
 	gtk_widget_show(ca->text);
 	gtk_box_pack_start(GTK_BOX(bbox), sw, TRUE, TRUE, 5);   
 
-	/* Checkbox for showing away msg */
-	ca->checkbx = gtk_check_button_new_with_label(_("Save for later use"));
-
-	if (!dummy) /* this only exits if we're comming from the prefs dialog */
-	{
-		gtk_widget_show(ca->checkbx);
-		
-		button = picture_button(ca->window, _("Away"), save_xpm);
-		gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(create_mess), ca);
-		
-	}
-	else
-	{
-		button = picture_button(ca->window, _("Save"), save_xpm);
-		gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(save_away_mess), ca);
-	}
+	button = picture_button(ca->window, _("Save"), save_xpm);
+	gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(save_away_mess), ca);
 
 	gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 5);
 	
@@ -2951,7 +2913,6 @@
 	/* pack boxes where they belong */
 	gtk_box_pack_start(GTK_BOX(fbox), titlebox, TRUE, TRUE, 5);
 	gtk_box_pack_start(GTK_BOX(fbox), bbox, TRUE, TRUE, 5);
-	gtk_box_pack_start(GTK_BOX(fbox), ca->checkbx, TRUE, TRUE, 5);
 	gtk_container_add(GTK_CONTAINER(frame), fbox);
 	gtk_container_set_border_width(GTK_CONTAINER(frame), 5);
 	gtk_box_pack_start(GTK_BOX(tbox), frame, TRUE, TRUE, 0);
@@ -2959,9 +2920,21 @@
 	
 	gtk_container_add(GTK_CONTAINER(ca->window), tbox);
 
+	if (dummy && GTK_LIST(prefs_away_list)->selection) {
+		GtkWidget *item = GTK_LIST(prefs_away_list)->selection->data;
+		struct away_message *amt = gtk_object_get_user_data(GTK_OBJECT(item));
+		int pos = 0;
+		gtk_entry_set_text(GTK_ENTRY(ca->entry), amt->name);
+		gtk_editable_insert_text(GTK_EDITABLE(ca->text), amt->message, strlen(amt->message), &pos);
+		ca->mess = amt;
+	} else {
+		/* Checkbox for showing away msg */
+		ca->checkbx = gtk_check_button_new_with_label(_("Make Away Now"));
+		gtk_box_pack_start(GTK_BOX(fbox), ca->checkbx, TRUE, TRUE, 5);
+		gtk_widget_show(ca->checkbx);
+	}
+
 	/* let the world see what we have done. */
-	if (!dummy)
-		gtk_widget_show(ca->checkbx);
 	gtk_widget_show(label);
 	gtk_widget_show(ca->entry);
 	gtk_widget_show(titlebox);