/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