/soc/2012/tomkiewicz/gg: 3b4cbb0e10d6: Gadu-Gadu: public directo...

Tomasz Wasilczyk tomkiewicz at cpw.pidgin.im
Mon Aug 20 10:08:44 EDT 2012


Changeset: 3b4cbb0e10d6a061c75f13cd34a191fda4eb95ab
Author:	 Tomasz Wasilczyk <tomkiewicz at cpw.pidgin.im>
Date:	 2012-08-20 16:07 +0200
Branch:	 soc.2012.gg
URL: http://hg.pidgin.im/soc/2012/tomkiewicz/gg/rev/3b4cbb0e10d6

Description:

Gadu-Gadu: public directory search with gg10.5 api

diffstat:

 libpurple/protocols/gg/Makefile.am   |    2 -
 libpurple/protocols/gg/gg.c          |  312 +------------------------
 libpurple/protocols/gg/gg.h          |    1 -
 libpurple/protocols/gg/oauth/oauth.c |    3 +-
 libpurple/protocols/gg/pubdir-prpl.c |  440 +++++++++++++++++++++++++++++++++-
 libpurple/protocols/gg/pubdir-prpl.h |   21 +-
 libpurple/protocols/gg/search.c      |  222 -----------------
 libpurple/protocols/gg/search.h      |  151 ------------
 8 files changed, 436 insertions(+), 716 deletions(-)

diffs (truncated from 1442 to 300 lines):

diff --git a/libpurple/protocols/gg/Makefile.am b/libpurple/protocols/gg/Makefile.am
--- a/libpurple/protocols/gg/Makefile.am
+++ b/libpurple/protocols/gg/Makefile.am
@@ -54,8 +54,6 @@ GGSOURCES = \
 	utils.c \
 	confer.h \
 	confer.c \
-	search.h \
-	search.c \
 	buddylist.h \
 	buddylist.c \
 	gg.h \
diff --git a/libpurple/protocols/gg/gg.c b/libpurple/protocols/gg/gg.c
--- a/libpurple/protocols/gg/gg.c
+++ b/libpurple/protocols/gg/gg.c
@@ -168,143 +168,6 @@ static void ggp_action_buddylist_load(Pu
 			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 @@ static void ggp_rem_deny(PurpleConnectio
 /* ----- 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;
-	}



More information about the Commits mailing list