diff libpurple/request.c @ 29418:365b90fa23cf

This patch comes from the combined work of contributors minstrel, NightFox, bob007, salieff, and nops (these are their trac usernames). I have made some minor tweaks to the patch, but these shouldn't be a problem. This patch needs some TLC before we can merge it anywhere else; it adds API so it must hit im.pidgin.pidgin.next.minor before hitting im.pidgin.pidgin. Refs #4508.
author John Bailey <rekkanoryo@rekkanoryo.org>
date Thu, 13 Nov 2008 17:04:53 +0000
parents c2af0701d9cc
children 2d04fb25c6db
line wrap: on
line diff
--- a/libpurple/request.c	Thu Nov 13 09:00:45 2008 +0000
+++ b/libpurple/request.c	Thu Nov 13 17:04:53 2008 +0000
@@ -790,6 +790,25 @@
 }
 
 void
+purple_request_field_list_set_pixbuf(PurpleRequestField *field,
+										 gboolean pixbuf)
+{
+	g_return_if_fail(field != NULL);
+	g_return_if_fail(field->type == PURPLE_REQUEST_FIELD_LIST);
+
+	field->u.list.pixbuf = pixbuf;
+}
+
+gboolean
+purple_request_field_list_get_pixbuf(const PurpleRequestField *field)
+{
+	g_return_val_if_fail(field != NULL, FALSE);
+	g_return_val_if_fail(field->type == PURPLE_REQUEST_FIELD_LIST, FALSE);
+
+	return field->u.list.pixbuf;
+}
+
+void
 purple_request_field_list_set_multi_select(PurpleRequestField *field,
 										 gboolean multi_select)
 {
@@ -834,6 +853,22 @@
 }
 
 void
+purple_request_field_list_add_icon(PurpleRequestField *field, const char *item, const char* icon_path,
+							void *data)
+{
+	g_return_if_fail(field != NULL);
+	g_return_if_fail(item  != NULL);
+	g_return_if_fail(data  != NULL);
+	g_return_if_fail(icon_path != NULL);
+	g_return_if_fail(field->type == PURPLE_REQUEST_FIELD_LIST);
+
+	field->u.list.items = g_list_append(field->u.list.items, g_strdup(item));
+	field->u.list.icons = g_list_append(field->u.list.icons, g_strdup(icon_path));
+
+	g_hash_table_insert(field->u.list.item_data, g_strdup(item), data);
+}
+
+void
 purple_request_field_list_add_selected(PurpleRequestField *field, const char *item)
 {
 	g_return_if_fail(field != NULL);
@@ -935,6 +970,16 @@
 	return field->u.list.items;
 }
 
+GList *
+purple_request_field_list_get_icons(const PurpleRequestField *field)
+{
+	g_return_val_if_fail(field != NULL, NULL);
+	g_return_val_if_fail(field->type == PURPLE_REQUEST_FIELD_LIST, NULL);
+	g_return_val_if_fail(field->u.list.pixbuf == TRUE, NULL);
+
+	return field->u.list.icons;
+}
+
 PurpleRequestField *
 purple_request_field_label_new(const char *id, const char *text)
 {