libpurple/request.c

changeset 34331
c8486462bb63
parent 34330
35d5e8fcc07b
child 34332
876483829700
--- a/libpurple/request.c	Tue Sep 10 15:34:10 2013 +0200
+++ b/libpurple/request.c	Tue Sep 10 21:47:37 2013 +0200
@@ -162,6 +162,8 @@
 
 	PurpleAccount *account;
 	PurpleConversation *conv;
+	gconstpointer icon_data;
+	gsize icon_size;
 };
 
 PurpleRequestCommonParameters *
@@ -190,6 +192,24 @@
 	return cpar;
 }
 
+PurpleRequestCommonParameters *
+purple_request_cpar_from_conversation(PurpleConversation *conv)
+{
+	PurpleRequestCommonParameters *cpar;
+	PurpleAccount *account = NULL;
+
+	if (conv != NULL) {
+		account = purple_connection_get_account(
+			purple_conversation_get_connection(conv));
+	}
+
+	cpar = purple_request_cpar_new();
+	purple_request_cpar_set_account(cpar, account);
+	purple_request_cpar_set_conversation(cpar, conv);
+
+	return cpar;
+}
+
 void
 purple_request_cpar_ref(PurpleRequestCommonParameters *cpar)
 {
@@ -247,6 +267,32 @@
 	return cpar->conv;
 }
 
+void
+purple_request_cpar_set_custom_icon(PurpleRequestCommonParameters *cpar,
+	gconstpointer icon_data, gsize icon_size)
+{
+	g_return_if_fail(cpar != NULL);
+	g_return_if_fail((icon_data == NULL) == (icon_size == 0));
+
+	cpar->icon_data = icon_data;
+	cpar->icon_size = icon_size;
+}
+
+gconstpointer
+purple_request_cpar_get_custom_icon(PurpleRequestCommonParameters *cpar,
+	gsize *icon_size)
+{
+	if (cpar == NULL) {
+		if (icon_size != NULL)
+			*icon_size = 0;
+		return NULL;
+	}
+
+	if (icon_size != NULL)
+		*icon_size = cpar->icon_size;
+	return cpar->icon_data;
+}
+
 PurpleRequestFields *
 purple_request_fields_new(void)
 {
@@ -1766,49 +1812,26 @@
 
 void *
 purple_request_action(void *handle, const char *title, const char *primary,
-					const char *secondary, int default_action,
-					PurpleAccount *account, const char *who, PurpleConversation *conv,
-					void *user_data, size_t action_count, ...)
+	const char *secondary, int default_action,
+	PurpleRequestCommonParameters *cpar, void *user_data,
+	size_t action_count, ...)
 {
 	void *ui_handle;
 	va_list args;
 
 	va_start(args, action_count);
-	ui_handle = purple_request_action_varg(handle, title, primary, secondary,
-										 default_action, account, who, conv,
-										 user_data, action_count, args);
+	ui_handle = purple_request_action_varg(handle, title, primary,
+		secondary, default_action, cpar, user_data, action_count, args);
 	va_end(args);
 
 	return ui_handle;
 }
 
 void *
-purple_request_action_with_icon(void *handle, const char *title,
-					const char *primary,
-					const char *secondary, int default_action,
-					PurpleAccount *account, const char *who,
-					PurpleConversation *conv, gconstpointer icon_data,
-					gsize icon_size, void *user_data, size_t action_count, ...)
-{
-	void *ui_handle;
-	va_list args;
-
-	va_start(args, action_count);
-	ui_handle = purple_request_action_with_icon_varg(handle, title, primary,
-		secondary, default_action, account, who, conv, icon_data, icon_size,
-		user_data, action_count, args);
-	va_end(args);
-
-	return ui_handle;
-}
-
-
-void *
-purple_request_action_varg(void *handle, const char *title,
-						 const char *primary, const char *secondary,
-						 int default_action,
-						 PurpleAccount *account, const char *who, PurpleConversation *conv,
-						  void *user_data, size_t action_count, va_list actions)
+purple_request_action_varg(void *handle, const char *title, const char *primary,
+	const char *secondary, int default_action,
+	PurpleRequestCommonParameters *cpar, void *user_data,
+	size_t action_count, va_list actions)
 {
 	PurpleRequestUiOps *ops;
 
@@ -1821,8 +1844,7 @@
 		info->type      = PURPLE_REQUEST_ACTION;
 		info->handle    = handle;
 		info->ui_handle = ops->request_action(title, primary, secondary,
-											  default_action, account, who, conv,
-											  user_data, action_count, actions);
+			default_action, cpar, user_data, action_count, actions);
 
 		handles = g_list_append(handles, info);
 
@@ -1833,44 +1855,6 @@
 }
 
 void *
-purple_request_action_with_icon_varg(void *handle, const char *title,
-						 const char *primary, const char *secondary,
-						 int default_action,
-						 PurpleAccount *account, const char *who,
-						 PurpleConversation *conv, gconstpointer icon_data,
-						 gsize icon_size,
-						 void *user_data, size_t action_count, va_list actions)
-{
-	PurpleRequestUiOps *ops;
-
-	ops = purple_request_get_ui_ops();
-
-	if (ops != NULL && ops->request_action_with_icon != NULL) {
-		PurpleRequestInfo *info;
-
-		info            = g_new0(PurpleRequestInfo, 1);
-		info->type      = PURPLE_REQUEST_ACTION;
-		info->handle    = handle;
-		info->ui_handle = ops->request_action_with_icon(title, primary, secondary,
-											  default_action, account, who, conv,
-											  icon_data, icon_size,
-											  user_data, action_count, actions);
-
-		handles = g_list_append(handles, info);
-
-		return info->ui_handle;
-	} else {
-		/* Fall back on the non-icon request if the UI doesn't support icon
-		 requests */
-		return purple_request_action_varg(handle, title, primary, secondary,
-			default_action, account, who, conv, user_data, action_count, actions);
-	}
-
-	return NULL;
-}
-
-
-void *
 purple_request_fields(void *handle, const char *title, const char *primary,
 					const char *secondary, PurpleRequestFields *fields,
 					const char *ok_text, GCallback ok_cb,

mercurial