finch/gntrequest.c

changeset 40836
b5eccef8404e
parent 40616
064ff9f4150a
child 41085
508788523450
equal deleted inserted replaced
40831:1ec9131142c3 40836:b5eccef8404e
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 }

mercurial