finch/gntrequest.c

changeset 42140
beba61bbdf19
parent 42139
c053558f1236
child 42152
2bcdf415a79d
equal deleted inserted replaced
42139:c053558f1236 42140:beba61bbdf19
288 GList *fields = purple_request_group_get_fields(group); 288 GList *fields = purple_request_group_get_fields(group);
289 289
290 for (; fields ; fields = fields->next) 290 for (; fields ; fields = fields->next)
291 { 291 {
292 PurpleRequestField *field = fields->data; 292 PurpleRequestField *field = fields->data;
293 PurpleRequestFieldType type = purple_request_field_get_field_type(field);
294 if (!purple_request_field_is_visible(field)) 293 if (!purple_request_field_is_visible(field))
295 continue; 294 continue;
296 if(PURPLE_IS_REQUEST_FIELD_BOOL(field)) { 295 if(PURPLE_IS_REQUEST_FIELD_BOOL(field)) {
297 GntWidget *check = g_object_get_data(G_OBJECT(field), 296 GntWidget *check = g_object_get_data(G_OBJECT(field),
298 "finch-ui-data"); 297 "finch-ui-data");
319 GntWidget *combo = g_object_get_data(G_OBJECT(field), 318 GntWidget *combo = g_object_get_data(G_OBJECT(field),
320 "finch-ui-data"); 319 "finch-ui-data");
321 gpointer value = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo)); 320 gpointer value = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo));
322 purple_request_field_choice_set_value(PURPLE_REQUEST_FIELD_CHOICE(field), 321 purple_request_field_choice_set_value(PURPLE_REQUEST_FIELD_CHOICE(field),
323 value); 322 value);
324 } 323 } else if(PURPLE_IS_REQUEST_FIELD_LIST(field)) {
325 else if (type == PURPLE_REQUEST_FIELD_LIST) 324 PurpleRequestFieldList *lfield = PURPLE_REQUEST_FIELD_LIST(field);
326 {
327 GList *selected = NULL; 325 GList *selected = NULL;
328 GList *list = purple_request_field_list_get_items(field); 326 GList *list = purple_request_field_list_get_items(lfield);
329 if (purple_request_field_list_get_multi_select(field)) 327 if(purple_request_field_list_get_multi_select(lfield)) {
330 {
331 GntWidget *tree = g_object_get_data(G_OBJECT(field), 328 GntWidget *tree = g_object_get_data(G_OBJECT(field),
332 "finch-ui-data"); 329 "finch-ui-data");
333 330
334 for (; list; list = list->next) 331 for (; list; list = list->next)
335 { 332 {
336 PurpleKeyValuePair *item = list->data; 333 PurpleKeyValuePair *item = list->data;
337 const char *text = item->key; 334 const char *text = item->key;
338 gpointer key = purple_request_field_list_get_data(field, text); 335 gpointer key = NULL;
336
337 key = purple_request_field_list_get_data(lfield, text);
339 if (gnt_tree_get_choice(GNT_TREE(tree), key)) { 338 if (gnt_tree_get_choice(GNT_TREE(tree), key)) {
340 selected = g_list_prepend(selected, (gpointer)text); 339 selected = g_list_prepend(selected, (gpointer)text);
341 } 340 }
342 } 341 }
343 } 342 }
348 gpointer data = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo)); 347 gpointer data = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo));
349 348
350 for (; list; list = list->next) { 349 for (; list; list = list->next) {
351 PurpleKeyValuePair *item = list->data; 350 PurpleKeyValuePair *item = list->data;
352 const char *text = item->key; 351 const char *text = item->key;
353 gpointer key = purple_request_field_list_get_data(field, text); 352 gpointer key = NULL;
353
354 key = purple_request_field_list_get_data(lfield, text);
354 if (key == data) { 355 if (key == data) {
355 selected = g_list_prepend(selected, (gpointer)text); 356 selected = g_list_prepend(selected, (gpointer)text);
356 break; 357 break;
357 } 358 }
358 } 359 }
359 } 360 }
360 361
361 purple_request_field_list_set_selected(field, selected); 362 purple_request_field_list_set_selected(lfield, selected);
362 g_list_free(selected); 363 g_list_free(selected);
363 364
364 } else if (PURPLE_IS_REQUEST_FIELD_ACCOUNT(field)) { 365 } else if (PURPLE_IS_REQUEST_FIELD_ACCOUNT(field)) {
365 GntWidget *combo = NULL; 366 GntWidget *combo = NULL;
366 PurpleAccount *acc = NULL; 367 PurpleAccount *acc = NULL;
486 } 487 }
487 488
488 static GntWidget* 489 static GntWidget*
489 create_list_field(PurpleRequestField *field) 490 create_list_field(PurpleRequestField *field)
490 { 491 {
492 PurpleRequestFieldList *lfield = PURPLE_REQUEST_FIELD_LIST(field);
491 GntWidget *ret = NULL; 493 GntWidget *ret = NULL;
492 GList *list = purple_request_field_list_get_items(field); 494 GList *list = purple_request_field_list_get_items(lfield);
493 if (purple_request_field_list_get_multi_select(field)) { 495 if(purple_request_field_list_get_multi_select(lfield)) {
494 GntWidget *tree = gnt_tree_new(); 496 GntWidget *tree = gnt_tree_new();
495 497
496 for (; list; list = list->next) 498 for (; list; list = list->next)
497 { 499 {
498 PurpleKeyValuePair *item = list->data; 500 PurpleKeyValuePair *item = list->data;
499 const char *text = item->key; 501 const char *text = item->key;
500 gpointer key = purple_request_field_list_get_data(field, text); 502 gpointer key = purple_request_field_list_get_data(lfield, text);
501 gnt_tree_add_choice(GNT_TREE(tree), key, 503 gnt_tree_add_choice(GNT_TREE(tree), key,
502 gnt_tree_create_row(GNT_TREE(tree), text), NULL, NULL); 504 gnt_tree_create_row(GNT_TREE(tree), text), NULL, NULL);
503 if (purple_request_field_list_is_selected(field, text)) 505 if(purple_request_field_list_is_selected(lfield, text)) {
504 gnt_tree_set_choice(GNT_TREE(tree), key, TRUE); 506 gnt_tree_set_choice(GNT_TREE(tree), key, TRUE);
507 }
505 } 508 }
506 ret = tree; 509 ret = tree;
507 } 510 }
508 else 511 else
509 { 512 {
511 514
512 for (; list; list = list->next) 515 for (; list; list = list->next)
513 { 516 {
514 PurpleKeyValuePair *item = list->data; 517 PurpleKeyValuePair *item = list->data;
515 const char *text = item->key; 518 const char *text = item->key;
516 gpointer key = purple_request_field_list_get_data(field, text); 519 gpointer key = purple_request_field_list_get_data(lfield, text);
517 gnt_combo_box_add_data(GNT_COMBO_BOX(combo), key, text); 520 gnt_combo_box_add_data(GNT_COMBO_BOX(combo), key, text);
518 if (purple_request_field_list_is_selected(field, text)) 521 if(purple_request_field_list_is_selected(lfield, text)) {
519 gnt_combo_box_set_selected(GNT_COMBO_BOX(combo), key); 522 gnt_combo_box_set_selected(GNT_COMBO_BOX(combo), key);
523 }
520 } 524 }
521 ret = combo; 525 ret = combo;
522 } 526 }
523 return ret; 527 return ret;
524 } 528 }
639 gnt_label_new_with_format(title, GNT_TEXT_FLAG_BOLD)); 643 gnt_label_new_with_format(title, GNT_TEXT_FLAG_BOLD));
640 644
641 for (; fields ; fields = fields->next) 645 for (; fields ; fields = fields->next)
642 { 646 {
643 PurpleRequestField *field = fields->data; 647 PurpleRequestField *field = fields->data;
644 PurpleRequestFieldType type = purple_request_field_get_field_type(field);
645 const char *label = purple_request_field_get_label(field); 648 const char *label = purple_request_field_get_label(field);
646 GntWidget *widget = NULL; 649 GntWidget *widget = NULL;
647 650
648 if (!purple_request_field_is_visible(field)) 651 if (!purple_request_field_is_visible(field))
649 continue; 652 continue;
667 widget = create_string_field(field, &username); 670 widget = create_string_field(field, &username);
668 } else if(PURPLE_IS_REQUEST_FIELD_INT(field)) { 671 } else if(PURPLE_IS_REQUEST_FIELD_INT(field)) {
669 widget = create_integer_field(field); 672 widget = create_integer_field(field);
670 } else if(PURPLE_IS_REQUEST_FIELD_CHOICE(field)) { 673 } else if(PURPLE_IS_REQUEST_FIELD_CHOICE(field)) {
671 widget = create_choice_field(field); 674 widget = create_choice_field(field);
672 } else if (type == PURPLE_REQUEST_FIELD_LIST) { 675 } else if(PURPLE_IS_REQUEST_FIELD_LIST(field)) {
673 widget = create_list_field(field); 676 widget = create_list_field(field);
674 } else if(PURPLE_IS_REQUEST_FIELD_ACCOUNT(field)) { 677 } else if(PURPLE_IS_REQUEST_FIELD_ACCOUNT(field)) {
675 accountlist = create_account_field(field); 678 accountlist = create_account_field(field);
676 widget = accountlist; 679 widget = accountlist;
677 } else { 680 } else {
867 PurpleRequestGroup *group = list->data; 870 PurpleRequestGroup *group = list->data;
868 GList *fields = purple_request_group_get_fields(group); 871 GList *fields = purple_request_group_get_fields(group);
869 872
870 for (; fields ; fields = fields->next) { 873 for (; fields ; fields = fields->next) {
871 PurpleRequestField *field = fields->data; 874 PurpleRequestField *field = fields->data;
872 PurpleRequestFieldType type = purple_request_field_get_field_type(field);
873 PurplePrefType pt; 875 PurplePrefType pt;
874 gpointer val = NULL; 876 gpointer val = NULL;
875 const char *id = purple_request_field_get_id(field); 877 const char *id = purple_request_field_get_id(field);
876 878
877 if(PURPLE_IS_REQUEST_FIELD_BOOL(field)) { 879 if(PURPLE_IS_REQUEST_FIELD_LIST(field)) {
880 PurpleRequestFieldList *lfield = PURPLE_REQUEST_FIELD_LIST(field);
881 val = purple_request_field_list_get_selected(lfield)->data;
882 val = purple_request_field_list_get_data(lfield, val);
883 } else if(PURPLE_IS_REQUEST_FIELD_BOOL(field)) {
878 PurpleRequestFieldBool *bfield = PURPLE_REQUEST_FIELD_BOOL(field); 884 PurpleRequestFieldBool *bfield = PURPLE_REQUEST_FIELD_BOOL(field);
879 val = GINT_TO_POINTER(purple_request_field_bool_get_value(bfield)); 885 val = GINT_TO_POINTER(purple_request_field_bool_get_value(bfield));
880 } else if(PURPLE_IS_REQUEST_FIELD_INT(field)) { 886 } else if(PURPLE_IS_REQUEST_FIELD_INT(field)) {
881 PurpleRequestFieldInt *ifield = PURPLE_REQUEST_FIELD_INT(field); 887 PurpleRequestFieldInt *ifield = PURPLE_REQUEST_FIELD_INT(field);
882 val = GINT_TO_POINTER(purple_request_field_int_get_value(ifield)); 888 val = GINT_TO_POINTER(purple_request_field_int_get_value(ifield));
883 } else if(PURPLE_IS_REQUEST_FIELD_STRING(field)) { 889 } else if(PURPLE_IS_REQUEST_FIELD_STRING(field)) {
884 PurpleRequestFieldString *sfield = PURPLE_REQUEST_FIELD_STRING(field); 890 PurpleRequestFieldString *sfield = PURPLE_REQUEST_FIELD_STRING(field);
885 val = (gpointer)purple_request_field_string_get_value(sfield); 891 val = (gpointer)purple_request_field_string_get_value(sfield);
886 } else {
887 switch (type) {
888 case PURPLE_REQUEST_FIELD_LIST:
889 val = purple_request_field_list_get_selected(field)->data;
890 val = purple_request_field_list_get_data(field, val);
891 break;
892 default:
893 break;
894 }
895 } 892 }
896 893
897 pt = purple_prefs_get_pref_type(id); 894 pt = purple_prefs_get_pref_type(id);
898 switch (pt) { 895 switch (pt) {
899 case PURPLE_PREF_INT: 896 case PURPLE_PREF_INT:
900 { 897 {
901 long int tmp = GPOINTER_TO_INT(val); 898 long int tmp = GPOINTER_TO_INT(val);
902 if (type == PURPLE_REQUEST_FIELD_LIST) { 899 if(PURPLE_IS_REQUEST_FIELD_LIST(field)) {
903 /* Lists always return string */ 900 /* Lists always return string */
904 if (sscanf(val, "%ld", &tmp) != 1) 901 if (sscanf(val, "%ld", &tmp) != 1)
905 tmp = 0; 902 tmp = 0;
906 } 903 }
907 purple_prefs_set_int(id, (gint)tmp); 904 purple_prefs_set_int(id, (gint)tmp);
931 ret = create_integer_field(field); 928 ret = create_integer_field(field);
932 } else if(PURPLE_IS_REQUEST_FIELD_CHOICE(field)) { 929 } else if(PURPLE_IS_REQUEST_FIELD_CHOICE(field)) {
933 ret = create_choice_field(field); 930 ret = create_choice_field(field);
934 } else if(PURPLE_IS_REQUEST_FIELD_ACCOUNT(field)) { 931 } else if(PURPLE_IS_REQUEST_FIELD_ACCOUNT(field)) {
935 ret = create_account_field(field); 932 ret = create_account_field(field);
933 } else if(PURPLE_IS_REQUEST_FIELD_LIST(field)) {
934 ret = create_list_field(field);
936 } else { 935 } else {
937 switch (purple_request_field_get_field_type(field)) { 936 purple_debug_error("GntRequest", "Unimplemented request-field %s",
938 case PURPLE_REQUEST_FIELD_LIST: 937 G_OBJECT_TYPE_NAME(field));
939 ret = create_list_field(field);
940 break;
941 default:
942 purple_debug_error("GntRequest", "Unimplemented request-field %d\n",
943 purple_request_field_get_field_type(field));
944 break;
945 }
946 } 938 }
947 return ret; 939 return ret;
948 } 940 }
949 941

mercurial