| 326 gpointer value = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo)); |
326 gpointer value = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo)); |
| 327 purple_request_field_choice_set_value(field, value); |
327 purple_request_field_choice_set_value(field, value); |
| 328 } |
328 } |
| 329 else if (type == PURPLE_REQUEST_FIELD_LIST) |
329 else if (type == PURPLE_REQUEST_FIELD_LIST) |
| 330 { |
330 { |
| 331 GList *list = NULL, *iter; |
331 GList *selected = NULL; |
| |
332 GList *list = purple_request_field_list_get_items(field); |
| 332 if (purple_request_field_list_get_multi_select(field)) |
333 if (purple_request_field_list_get_multi_select(field)) |
| 333 { |
334 { |
| 334 GntWidget *tree = purple_request_field_get_ui_data(field); |
335 GntWidget *tree = purple_request_field_get_ui_data(field); |
| 335 |
336 |
| 336 iter = purple_request_field_list_get_items(field); |
337 for (; list; list = list->next) |
| 337 for (; iter; iter = iter->next) |
|
| 338 { |
338 { |
| 339 const char *text = iter->data; |
339 PurpleKeyValuePair *item = list->data; |
| |
340 const char *text = item->key; |
| 340 gpointer key = purple_request_field_list_get_data(field, text); |
341 gpointer key = purple_request_field_list_get_data(field, text); |
| 341 if (gnt_tree_get_choice(GNT_TREE(tree), key)) |
342 if (gnt_tree_get_choice(GNT_TREE(tree), key)) { |
| 342 list = g_list_prepend(list, (gpointer)text); |
343 selected = g_list_prepend(selected, (gpointer)text); |
| |
344 } |
| 343 } |
345 } |
| 344 } |
346 } |
| 345 else |
347 else |
| 346 { |
348 { |
| 347 GntWidget *combo = purple_request_field_get_ui_data(field); |
349 GntWidget *combo = purple_request_field_get_ui_data(field); |
| 348 gpointer data = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo)); |
350 gpointer data = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo)); |
| 349 |
351 |
| 350 iter = purple_request_field_list_get_items(field); |
352 for (; list; list = list->next) { |
| 351 for (; iter; iter = iter->next) { |
353 PurpleKeyValuePair *item = list->data; |
| 352 const char *text = iter->data; |
354 const char *text = item->key; |
| 353 gpointer key = purple_request_field_list_get_data(field, text); |
355 gpointer key = purple_request_field_list_get_data(field, text); |
| 354 if (key == data) { |
356 if (key == data) { |
| 355 list = g_list_prepend(list, (gpointer)text); |
357 selected = g_list_prepend(selected, (gpointer)text); |
| 356 break; |
358 break; |
| 357 } |
359 } |
| 358 } |
360 } |
| 359 } |
361 } |
| 360 |
362 |
| 361 purple_request_field_list_set_selected(field, list); |
363 purple_request_field_list_set_selected(field, selected); |
| 362 g_list_free(list); |
364 g_list_free(selected); |
| 363 } |
365 } |
| 364 else if (type == PURPLE_REQUEST_FIELD_ACCOUNT) |
366 else if (type == PURPLE_REQUEST_FIELD_ACCOUNT) |
| 365 { |
367 { |
| 366 GntWidget *combo = purple_request_field_get_ui_data(field); |
368 GntWidget *combo = purple_request_field_get_ui_data(field); |
| 367 PurpleAccount *acc = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo)); |
369 PurpleAccount *acc = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo)); |
| 476 |
478 |
| 477 static GntWidget* |
479 static GntWidget* |
| 478 create_list_field(PurpleRequestField *field) |
480 create_list_field(PurpleRequestField *field) |
| 479 { |
481 { |
| 480 GntWidget *ret = NULL; |
482 GntWidget *ret = NULL; |
| 481 GList *list; |
483 GList *list = purple_request_field_list_get_items(field); |
| 482 gboolean multi = purple_request_field_list_get_multi_select(field); |
484 if (purple_request_field_list_get_multi_select(field)) { |
| 483 if (multi) |
|
| 484 { |
|
| 485 GntWidget *tree = gnt_tree_new(); |
485 GntWidget *tree = gnt_tree_new(); |
| 486 |
486 |
| 487 list = purple_request_field_list_get_items(field); |
|
| 488 for (; list; list = list->next) |
487 for (; list; list = list->next) |
| 489 { |
488 { |
| 490 const char *text = list->data; |
489 PurpleKeyValuePair *item = list->data; |
| |
490 const char *text = item->key; |
| 491 gpointer key = purple_request_field_list_get_data(field, text); |
491 gpointer key = purple_request_field_list_get_data(field, text); |
| 492 gnt_tree_add_choice(GNT_TREE(tree), key, |
492 gnt_tree_add_choice(GNT_TREE(tree), key, |
| 493 gnt_tree_create_row(GNT_TREE(tree), text), NULL, NULL); |
493 gnt_tree_create_row(GNT_TREE(tree), text), NULL, NULL); |
| 494 if (purple_request_field_list_is_selected(field, text)) |
494 if (purple_request_field_list_is_selected(field, text)) |
| 495 gnt_tree_set_choice(GNT_TREE(tree), key, TRUE); |
495 gnt_tree_set_choice(GNT_TREE(tree), key, TRUE); |
| 498 } |
498 } |
| 499 else |
499 else |
| 500 { |
500 { |
| 501 GntWidget *combo = gnt_combo_box_new(); |
501 GntWidget *combo = gnt_combo_box_new(); |
| 502 |
502 |
| 503 list = purple_request_field_list_get_items(field); |
|
| 504 for (; list; list = list->next) |
503 for (; list; list = list->next) |
| 505 { |
504 { |
| 506 const char *text = list->data; |
505 PurpleKeyValuePair *item = list->data; |
| |
506 const char *text = item->key; |
| 507 gpointer key = purple_request_field_list_get_data(field, text); |
507 gpointer key = purple_request_field_list_get_data(field, text); |
| 508 gnt_combo_box_add_data(GNT_COMBO_BOX(combo), key, text); |
508 gnt_combo_box_add_data(GNT_COMBO_BOX(combo), key, text); |
| 509 if (purple_request_field_list_is_selected(field, text)) |
509 if (purple_request_field_list_is_selected(field, text)) |
| 510 gnt_combo_box_set_selected(GNT_COMBO_BOX(combo), key); |
510 gnt_combo_box_set_selected(GNT_COMBO_BOX(combo), key); |
| 511 } |
511 } |