summaryrefslogtreecommitdiff
path: root/libpurple/request.c
diff options
context:
space:
mode:
Diffstat (limited to 'libpurple/request.c')
-rw-r--r--libpurple/request.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/libpurple/request.c b/libpurple/request.c
index fe7198c799..391e993d8d 100644
--- a/libpurple/request.c
+++ b/libpurple/request.c
@@ -1317,6 +1317,29 @@ purple_request_action(void *handle, const char *title, const char *primary,
}
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;
+
+ g_return_val_if_fail(action_count > 0, NULL);
+
+ 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,
@@ -1348,6 +1371,46 @@ purple_request_action_varg(void *handle, const char *title,
}
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;
+
+ g_return_val_if_fail(action_count > 0, NULL);
+
+ 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,