pidgin/gtkdisco.c

changeset 26588
644d7d7ad292
parent 26587
09756ec8f6a5
child 26590
689f6f3b4d8a
--- a/pidgin/gtkdisco.c	Sun Mar 29 21:17:34 2009 +0000
+++ b/pidgin/gtkdisco.c	Mon Mar 30 00:42:15 2009 +0000
@@ -74,9 +74,13 @@
 static void register_button_cb(GtkButton *button, PidginDiscoDialog *dialog)
 {
 	struct _menu_cb_info *info = g_object_get_data(G_OBJECT(button), "disco-info");
-	PurpleConnection *gc = purple_account_get_connection(info->list->account);
+	PurpleAccount *account;
+	PurpleConnection *gc;
 
-	purple_disco_service_register(gc, info->service);
+	account = purple_disco_list_get_account(info->list);
+	gc = purple_account_get_connection(account);
+
+	purple_disco_service_register(info->service);
 }
 
 static void list_button_cb(GtkButton *button, PidginDiscoDialog *dialog)
@@ -92,25 +96,31 @@
 	
 	dialog->discolist = purple_disco_list_new(dialog->account, (void*) dialog);
 
-	purple_disco_get_list(gc, dialog->discolist);
+	purple_disco_get_list(dialog->discolist);
 }
 
 static void add_room_to_blist_cb(GtkButton *button, PidginDiscoDialog *dialog)
 {
 	struct _menu_cb_info *info = g_object_get_data(G_OBJECT(button), "disco-info");
+	PurpleAccount *account;
+	const char *name;
 
-	if (info) {
-		if (info->service->category == PURPLE_DISCO_SERVICE_CAT_MUC)
-			purple_blist_request_add_chat(info->list->account, NULL, NULL, info->service->name);
-		else
-			purple_blist_request_add_buddy(info->list->account, info->service->name, NULL, NULL);
-	}
+	g_return_if_fail(info != NULL);
+
+	account = purple_disco_list_get_account(info->list);
+	name = purple_disco_service_get_name(info->service);
+
+	if (purple_disco_service_get_category(info->service) == PURPLE_DISCO_SERVICE_CAT_MUC)
+		purple_blist_request_add_chat(account, NULL, NULL, name);
+	else
+		purple_blist_request_add_buddy(account, name, NULL, NULL);
 }
 
 static void
 selection_changed_cb(GtkTreeSelection *selection, PidginDiscoDialog *dialog) 
 {
 	PurpleDiscoService *service;
+	PurpleDiscoServiceFlags flags;
 	GtkTreeIter iter;
 	GValue val;
 	static struct _menu_cb_info *info;
@@ -132,8 +142,10 @@
 		g_object_set_data(G_OBJECT(dialog->add_button), "disco-info", info);
 		g_object_set_data(G_OBJECT(dialog->register_button), "disco-info", info);
 
-		gtk_widget_set_sensitive(dialog->add_button, service->flags & PURPLE_DISCO_FLAG_ADD);
-		gtk_widget_set_sensitive(dialog->register_button, service->flags & PURPLE_DISCO_FLAG_REGISTER);
+		flags = purple_disco_service_get_flags(service);
+
+		gtk_widget_set_sensitive(dialog->add_button, flags & PURPLE_DISCO_ADD);
+		gtk_widget_set_sensitive(dialog->register_button, flags & PURPLE_DISCO_REGISTER);
 	} else {
 		gtk_widget_set_sensitive(dialog->add_button, FALSE);
 		gtk_widget_set_sensitive(dialog->register_button, FALSE);
@@ -367,7 +379,9 @@
 static void
 pidgin_disco_create(PurpleDiscoList *list)
 {
-	PidginDiscoDialog *dialog = (PidginDiscoDialog *) list->ui_data;
+	PidginDiscoDialog *dialog;
+
+	dialog = purple_disco_list_get_ui_data(list);
 
 	dialog->cats = g_hash_table_new_full(NULL, NULL, NULL, (GDestroyNotify)gtk_tree_row_reference_free);
 }
@@ -376,14 +390,18 @@
 static void
 pidgin_disco_destroy(PurpleDiscoList *list)
 {
-	PidginDiscoDialog *dialog = (PidginDiscoDialog *) list->ui_data;
+	PidginDiscoDialog *dialog;
+	
+	dialog = purple_disco_list_get_ui_data(list);
 
 	g_hash_table_destroy(dialog->cats);
 }
 
 static void pidgin_disco_in_progress(PurpleDiscoList *list, gboolean in_progress)
 {
-	PidginDiscoDialog *dialog = (PidginDiscoDialog *) list->ui_data;
+	PidginDiscoDialog *dialog;
+	
+	dialog = purple_disco_list_get_ui_data(list);
 
 	if (!dialog)
 		return;
@@ -405,14 +423,18 @@
 
 static void pidgin_disco_add_service(PurpleDiscoList *list, PurpleDiscoService *service, PurpleDiscoService *parent)
 {
-	PidginDiscoDialog *dialog = (PidginDiscoDialog *) list->ui_data;
+	PidginDiscoDialog *dialog;
+	PurpleDiscoServiceCategory category;
+	PurpleDiscoServiceType type;
 	GtkTreeIter iter, parent_iter;
 	GtkTreeRowReference *rr;
 	GtkTreePath *path;
 	char *filename = NULL;
 	GdkPixbuf *pixbuf = NULL;
 
-	purple_debug_info("disco", "Add_service \"%s\"\n", service->name);
+	dialog = purple_disco_list_get_ui_data(list);
+
+	purple_debug_info("disco", "Add_service \"%s\"\n", purple_disco_service_get_name(service));
 
 	gtk_progress_bar_pulse(GTK_PROGRESS_BAR(dialog->progress));
 
@@ -426,28 +448,31 @@
 	}
 
 	gtk_tree_store_append(dialog->model, &iter, (parent ? &parent_iter : NULL));
-	
-	if (service->type == PURPLE_DISCO_SERVICE_TYPE_XMPP)
+
+	category = purple_disco_service_get_category(service);
+	type = purple_disco_service_get_type(service);
+
+	if (type == PURPLE_DISCO_SERVICE_TYPE_XMPP)
 		filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "protocols", "22", "jabber.png", NULL);
-	else if (service->type == PURPLE_DISCO_SERVICE_TYPE_ICQ)
+	else if (type == PURPLE_DISCO_SERVICE_TYPE_ICQ)
 		filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "protocols", "22", "icq.png", NULL);
-	else if (service->type == PURPLE_DISCO_SERVICE_TYPE_YAHOO)
+	else if (type == PURPLE_DISCO_SERVICE_TYPE_YAHOO)
 		filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "protocols", "22", "yahoo.png", NULL);
-	else if (service->type == PURPLE_DISCO_SERVICE_TYPE_GTALK)
+	else if (type == PURPLE_DISCO_SERVICE_TYPE_GTALK)
 		filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "protocols", "22", "google-talk.png", NULL);
-	else if (service->type == PURPLE_DISCO_SERVICE_TYPE_IRC)
+	else if (type == PURPLE_DISCO_SERVICE_TYPE_IRC)
 		filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "protocols", "22", "irc.png", NULL);
-	else if (service->type == PURPLE_DISCO_SERVICE_TYPE_GG)
+	else if (type == PURPLE_DISCO_SERVICE_TYPE_GG)
 		filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "protocols", "22", "gadu-gadu.png", NULL);
-	else if (service->type == PURPLE_DISCO_SERVICE_TYPE_AIM)
+	else if (type == PURPLE_DISCO_SERVICE_TYPE_AIM)
 		filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "protocols", "22", "aim.png", NULL);
-	else if (service->type == PURPLE_DISCO_SERVICE_TYPE_QQ)
+	else if (type == PURPLE_DISCO_SERVICE_TYPE_QQ)
 		filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "protocols", "22", "qq.png", NULL);
-	else if (service->type == PURPLE_DISCO_SERVICE_TYPE_MSN)
+	else if (type == PURPLE_DISCO_SERVICE_TYPE_MSN)
 		filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "protocols", "22", "msn.png", NULL);
-	else if (service->type == PURPLE_DISCO_SERVICE_TYPE_USER)
+	else if (type == PURPLE_DISCO_SERVICE_TYPE_USER)
 		filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "status", "22", "person.png", NULL);
-	else if (service->category == PURPLE_DISCO_SERVICE_CAT_MUC)
+	else if (category == PURPLE_DISCO_SERVICE_CAT_MUC)
 		filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "status", "22", "chat.png", NULL);
 
 	if (filename) {
@@ -457,8 +482,8 @@
 
 	gtk_tree_store_set(dialog->model, &iter,
 			PIXBUF_COLUMN, pixbuf,
-			NAME_COLUMN, service->name,
-			DESCRIPTION_COLUMN, service->description,
+			NAME_COLUMN, purple_disco_service_get_name(service),
+			DESCRIPTION_COLUMN, purple_disco_service_get_description(service),
 			SERVICE_COLUMN, service,
 			-1);
 

mercurial