libpurple/request.c

changeset 34444
4fe0e2422d82
parent 34443
b7926ff76ed6
child 34445
43e91cccb4da
equal deleted inserted replaced
34443:b7926ff76ed6 34444:4fe0e2422d82
171 171
172 gboolean compact; 172 gboolean compact;
173 173
174 PurpleRequestHelpCb help_cb; 174 PurpleRequestHelpCb help_cb;
175 gpointer help_data; 175 gpointer help_data;
176
177 GSList *extra_actions;
176 }; 178 };
177 179
178 PurpleRequestCommonParameters * 180 PurpleRequestCommonParameters *
179 purple_request_cpar_new(void) 181 purple_request_cpar_new(void)
180 { 182 {
234 return NULL; 236 return NULL;
235 237
236 if (--cpar->ref_count > 0) 238 if (--cpar->ref_count > 0)
237 return cpar; 239 return cpar;
238 240
241 purple_request_cpar_set_extra_actions(cpar, NULL);
239 g_free(cpar); 242 g_free(cpar);
240 return NULL; 243 return NULL;
241 } 244 }
242 245
243 void 246 void
374 return NULL; 377 return NULL;
375 378
376 if (user_data != NULL) 379 if (user_data != NULL)
377 *user_data = cpar->help_data; 380 *user_data = cpar->help_data;
378 return cpar->help_cb; 381 return cpar->help_cb;
382 }
383
384 void
385 purple_request_cpar_set_extra_actions(PurpleRequestCommonParameters *cpar, ...)
386 {
387 va_list args;
388 GSList *extra = NULL, *it;
389
390 it = cpar->extra_actions;
391 while (it != NULL) {
392 gchar *label = it->data;
393
394 g_free(label);
395 it = g_slist_next(it);
396 if (it == NULL)
397 break;
398 it = g_slist_next(it);
399 }
400
401 va_start(args, cpar);
402
403 while (TRUE) {
404 const gchar *label;
405 PurpleRequestFieldsCb cb;
406
407 label = va_arg(args, const gchar*);
408 if (label == NULL)
409 break;
410 cb = va_arg(args, PurpleRequestFieldsCb);
411
412 extra = g_slist_append(extra, g_strdup(label));
413 extra = g_slist_append(extra, cb);
414 }
415
416 va_end(args);
417
418 cpar->extra_actions = extra;
419 }
420
421 GSList *
422 purple_request_cpar_get_extra_actions(PurpleRequestCommonParameters *cpar)
423 {
424 return cpar->extra_actions;
379 } 425 }
380 426
381 PurpleRequestFields * 427 PurpleRequestFields *
382 purple_request_fields_new(void) 428 purple_request_fields_new(void)
383 { 429 {

mercurial