libpurple/protocols/gg/pubdir-prpl.c

changeset 34338
c652670afac5
parent 34332
876483829700
child 34449
bbcb198650b7
child 34940
c0aef3b64c56
--- a/libpurple/protocols/gg/pubdir-prpl.c	Wed Sep 11 14:11:45 2013 +0200
+++ b/libpurple/protocols/gg/pubdir-prpl.c	Thu Sep 12 14:38:22 2013 +0200
@@ -132,6 +132,7 @@
 
 static const gchar *ggp_pubdir_provinces[] =
 {
+	N_("Not specified"),
 	"dolnośląskie",
 	"kujawsko-pomorskie",
 	"lubelskie",
@@ -514,8 +515,7 @@
 	PurpleRequestFields *fields;
 	PurpleRequestFieldGroup *group;
 	PurpleRequestField *field;
-	int default_gender;
-	
+
 	purple_debug_info("gg", "ggp_pubdir_search\n");
 	
 	fields = purple_request_fields_new();
@@ -529,18 +529,14 @@
 	field = purple_request_field_string_new("city", _("City"),
 		form ? form->city : NULL, FALSE);
 	purple_request_field_group_add_field(group, field);
-	
-	default_gender = 0;
-	if (form && form->gender == GGP_PUBDIR_GENDER_MALE)
-		default_gender = 1;
-	else if (form && form->gender == GGP_PUBDIR_GENDER_FEMALE)
-		default_gender = 2;
-	
+
 	field = purple_request_field_choice_new("gender", _("Gender"),
-		default_gender);
-	purple_request_field_choice_add(field, _("Male or female"));
-	purple_request_field_choice_add(field, _("Male"));
-	purple_request_field_choice_add(field, _("Female"));
+		GINT_TO_POINTER(form->gender));
+	purple_request_field_choice_add(field, _("Male or female"), 0);
+	purple_request_field_choice_add(field, _("Male"),
+		GINT_TO_POINTER(GGP_PUBDIR_GENDER_MALE));
+	purple_request_field_choice_add(field, _("Female"),
+		GINT_TO_POINTER(GGP_PUBDIR_GENDER_FEMALE));
 	purple_request_field_group_add_field(group, field);
 	
 	purple_request_fields(gc, _("Find buddies"), _("Find buddies"),
@@ -554,18 +550,13 @@
 	PurpleRequestFields *fields)
 {
 	ggp_pubdir_search_form *form = g_new0(ggp_pubdir_search_form, 1);
-	int gender;
 
 	purple_debug_info("gg", "ggp_pubdir_search_request\n");
 	
 	form->nick = g_strdup(purple_request_fields_get_string(fields, "name"));
 	form->city = g_strdup(purple_request_fields_get_string(fields, "city"));
-	gender = purple_request_fields_get_choice(fields, "gender");
-	if (gender == 1)
-		form->gender = GGP_PUBDIR_GENDER_MALE;
-	else if (gender == 2)
-		form->gender = GGP_PUBDIR_GENDER_FEMALE;
-	
+	form->gender = GPOINTER_TO_INT(purple_request_fields_get_choice(fields,
+		"gender"));
 	form->offset = 0;
 	form->limit = GGP_PUBDIR_SEARCH_PER_PAGE;
 	
@@ -812,7 +803,6 @@
 	PurpleRequestFields *fields;
 	PurpleRequestFieldGroup *group;
 	PurpleRequestField *field;
-	int default_gender;
 	gsize i;
 	const ggp_pubdir_record *record;
 	
@@ -832,18 +822,14 @@
 	field = purple_request_field_string_new("last_name", _("Last name"),
 		record ? record->last_name : NULL, FALSE);
 	purple_request_field_group_add_field(group, field);
-	
-	default_gender = -1;
-	if (record && record->gender == GGP_PUBDIR_GENDER_MALE)
-		default_gender = 0;
-	else if (record && record->gender == GGP_PUBDIR_GENDER_FEMALE)
-		default_gender = 1;
-	
+
 	field = purple_request_field_choice_new("gender", _("Gender"),
-		default_gender);
+		GINT_TO_POINTER(record->gender));
 	purple_request_field_set_required(field, TRUE);
-	purple_request_field_choice_add(field, _("Male"));
-	purple_request_field_choice_add(field, _("Female"));
+	purple_request_field_choice_add(field, _("Male"),
+		GINT_TO_POINTER(GGP_PUBDIR_GENDER_MALE));
+	purple_request_field_choice_add(field, _("Female"),
+		GINT_TO_POINTER(GGP_PUBDIR_GENDER_FEMALE));
 	purple_request_field_group_add_field(group, field);
 
 	field = purple_request_field_string_new("birth_date", _("Birth Day"),
@@ -858,15 +844,14 @@
 	
 	field = purple_request_field_choice_new("province", _("Voivodeship"), 0);
 	purple_request_field_group_add_field(group, field);
-	purple_request_field_choice_add(field, _("Not specified"));
 	for (i = 0; i < ggp_pubdir_provinces_count; i++)
 	{
-		purple_request_field_choice_add(field, ggp_pubdir_provinces[i]);
-		if (record && i + 1 == record->province)
+		purple_request_field_choice_add(field, ggp_pubdir_provinces[i],
+			GINT_TO_POINTER(i));
+		if (record && i == record->province)
 		{
-			purple_request_field_choice_set_value(field, i + 1);
-			purple_request_field_choice_set_default_value(field,
-				i + 1); // TODO: libpurple bug?
+			purple_request_field_choice_set_value(field, GINT_TO_POINTER(i));
+			purple_request_field_choice_set_default_value(field, GINT_TO_POINTER(i));
 		}
 	}
 	
@@ -894,13 +879,12 @@
 		"first_name"));
 	record->last_name = g_strdup(purple_request_fields_get_string(fields,
 		"last_name"));
-	if (purple_request_fields_get_choice(fields, "gender") == 0)
-		record->gender = GGP_PUBDIR_GENDER_MALE;
-	else
-		record->gender = GGP_PUBDIR_GENDER_FEMALE;
+	record->gender = GPOINTER_TO_INT(
+		purple_request_fields_get_choice(fields, "gender"));
 	record->city = g_strdup(purple_request_fields_get_string(fields,
 		"city"));
-	record->province = purple_request_fields_get_choice(fields, "province");
+	record->province = GPOINTER_TO_INT(
+		purple_request_fields_get_choice(fields, "province"));
 	
 	birth_s = g_strdup_printf("%sT10:00:00+00:00",
 		purple_request_fields_get_string(fields, "birth_date"));

mercurial