changeset 2527:c9e316b04048

[gaim-migrate @ 2540] You can now specify which protocol to add buddies to. committer: Tailor Script <tailor@pidgin.im>
author Rob Flynn <gaim@robflynn.com>
date Thu, 18 Oct 2001 00:24:08 +0000
parents 413a81136e3a
children 7e6ba3250b04
files src/dialogs.c
diffstat 1 files changed, 67 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/dialogs.c	Wed Oct 17 20:24:11 2001 +0000
+++ b/src/dialogs.c	Thu Oct 18 00:24:08 2001 +0000
@@ -115,6 +115,7 @@
 	GtkWidget *combo;
 	GtkWidget *entry;
 	GtkWidget *entry_for_alias;
+	GtkWidget *account;
 	struct gaim_connection *gc;
 };
 
@@ -810,6 +811,59 @@
 	gtk_widget_show(a->window);
 }
 
+static void addbuddy_select_account(GtkObject *w, struct gaim_connection *gc)
+{
+	struct addbuddy *b = gtk_object_get_user_data(w);
+
+	b->gc = gc;
+}
+
+static void create_online_user_names(struct addbuddy *b)
+{
+	char buf[2048]; /* Never hurts to be safe ;-) */
+	GSList *g = connections;
+	struct gaim_connection *c;
+	GtkWidget *menu, *opt;
+	int count = 0;
+	int place = 0;
+
+	menu = gtk_menu_new();
+
+	while (g) {
+		c = (struct gaim_connection *)g->data;
+		g_snprintf(buf, sizeof(buf), "%s (%s)", 
+				c->username, (*c->prpl->name)());
+		opt = gtk_menu_item_new_with_label(buf);
+		gtk_object_set_user_data(GTK_OBJECT(opt), b);
+		gtk_signal_connect(GTK_OBJECT(opt), "activate",
+				GTK_SIGNAL_FUNC(addbuddy_select_account),
+				c);
+		gtk_widget_show(opt);
+		gtk_menu_append(GTK_MENU(menu), opt);
+
+		/* Now check to see if it's our current menu */
+		if (c == b->gc) {
+			place = count;
+			gtk_menu_item_activate(GTK_MENU_ITEM(opt));
+			gtk_option_menu_set_history(GTK_OPTION_MENU(b->account), count);
+
+			/* Do the cha cha cha */
+		}
+
+		count++;
+
+		g = g->next;
+	}
+
+	gtk_option_menu_remove_menu(GTK_OPTION_MENU(b->account));
+	gtk_option_menu_set_menu(GTK_OPTION_MENU(b->account), menu);
+	gtk_option_menu_set_history(GTK_OPTION_MENU(b->account), place);
+
+	gtk_widget_show(b->account);
+	gtk_widget_show(b->account->parent);
+
+}
+
 void show_add_buddy(struct gaim_connection *gc, char *buddy, char *group)
 {
 	GtkWidget *mainbox;
@@ -819,6 +873,7 @@
 	GtkWidget *cancel;
 	GtkWidget *add;
 	GtkWidget *label;
+	GList *tmp;
 
 	struct addbuddy *a = g_new0(struct addbuddy, 1);
 	a->gc = gc;
@@ -842,7 +897,7 @@
 	gtk_box_pack_start(GTK_BOX(mainbox), frame, TRUE, TRUE, 0);
 	gtk_widget_show(frame);
 
-	table = gtk_table_new(3, 2, FALSE);
+	table = gtk_table_new(3, 3, FALSE);
 	gtk_table_set_row_spacings(GTK_TABLE(table), 5);
 	gtk_table_set_col_spacings(GTK_TABLE(table), 5);
 	gtk_container_set_border_width(GTK_CONTAINER(table), 5);
@@ -873,6 +928,17 @@
 		gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(a->combo)->entry), group);
 	gtk_table_attach_defaults(GTK_TABLE(table), a->combo, 1, 2, 2, 3);
 
+	/* Set up stuff for the account box */
+	label = gtk_label_new(_("Add To"));
+	gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 3, 4);
+
+	a->account = gtk_option_menu_new();
+	gtk_table_attach_defaults(GTK_TABLE(table), a->account, 1, 2, 3, 4);
+
+	create_online_user_names(a);
+	
+	/* End of account box */
+
 	bbox = gtk_hbox_new(FALSE, 5);
 	gtk_box_pack_start(GTK_BOX(mainbox), bbox, TRUE, TRUE, 0);