libpurple/protocols/gg/gg.c

branch
soc.2012.gg
changeset 33346
3b4cbb0e10d6
parent 33345
740174b22496
child 33347
cc3f8295618a
--- a/libpurple/protocols/gg/gg.c	Mon Aug 20 10:21:22 2012 +0200
+++ b/libpurple/protocols/gg/gg.c	Mon Aug 20 16:07:55 2012 +0200
@@ -168,143 +168,6 @@
 			gc);
 }
 
-/* ----- PUBLIC DIRECTORY SEARCH ---------------------------------------- */
-
-static void ggp_callback_show_next(PurpleConnection *gc, GList *row, gpointer user_data)
-{
-	GGPInfo *info = purple_connection_get_protocol_data(gc);
-	GGPSearchForm *form = user_data;
-	guint32 seq;
-
-	form->page_number++;
-
-	ggp_search_remove(info->searches, form->seq);
-	purple_debug_info("gg", "ggp_callback_show_next(): Removed seq %u\n",
-		form->seq);
-
-	seq = ggp_search_start(gc, form);
-	ggp_search_add(info->searches, seq, form);
-	purple_debug_info("gg", "ggp_callback_show_next(): Added seq %u\n",
-		seq);
-}
-
-static void ggp_callback_add_buddy(PurpleConnection *gc, GList *row, gpointer user_data)
-{
-	purple_blist_request_add_buddy(purple_connection_get_account(gc),
-				     g_list_nth_data(row, 0), NULL, NULL);
-}
-
-static void ggp_callback_im(PurpleConnection *gc, GList *row, gpointer user_data)
-{
-	PurpleAccount *account;
-	PurpleConversation *conv;
-	char *name;
-
-	account = purple_connection_get_account(gc);
-
-	name = g_list_nth_data(row, 0);
-	conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, name);
-	purple_conversation_present(conv);
-}
-
-static void ggp_callback_find_buddies(PurpleConnection *gc, PurpleRequestFields *fields)
-{
-	GGPInfo *info = purple_connection_get_protocol_data(gc);
-	GGPSearchForm *form;
-	guint32 seq;
-
-	form = ggp_search_form_new(GGP_SEARCH_TYPE_FULL);
-
-	form->user_data = info;
-	form->lastname = g_strdup(
-		purple_request_fields_get_string(fields, "lastname"));
-	form->firstname = g_strdup(
-		purple_request_fields_get_string(fields, "firstname"));
-	form->nickname = g_strdup(
-		purple_request_fields_get_string(fields, "nickname"));
-	form->city = g_strdup(
-		purple_request_fields_get_string(fields, "city"));
-	form->birthyear = g_strdup(
-		purple_request_fields_get_string(fields, "year"));
-
-	switch (purple_request_fields_get_choice(fields, "gender")) {
-		case 1:
-			form->gender = g_strdup(GG_PUBDIR50_GENDER_MALE);
-			break;
-		case 2:
-			form->gender = g_strdup(GG_PUBDIR50_GENDER_FEMALE);
-			break;
-		default:
-			form->gender = NULL;
-			break;
-	}
-
-	form->active = purple_request_fields_get_bool(fields, "active")
-				   ? g_strdup(GG_PUBDIR50_ACTIVE_TRUE) : NULL;
-
-	seq = ggp_search_start(gc, form);
-	ggp_search_add(info->searches, seq, form);
-	purple_debug_info("gg", "ggp_callback_find_buddies(): Added seq %u\n",
-		seq);
-}
-
-static void ggp_find_buddies(PurplePluginAction *action)
-{
-	PurpleConnection *gc = (PurpleConnection *)action->context;
-
-	PurpleRequestFields *fields;
-	PurpleRequestFieldGroup *group;
-	PurpleRequestField *field;
-
-	fields = purple_request_fields_new();
-	group = purple_request_field_group_new(NULL);
-	purple_request_fields_add_group(fields, group);
-
-	field = purple_request_field_string_new("lastname",
-			_("Last name"), NULL, FALSE);
-	purple_request_field_string_set_masked(field, FALSE);
-	purple_request_field_group_add_field(group, field);
-
-	field = purple_request_field_string_new("firstname",
-			_("First name"), NULL, FALSE);
-	purple_request_field_string_set_masked(field, FALSE);
-	purple_request_field_group_add_field(group, field);
-
-	field = purple_request_field_string_new("nickname",
-			_("Nickname"), NULL, FALSE);
-	purple_request_field_string_set_masked(field, FALSE);
-	purple_request_field_group_add_field(group, field);
-
-	field = purple_request_field_string_new("city",
-			_("City"), NULL, FALSE);
-	purple_request_field_string_set_masked(field, FALSE);
-	purple_request_field_group_add_field(group, field);
-
-	field = purple_request_field_string_new("year",
-			_("Year of birth"), NULL, FALSE);
-	purple_request_field_group_add_field(group, field);
-
-	field = purple_request_field_choice_new("gender", _("Gender"), 0);
-	purple_request_field_choice_add(field, _("Male or female"));
-	purple_request_field_choice_add(field, _("Male"));
-	purple_request_field_choice_add(field, _("Female"));
-	purple_request_field_group_add_field(group, field);
-
-	field = purple_request_field_bool_new("active",
-			_("Only online"), FALSE);
-	purple_request_field_group_add_field(group, field);
-
-	purple_request_fields(gc,
-		_("Find buddies"),
-		_("Find buddies"),
-		_("Please, enter your search criteria below"),
-		fields,
-		_("OK"), G_CALLBACK(ggp_callback_find_buddies),
-		_("Cancel"), NULL,
-		purple_connection_get_account(gc), NULL, NULL,
-		gc);
-}
-
 /* ----- CONFERENCES ---------------------------------------------------- */
 
 static void ggp_callback_add_to_chat_ok(PurpleBuddy *buddy, PurpleRequestFields *fields)
@@ -399,157 +262,6 @@
 /* ----- INTERNAL CALLBACKS --------------------------------------------- */
 /* ---------------------------------------------------------------------- */
 
-
-static void ggp_sr_close_cb(gpointer user_data)
-{
-	GGPSearchForm *form = user_data;
-	GGPInfo *info = form->user_data;
-
-	ggp_search_remove(info->searches, form->seq);
-	purple_debug_info("gg", "ggp_sr_close_cb(): Removed seq %u\n",
-		form->seq);
-	ggp_search_form_destroy(form);
-}
-
-static void ggp_pubdir_handle_full(PurpleConnection *gc, gg_pubdir50_t req,
-				   GGPSearchForm *form)
-{
-	PurpleNotifySearchResults *results;
-	PurpleNotifySearchColumn *column;
-	int res_count;
-	int start;
-	int i;
-
-	g_return_if_fail(form != NULL);
-
-	res_count = gg_pubdir50_count(req);
-	res_count = (res_count > PUBDIR_RESULTS_MAX) ? PUBDIR_RESULTS_MAX : res_count;
-	if (form->page_size == 0)
-		form->page_size = res_count;
-
-	results = purple_notify_searchresults_new();
-
-	if (results == NULL) {
-		purple_debug_error("gg", "ggp_pubdir_reply_handler: "
-				 "Unable to display the search results.\n");
-		purple_notify_error(gc, NULL,
-				  _("Unable to display the search results."),
-				  NULL);
-		if (form->window == NULL)
-			ggp_sr_close_cb(form);
-		return;
-	}
-
-	column = purple_notify_searchresults_column_new(_("UIN"));
-	purple_notify_searchresults_column_add(results, column);
-
-	column = purple_notify_searchresults_column_new(_("First Name"));
-	purple_notify_searchresults_column_add(results, column);
-
-	column = purple_notify_searchresults_column_new(_("Nickname"));
-	purple_notify_searchresults_column_add(results, column);
-
-	column = purple_notify_searchresults_column_new(_("City"));
-	purple_notify_searchresults_column_add(results, column);
-
-	column = purple_notify_searchresults_column_new(_("Birth Year"));
-	purple_notify_searchresults_column_add(results, column);
-
-	purple_debug_info("gg", "Going with %d entries\n", res_count);
-
-	start = (int)ggp_str_to_uin(gg_pubdir50_get(req, 0, GG_PUBDIR50_START));
-	purple_debug_info("gg", "start = %d\n", start);
-
-	for (i = 0; i < res_count; i++) {
-		GList *row = NULL;
-		char *birth = ggp_search_get_result(req, i, GG_PUBDIR50_BIRTHYEAR);
-
-		/* TODO: Status will be displayed as an icon. */
-		/* row = g_list_append(row, ggp_search_get_result(req, i, GG_PUBDIR50_STATUS)); */
-		row = g_list_append(row, ggp_search_get_result(req, i,
-							GG_PUBDIR50_UIN));
-		row = g_list_append(row, ggp_search_get_result(req, i,
-							GG_PUBDIR50_FIRSTNAME));
-		row = g_list_append(row, ggp_search_get_result(req, i,
-							GG_PUBDIR50_NICKNAME));
-		row = g_list_append(row, ggp_search_get_result(req, i,
-							GG_PUBDIR50_CITY));
-		row = g_list_append(row,
-			(birth && strncmp(birth, "0", 1)) ? birth : g_strdup("-"));
-
-		purple_notify_searchresults_row_add(results, row);
-	}
-
-	purple_notify_searchresults_button_add(results, PURPLE_NOTIFY_BUTTON_CONTINUE,
-					     ggp_callback_show_next);
-	purple_notify_searchresults_button_add(results, PURPLE_NOTIFY_BUTTON_ADD,
-					     ggp_callback_add_buddy);
-	purple_notify_searchresults_button_add(results, PURPLE_NOTIFY_BUTTON_IM,
-					     ggp_callback_im);
-
-	if (form->window == NULL) {
-		void *h = purple_notify_searchresults(gc,
-				_("Gadu-Gadu Public Directory"),
-				_("Search results"), NULL, results,
-				(PurpleNotifyCloseCallback)ggp_sr_close_cb,
-				form);
-
-		if (h == NULL) {
-			purple_debug_error("gg", "ggp_pubdir_reply_handler: "
-					 "Unable to display the search results.\n");
-			purple_notify_error(gc, NULL,
-					  _("Unable to display the search results."),
-					  NULL);
-			return;
-		}
-
-		form->window = h;
-	} else {
-		purple_notify_searchresults_new_rows(gc, results, form->window);
-	}
-}
-
-static void ggp_pubdir_reply_handler(PurpleConnection *gc, gg_pubdir50_t req)
-{
-	GGPInfo *info = purple_connection_get_protocol_data(gc);
-	GGPSearchForm *form;
-	int res_count;
-	guint32 seq;
-
-	seq = gg_pubdir50_seq(req);
-	form = ggp_search_get(info->searches, seq);
-	purple_debug_info("gg",
-		"ggp_pubdir_reply_handler(): seq %u --> form %p\n", seq, form);
-	/*
-	 * this can happen when user will request more results
-	 * and close the results window before they arrive.
-	 */
-	g_return_if_fail(form != NULL);
-
-	res_count = gg_pubdir50_count(req);
-	if (res_count < 1) {
-		purple_debug_info("gg", "GG_EVENT_PUBDIR50_SEARCH_REPLY: Nothing found\n");
-		purple_notify_error(gc, NULL,
-			_("No matching users found"),
-			_("There are no users matching your search criteria."));
-		if (form->window == NULL)
-			ggp_sr_close_cb(form);
-		return;
-	}
-
-	switch (form->search_type) {
-		case GGP_SEARCH_TYPE_INFO:
-			purple_debug_fatal("gg", "GG_EVENT_PUBDIR50_SEARCH_REPLY: Unexpected info\n");
-			break;
-		case GGP_SEARCH_TYPE_FULL:
-			ggp_pubdir_handle_full(gc, req, form);
-			break;
-		default:
-			purple_debug_warning("gg", "Unknown search_type!\n");
-			break;
-	}
-}
-
 /**
  * Dispatch a message received from a buddy.
  *
@@ -861,9 +573,6 @@
 		case GG_EVENT_STATUS60:
 			ggp_status_got_others(gc, ev);
 			break;
-		case GG_EVENT_PUBDIR50_SEARCH_REPLY:
-			ggp_pubdir_reply_handler(gc, ev->event.pubdir50);
-			break;
 		case GG_EVENT_TYPING_NOTIFICATION:
 			ggp_typing_notification_handler(gc, ev->event.typing_notification.uin,
 				ev->event.typing_notification.length);
@@ -1173,7 +882,6 @@
 	info->session = NULL;
 	info->chats = NULL;
 	info->chats_count = 0;
-	info->searches = ggp_search_new();
 	
 	purple_connection_set_protocol_data(gc, info);
 
@@ -1287,7 +995,6 @@
 		 */
 		purple_notify_close_with_handle(gc);
 
-		ggp_search_destroy(info->searches);
 		ggp_image_cleanup(gc);
 		ggp_avatar_cleanup(gc);
 		ggp_roster_cleanup(gc);
@@ -1589,19 +1296,9 @@
 	ggp_status_broadcasting_dialog((PurpleConnection *)action->context);
 }
 
-#include "pubdir-prpl.h"
-
-static void ggp_pubdir_debug_cb(PurpleConnection *gc, int records_count, const ggp_pubdir_record *records, void *user_data)
+static void ggp_action_search(PurplePluginAction *action)
 {
-	purple_debug_info("gg", "ggp_action_debug_got: [%d]\n", records_count);
-}
-
-static void ggp_action_debug(PurplePluginAction *action)
-{
-	PurpleConnection *gc = action->context;
-	purple_debug_info("gg", "ggp_action_debug\n");
-	
-	ggp_pubdir_get_info(gc, 5110, ggp_pubdir_debug_cb, NULL);
+	ggp_pubdir_search((PurpleConnection *)action->context, NULL);
 }
 
 static GList *ggp_actions(PurplePlugin *plugin, gpointer context)
@@ -1614,7 +1311,7 @@
 	m = g_list_append(m, act);
 
 	act = purple_plugin_action_new(_("Find buddies..."),
-				     ggp_find_buddies);
+		ggp_action_search);
 	m = g_list_append(m, act);
 
 	act = purple_plugin_action_new(_("Show status only for buddies"),
@@ -1631,9 +1328,6 @@
 				     ggp_action_buddylist_load);
 	m = g_list_append(m, act);
 
-	act = purple_plugin_action_new("Debug action", ggp_action_debug);
-	m = g_list_append(m, act);
-
 	return m;
 }
 

mercurial