| 297 { |
297 { |
| 298 GntWidget *check = g_object_get_data(G_OBJECT(field), |
298 GntWidget *check = g_object_get_data(G_OBJECT(field), |
| 299 "finch-ui-data"); |
299 "finch-ui-data"); |
| 300 gboolean value = gnt_check_box_get_checked(GNT_CHECK_BOX(check)); |
300 gboolean value = gnt_check_box_get_checked(GNT_CHECK_BOX(check)); |
| 301 purple_request_field_bool_set_value(field, value); |
301 purple_request_field_bool_set_value(field, value); |
| 302 } |
302 } else if(PURPLE_IS_REQUEST_FIELD_STRING(field)) { |
| 303 else if (type == PURPLE_REQUEST_FIELD_STRING) |
|
| 304 { |
|
| 305 GntWidget *entry = g_object_get_data(G_OBJECT(field), |
303 GntWidget *entry = g_object_get_data(G_OBJECT(field), |
| 306 "finch-ui-data"); |
304 "finch-ui-data"); |
| 307 const char *text = gnt_entry_get_text(GNT_ENTRY(entry)); |
305 const char *text = gnt_entry_get_text(GNT_ENTRY(entry)); |
| 308 purple_request_field_string_set_value(field, (text && *text) ? text : NULL); |
306 if(purple_strempty(text)) { |
| |
307 text = NULL; |
| |
308 } |
| |
309 purple_request_field_string_set_value(PURPLE_REQUEST_FIELD_STRING(field), |
| |
310 text); |
| 309 } |
311 } |
| 310 else if (type == PURPLE_REQUEST_FIELD_INTEGER) |
312 else if (type == PURPLE_REQUEST_FIELD_INTEGER) |
| 311 { |
313 { |
| 312 GntWidget *entry = g_object_get_data(G_OBJECT(field), |
314 GntWidget *entry = g_object_get_data(G_OBJECT(field), |
| 313 "finch-ui-data"); |
315 "finch-ui-data"); |
| 422 } |
424 } |
| 423 |
425 |
| 424 static GntWidget* |
426 static GntWidget* |
| 425 create_string_field(PurpleRequestField *field, GntWidget **username) |
427 create_string_field(PurpleRequestField *field, GntWidget **username) |
| 426 { |
428 { |
| |
429 PurpleRequestFieldString *strfield = PURPLE_REQUEST_FIELD_STRING(field); |
| 427 const char *hint = purple_request_field_get_type_hint(field); |
430 const char *hint = purple_request_field_get_type_hint(field); |
| 428 GntWidget *entry = gnt_entry_new( |
431 GntWidget *entry = gnt_entry_new( |
| 429 purple_request_field_string_get_default_value(field)); |
432 purple_request_field_string_get_default_value(strfield)); |
| 430 gnt_entry_set_masked(GNT_ENTRY(entry), |
433 gnt_entry_set_masked(GNT_ENTRY(entry), |
| 431 purple_request_field_string_is_masked(field)); |
434 purple_request_field_string_is_masked(strfield)); |
| 432 if (hint && g_str_has_prefix(hint, "screenname")) { |
435 if (hint && g_str_has_prefix(hint, "screenname")) { |
| 433 PurpleBlistNode *node = purple_blist_get_default_root(); |
436 PurpleBlistNode *node = purple_blist_get_default_root(); |
| 434 gboolean offline = g_str_has_suffix(hint, "all"); |
437 gboolean offline = g_str_has_suffix(hint, "all"); |
| 435 for (; node; node = purple_blist_node_next(node, offline)) { |
438 for (; node; node = purple_blist_node_next(node, offline)) { |
| 436 if (!PURPLE_IS_BUDDY(node)) |
439 if (!PURPLE_IS_BUDDY(node)) |
| 657 gnt_box_add_widget(GNT_BOX(hbox), l); |
660 gnt_box_add_widget(GNT_BOX(hbox), l); |
| 658 } |
661 } |
| 659 |
662 |
| 660 if (type == PURPLE_REQUEST_FIELD_BOOLEAN) { |
663 if (type == PURPLE_REQUEST_FIELD_BOOLEAN) { |
| 661 widget = create_boolean_field(field); |
664 widget = create_boolean_field(field); |
| 662 } else if (type == PURPLE_REQUEST_FIELD_STRING) { |
665 } else if(PURPLE_IS_REQUEST_FIELD_STRING(field)) { |
| 663 widget = create_string_field(field, &username); |
666 widget = create_string_field(field, &username); |
| 664 } else if (type == PURPLE_REQUEST_FIELD_INTEGER) { |
667 } else if (type == PURPLE_REQUEST_FIELD_INTEGER) { |
| 665 widget = create_integer_field(field); |
668 widget = create_integer_field(field); |
| 666 } else if (type == PURPLE_REQUEST_FIELD_CHOICE) { |
669 } else if (type == PURPLE_REQUEST_FIELD_CHOICE) { |
| 667 widget = create_choice_field(field); |
670 widget = create_choice_field(field); |
| 868 PurpleRequestFieldType type = purple_request_field_get_field_type(field); |
871 PurpleRequestFieldType type = purple_request_field_get_field_type(field); |
| 869 PurplePrefType pt; |
872 PurplePrefType pt; |
| 870 gpointer val = NULL; |
873 gpointer val = NULL; |
| 871 const char *id = purple_request_field_get_id(field); |
874 const char *id = purple_request_field_get_id(field); |
| 872 |
875 |
| |
876 if(PURPLE_IS_REQUEST_FIELD_STRING(field)) { |
| |
877 PurpleRequestFieldString *sfield = PURPLE_REQUEST_FIELD_STRING(field); |
| |
878 val = (gpointer)purple_request_field_string_get_value(sfield); |
| |
879 } else { |
| 873 switch (type) { |
880 switch (type) { |
| 874 case PURPLE_REQUEST_FIELD_LIST: |
881 case PURPLE_REQUEST_FIELD_LIST: |
| 875 val = purple_request_field_list_get_selected(field)->data; |
882 val = purple_request_field_list_get_selected(field)->data; |
| 876 val = purple_request_field_list_get_data(field, val); |
883 val = purple_request_field_list_get_data(field, val); |
| 877 break; |
884 break; |
| 879 val = GINT_TO_POINTER(purple_request_field_bool_get_value(field)); |
886 val = GINT_TO_POINTER(purple_request_field_bool_get_value(field)); |
| 880 break; |
887 break; |
| 881 case PURPLE_REQUEST_FIELD_INTEGER: |
888 case PURPLE_REQUEST_FIELD_INTEGER: |
| 882 val = GINT_TO_POINTER(purple_request_field_int_get_value(field)); |
889 val = GINT_TO_POINTER(purple_request_field_int_get_value(field)); |
| 883 break; |
890 break; |
| 884 case PURPLE_REQUEST_FIELD_STRING: |
|
| 885 val = (gpointer)purple_request_field_string_get_value(field); |
|
| 886 break; |
|
| 887 default: |
891 default: |
| 888 break; |
892 break; |
| |
893 } |
| 889 } |
894 } |
| 890 |
895 |
| 891 pt = purple_prefs_get_pref_type(id); |
896 pt = purple_prefs_get_pref_type(id); |
| 892 switch (pt) { |
897 switch (pt) { |
| 893 case PURPLE_PREF_INT: |
898 case PURPLE_PREF_INT: |
| 915 } |
920 } |
| 916 |
921 |
| 917 GntWidget *finch_request_field_get_widget(PurpleRequestField *field) |
922 GntWidget *finch_request_field_get_widget(PurpleRequestField *field) |
| 918 { |
923 { |
| 919 GntWidget *ret = NULL; |
924 GntWidget *ret = NULL; |
| 920 if(PURPLE_IS_REQUEST_FIELD_ACCOUNT(field)) { |
925 if(PURPLE_IS_REQUEST_FIELD_STRING(field)) { |
| |
926 ret = create_string_field(field, NULL); |
| |
927 } else if(PURPLE_IS_REQUEST_FIELD_ACCOUNT(field)) { |
| 921 ret = create_account_field(field); |
928 ret = create_account_field(field); |
| 922 } else { |
929 } else { |
| 923 switch (purple_request_field_get_field_type(field)) { |
930 switch (purple_request_field_get_field_type(field)) { |
| 924 case PURPLE_REQUEST_FIELD_BOOLEAN: |
931 case PURPLE_REQUEST_FIELD_BOOLEAN: |
| 925 ret = create_boolean_field(field); |
932 ret = create_boolean_field(field); |
| 926 break; |
|
| 927 case PURPLE_REQUEST_FIELD_STRING: |
|
| 928 ret = create_string_field(field, NULL); |
|
| 929 break; |
933 break; |
| 930 case PURPLE_REQUEST_FIELD_INTEGER: |
934 case PURPLE_REQUEST_FIELD_INTEGER: |
| 931 ret = create_integer_field(field); |
935 ret = create_integer_field(field); |
| 932 break; |
936 break; |
| 933 case PURPLE_REQUEST_FIELD_CHOICE: |
937 case PURPLE_REQUEST_FIELD_CHOICE: |