Mercurial > pidgin
comparison finch/gntrequest.c @ 32819:2c6510167895 default tip
propagate from branch 'im.pidgin.pidgin.2.x.y' (head 3315c5dfbd0ad16511bdcf865e5b07c02d07df24)
to branch 'im.pidgin.pidgin' (head cbd1eda6bcbf0565ae7766396bb8f6f419cb6a9a)
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Sat, 02 Jun 2012 02:30:49 +0000 |
parents | 03dcb0185c82 |
children |
comparison
equal
deleted
inserted
replaced
32818:01ff09d4a463 | 32819:2c6510167895 |
---|---|
39 #include "finch.h" | 39 #include "finch.h" |
40 #include "gntrequest.h" | 40 #include "gntrequest.h" |
41 #include "debug.h" | 41 #include "debug.h" |
42 #include "util.h" | 42 #include "util.h" |
43 | 43 |
44 /* XXX: Until gobjectification ... */ | |
45 #undef FINCH_GET_DATA | |
46 #undef FINCH_SET_DATA | |
47 #define FINCH_GET_DATA(obj) purple_request_field_get_ui_data(obj) | |
48 #define FINCH_SET_DATA(obj, data) purple_request_field_set_ui_data(obj, data) | |
49 | |
50 typedef struct | 44 typedef struct |
51 { | 45 { |
52 void *user_data; | 46 void *user_data; |
53 GntWidget *dialog; | 47 GntWidget *dialog; |
54 GCallback *cbs; | 48 GCallback *cbs; |
321 PurpleRequestFieldType type = purple_request_field_get_type(field); | 315 PurpleRequestFieldType type = purple_request_field_get_type(field); |
322 if (!purple_request_field_is_visible(field)) | 316 if (!purple_request_field_is_visible(field)) |
323 continue; | 317 continue; |
324 if (type == PURPLE_REQUEST_FIELD_BOOLEAN) | 318 if (type == PURPLE_REQUEST_FIELD_BOOLEAN) |
325 { | 319 { |
326 GntWidget *check = FINCH_GET_DATA(field); | 320 GntWidget *check = purple_request_field_get_ui_data(field); |
327 gboolean value = gnt_check_box_get_checked(GNT_CHECK_BOX(check)); | 321 gboolean value = gnt_check_box_get_checked(GNT_CHECK_BOX(check)); |
328 purple_request_field_bool_set_value(field, value); | 322 purple_request_field_bool_set_value(field, value); |
329 } | 323 } |
330 else if (type == PURPLE_REQUEST_FIELD_STRING) | 324 else if (type == PURPLE_REQUEST_FIELD_STRING) |
331 { | 325 { |
332 GntWidget *entry = FINCH_GET_DATA(field); | 326 GntWidget *entry = purple_request_field_get_ui_data(field); |
333 const char *text = gnt_entry_get_text(GNT_ENTRY(entry)); | 327 const char *text = gnt_entry_get_text(GNT_ENTRY(entry)); |
334 purple_request_field_string_set_value(field, (text && *text) ? text : NULL); | 328 purple_request_field_string_set_value(field, (text && *text) ? text : NULL); |
335 } | 329 } |
336 else if (type == PURPLE_REQUEST_FIELD_INTEGER) | 330 else if (type == PURPLE_REQUEST_FIELD_INTEGER) |
337 { | 331 { |
338 GntWidget *entry = FINCH_GET_DATA(field); | 332 GntWidget *entry = purple_request_field_get_ui_data(field); |
339 const char *text = gnt_entry_get_text(GNT_ENTRY(entry)); | 333 const char *text = gnt_entry_get_text(GNT_ENTRY(entry)); |
340 int value = (text && *text) ? atoi(text) : 0; | 334 int value = (text && *text) ? atoi(text) : 0; |
341 purple_request_field_int_set_value(field, value); | 335 purple_request_field_int_set_value(field, value); |
342 } | 336 } |
343 else if (type == PURPLE_REQUEST_FIELD_CHOICE) | 337 else if (type == PURPLE_REQUEST_FIELD_CHOICE) |
344 { | 338 { |
345 GntWidget *combo = FINCH_GET_DATA(field); | 339 GntWidget *combo = purple_request_field_get_ui_data(field); |
346 int id; | 340 int id; |
347 id = GPOINTER_TO_INT(gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo))); | 341 id = GPOINTER_TO_INT(gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo))); |
348 purple_request_field_choice_set_value(field, id); | 342 purple_request_field_choice_set_value(field, id); |
349 } | 343 } |
350 else if (type == PURPLE_REQUEST_FIELD_LIST) | 344 else if (type == PURPLE_REQUEST_FIELD_LIST) |
351 { | 345 { |
352 GList *list = NULL, *iter; | 346 GList *list = NULL, *iter; |
353 if (purple_request_field_list_get_multi_select(field)) | 347 if (purple_request_field_list_get_multi_select(field)) |
354 { | 348 { |
355 GntWidget *tree = FINCH_GET_DATA(field); | 349 GntWidget *tree = purple_request_field_get_ui_data(field); |
356 | 350 |
357 iter = purple_request_field_list_get_items(field); | 351 iter = purple_request_field_list_get_items(field); |
358 for (; iter; iter = iter->next) | 352 for (; iter; iter = iter->next) |
359 { | 353 { |
360 const char *text = iter->data; | 354 const char *text = iter->data; |
363 list = g_list_prepend(list, (gpointer)text); | 357 list = g_list_prepend(list, (gpointer)text); |
364 } | 358 } |
365 } | 359 } |
366 else | 360 else |
367 { | 361 { |
368 GntWidget *combo = FINCH_GET_DATA(field); | 362 GntWidget *combo = purple_request_field_get_ui_data(field); |
369 gpointer data = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo)); | 363 gpointer data = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo)); |
370 | 364 |
371 iter = purple_request_field_list_get_items(field); | 365 iter = purple_request_field_list_get_items(field); |
372 for (; iter; iter = iter->next) { | 366 for (; iter; iter = iter->next) { |
373 const char *text = iter->data; | 367 const char *text = iter->data; |
382 purple_request_field_list_set_selected(field, list); | 376 purple_request_field_list_set_selected(field, list); |
383 g_list_free(list); | 377 g_list_free(list); |
384 } | 378 } |
385 else if (type == PURPLE_REQUEST_FIELD_ACCOUNT) | 379 else if (type == PURPLE_REQUEST_FIELD_ACCOUNT) |
386 { | 380 { |
387 GntWidget *combo = FINCH_GET_DATA(field); | 381 GntWidget *combo = purple_request_field_get_ui_data(field); |
388 PurpleAccount *acc = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo)); | 382 PurpleAccount *acc = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo)); |
389 purple_request_field_account_set_value(field, acc); | 383 purple_request_field_account_set_value(field, acc); |
390 } | 384 } |
391 } | 385 } |
392 } | 386 } |
575 } | 569 } |
576 gnt_widget_set_size(combo, 20, 3); /* ew */ | 570 gnt_widget_set_size(combo, 20, 3); /* ew */ |
577 return combo; | 571 return combo; |
578 } | 572 } |
579 | 573 |
574 static GntWidget* | |
575 create_certificate_field(PurpleRequestField *field) | |
576 { | |
577 GntWidget *w; | |
578 PurpleCertificate *cert; | |
579 char *str; | |
580 | |
581 cert = purple_request_field_certificate_get_value(field); | |
582 str = purple_certificate_get_display_string(cert); | |
583 w = gnt_label_new(str); | |
584 | |
585 g_free(str); | |
586 | |
587 return w; | |
588 } | |
589 | |
580 static void * | 590 static void * |
581 finch_request_fields(const char *title, const char *primary, | 591 finch_request_fields(const char *title, const char *primary, |
582 const char *secondary, PurpleRequestFields *allfields, | 592 const char *secondary, PurpleRequestFields *allfields, |
583 const char *ok, GCallback ok_cb, | 593 const char *ok, GCallback ok_cb, |
584 const char *cancel, GCallback cancel_cb, | 594 const char *cancel, GCallback cancel_cb, |
631 gnt_box_add_widget(GNT_BOX(hbox), l); | 641 gnt_box_add_widget(GNT_BOX(hbox), l); |
632 } | 642 } |
633 | 643 |
634 if (type == PURPLE_REQUEST_FIELD_BOOLEAN) | 644 if (type == PURPLE_REQUEST_FIELD_BOOLEAN) |
635 { | 645 { |
636 FINCH_SET_DATA(field, create_boolean_field(field)); | 646 purple_request_field_set_ui_data(field, create_boolean_field(field)); |
637 } | 647 } |
638 else if (type == PURPLE_REQUEST_FIELD_STRING) | 648 else if (type == PURPLE_REQUEST_FIELD_STRING) |
639 { | 649 { |
640 FINCH_SET_DATA(field, create_string_field(field, &username)); | 650 purple_request_field_set_ui_data(field, create_string_field(field, &username)); |
641 } | 651 } |
642 else if (type == PURPLE_REQUEST_FIELD_INTEGER) | 652 else if (type == PURPLE_REQUEST_FIELD_INTEGER) |
643 { | 653 { |
644 FINCH_SET_DATA(field, create_integer_field(field)); | 654 purple_request_field_set_ui_data(field, create_integer_field(field)); |
645 } | 655 } |
646 else if (type == PURPLE_REQUEST_FIELD_CHOICE) | 656 else if (type == PURPLE_REQUEST_FIELD_CHOICE) |
647 { | 657 { |
648 FINCH_SET_DATA(field, create_choice_field(field)); | 658 purple_request_field_set_ui_data(field, create_choice_field(field)); |
649 } | 659 } |
650 else if (type == PURPLE_REQUEST_FIELD_LIST) | 660 else if (type == PURPLE_REQUEST_FIELD_LIST) |
651 { | 661 { |
652 FINCH_SET_DATA(field, create_list_field(field)); | 662 purple_request_field_set_ui_data(field, create_list_field(field)); |
653 } | 663 } |
654 else if (type == PURPLE_REQUEST_FIELD_ACCOUNT) | 664 else if (type == PURPLE_REQUEST_FIELD_ACCOUNT) |
655 { | 665 { |
656 accountlist = create_account_field(field); | 666 accountlist = create_account_field(field); |
657 FINCH_SET_DATA(field, accountlist); | 667 purple_request_field_set_ui_data(field, accountlist); |
668 } | |
669 else if (type == PURPLE_REQUEST_FIELD_CERTIFICATE) | |
670 { | |
671 purple_request_field_set_ui_data(field, create_certificate_field(field)); | |
658 } | 672 } |
659 else | 673 else |
660 { | 674 { |
661 FINCH_SET_DATA(field, gnt_label_new_with_format(_("Not implemented yet."), | 675 purple_request_field_set_ui_data(field, gnt_label_new_with_format(_("Not implemented yet."), |
662 GNT_TEXT_FLAG_BOLD)); | 676 GNT_TEXT_FLAG_BOLD)); |
663 } | 677 } |
664 gnt_box_set_alignment(GNT_BOX(hbox), GNT_ALIGN_MID); | 678 gnt_box_set_alignment(GNT_BOX(hbox), GNT_ALIGN_MID); |
665 gnt_box_add_widget(GNT_BOX(hbox), GNT_WIDGET(FINCH_GET_DATA(field))); | 679 gnt_box_add_widget(GNT_BOX(hbox), GNT_WIDGET(purple_request_field_get_ui_data(field))); |
666 } | 680 } |
667 if (grlist->next) | 681 if (grlist->next) |
668 gnt_box_add_widget(GNT_BOX(box), gnt_hline_new()); | 682 gnt_box_add_widget(GNT_BOX(box), gnt_hline_new()); |
669 } | 683 } |
670 gnt_box_add_widget(GNT_BOX(window), box); | 684 gnt_box_add_widget(GNT_BOX(window), box); |