Mercurial > pidgin
comparison console/gntrequest.c @ 14048:9c4bec886220
[gaim-migrate @ 16661]
Allow multi-select to work for requests.
committer: Tailor Script <tailor@pidgin.im>
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Mon, 07 Aug 2006 03:24:39 +0000 |
parents | c5bfede33622 |
children | 2d1b41e3cf0d |
comparison
equal
deleted
inserted
replaced
14047:c5bfede33622 | 14048:9c4bec886220 |
---|---|
250 gaim_request_field_choice_set_value(field, id); | 250 gaim_request_field_choice_set_value(field, id); |
251 } | 251 } |
252 else if (type == GAIM_REQUEST_FIELD_LIST) | 252 else if (type == GAIM_REQUEST_FIELD_LIST) |
253 { | 253 { |
254 GntWidget *tree = field->ui_data; | 254 GntWidget *tree = field->ui_data; |
255 gpointer data = gnt_tree_get_selection_data(GNT_TREE(tree)); | 255 GList *list = NULL; |
256 GList *list = g_list_append(NULL, data); /* XXX: Update when multi-select is allowed */ | 256 |
257 if (gaim_request_field_list_get_multi_select(field)) | |
258 { | |
259 const GList *iter; | |
260 | |
261 iter = gaim_request_field_list_get_items(field); | |
262 for (; iter; iter = iter->next) | |
263 { | |
264 const char *text = list->data; | |
265 gpointer key = gaim_request_field_list_get_data(field, text); | |
266 if (gnt_tree_get_choice(GNT_TREE(tree), key)) | |
267 list = g_list_prepend(list, key); | |
268 } | |
269 } | |
270 else | |
271 { | |
272 gpointer data = gnt_tree_get_selection_data(GNT_TREE(tree)); | |
273 list = g_list_append(list, data); | |
274 } | |
275 | |
257 gaim_request_field_list_set_selected(field, list); | 276 gaim_request_field_list_set_selected(field, list); |
258 g_list_free(list); | 277 g_list_free(list); |
259 } | 278 } |
260 else if (type == GAIM_REQUEST_FIELD_ACCOUNT) | 279 else if (type == GAIM_REQUEST_FIELD_ACCOUNT) |
261 { | 280 { |
353 gnt_combo_box_set_selected(GNT_COMBO_BOX(combo), | 372 gnt_combo_box_set_selected(GNT_COMBO_BOX(combo), |
354 GINT_TO_POINTER(gaim_request_field_choice_get_default_value(field))); | 373 GINT_TO_POINTER(gaim_request_field_choice_get_default_value(field))); |
355 } | 374 } |
356 else if (type == GAIM_REQUEST_FIELD_LIST) | 375 else if (type == GAIM_REQUEST_FIELD_LIST) |
357 { | 376 { |
358 /* XXX: Yet to allow multi-select, because the feature is absent in GntTree */ | |
359 const GList *list; | 377 const GList *list; |
378 gboolean multi = gaim_request_field_list_get_multi_select(field); | |
360 GntWidget *tree = gnt_tree_new(); | 379 GntWidget *tree = gnt_tree_new(); |
361 gnt_box_add_widget(GNT_BOX(hbox), tree); | 380 gnt_box_add_widget(GNT_BOX(hbox), tree); |
362 field->ui_data = tree; | 381 field->ui_data = tree; |
363 | 382 |
364 list = gaim_request_field_list_get_items(field); | 383 list = gaim_request_field_list_get_items(field); |
365 for (; list; list = list->next) | 384 for (; list; list = list->next) |
366 { | 385 { |
367 const char *text = list->data; | 386 const char *text = list->data; |
368 gpointer key = gaim_request_field_list_get_data(field, text); | 387 gpointer key = gaim_request_field_list_get_data(field, text); |
369 gnt_tree_add_row_after(GNT_TREE(tree), key, | 388 if (multi) |
370 gnt_tree_create_row(GNT_TREE(tree), text), NULL, NULL); | 389 { |
371 if (gaim_request_field_list_is_selected(field, text)) | 390 gnt_tree_add_choice(GNT_TREE(tree), key, |
372 gnt_tree_set_selected(GNT_TREE(tree), key); | 391 gnt_tree_create_row(GNT_TREE(tree), text), NULL, NULL); |
392 if (gaim_request_field_list_is_selected(field, text)) | |
393 gnt_tree_set_choice(GNT_TREE(tree), key, TRUE); | |
394 } | |
395 else | |
396 { | |
397 gnt_tree_add_row_after(GNT_TREE(tree), key, | |
398 gnt_tree_create_row(GNT_TREE(tree), text), NULL, NULL); | |
399 if (gaim_request_field_list_is_selected(field, text)) | |
400 gnt_tree_set_selected(GNT_TREE(tree), key); | |
401 } | |
373 } | 402 } |
374 } | 403 } |
375 #if 0 | 404 #if 0 |
376 else if (type == GAIM_REQUEST_FIELD_ACCOUNT) | 405 else if (type == GAIM_REQUEST_FIELD_ACCOUNT) |
377 { | 406 { |