finch/gntrequest.c

changeset 42135
1a89a067a0d5
parent 42134
1b5ce0f4302d
child 42136
cfa707dcda7d
equal deleted inserted replaced
42134:1b5ce0f4302d 42135:1a89a067a0d5
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:

mercurial