| 577 |
577 |
| 578 static void |
578 static void |
| 579 pidgin_account_editor_update_proxy_options(PidginAccountEditor *editor) { |
579 pidgin_account_editor_update_proxy_options(PidginAccountEditor *editor) { |
| 580 PurpleProxyInfo *info = NULL; |
580 PurpleProxyInfo *info = NULL; |
| 581 GListModel *model = NULL; |
581 GListModel *model = NULL; |
| 582 const gchar *svalue = NULL; |
582 const char *type = "global"; |
| 583 gint ivalue = 0; |
583 const char *hostname = NULL; |
| |
584 const char *username = NULL; |
| |
585 const char *password = NULL; |
| |
586 int port = 8080; |
| 584 guint position = 0; |
587 guint position = 0; |
| 585 |
588 |
| 586 if(!PURPLE_IS_ACCOUNT(editor->account)) { |
589 if(!PURPLE_IS_ACCOUNT(editor->account)) { |
| 587 return; |
590 return; |
| 588 } |
591 } |
| 589 |
592 |
| 590 info = purple_account_get_proxy_info(editor->account); |
593 info = purple_account_get_proxy_info(editor->account); |
| 591 |
594 if(PURPLE_IS_PROXY_INFO(info)) { |
| 592 switch(purple_proxy_info_get_proxy_type(info)) { |
595 switch(purple_proxy_info_get_proxy_type(info)) { |
| 593 case PURPLE_PROXY_TYPE_USE_GLOBAL: |
596 case PURPLE_PROXY_TYPE_USE_GLOBAL: |
| 594 svalue = "global"; |
597 type = "global"; |
| 595 break; |
598 break; |
| 596 case PURPLE_PROXY_TYPE_NONE: |
599 case PURPLE_PROXY_TYPE_NONE: |
| 597 svalue = "none"; |
600 type = "none"; |
| 598 break; |
601 break; |
| 599 case PURPLE_PROXY_TYPE_SOCKS4: |
602 case PURPLE_PROXY_TYPE_SOCKS4: |
| 600 svalue = "socks4"; |
603 type = "socks4"; |
| 601 break; |
604 break; |
| 602 case PURPLE_PROXY_TYPE_SOCKS5: |
605 case PURPLE_PROXY_TYPE_SOCKS5: |
| 603 svalue = "socks5"; |
606 type = "socks5"; |
| 604 break; |
607 break; |
| 605 case PURPLE_PROXY_TYPE_TOR: |
608 case PURPLE_PROXY_TYPE_TOR: |
| 606 svalue = "tor"; |
609 type = "tor"; |
| 607 break; |
610 break; |
| 608 case PURPLE_PROXY_TYPE_HTTP: |
611 case PURPLE_PROXY_TYPE_HTTP: |
| 609 svalue = "http"; |
612 type = "http"; |
| 610 break; |
613 break; |
| 611 case PURPLE_PROXY_TYPE_USE_ENVVAR: |
614 case PURPLE_PROXY_TYPE_USE_ENVVAR: |
| 612 svalue = "envvar"; |
615 type = "envvar"; |
| 613 break; |
616 break; |
| |
617 } |
| |
618 |
| |
619 hostname = purple_proxy_info_get_hostname(info); |
| |
620 port = purple_proxy_info_get_port(info); |
| |
621 username = purple_proxy_info_get_username(info); |
| |
622 password = purple_proxy_info_get_password(info); |
| 614 } |
623 } |
| 615 |
624 |
| 616 model = adw_combo_row_get_model(ADW_COMBO_ROW(editor->proxy_type)); |
625 model = adw_combo_row_get_model(ADW_COMBO_ROW(editor->proxy_type)); |
| 617 for(guint i = 0; i < g_list_model_get_n_items(model); i++) { |
626 for(guint i = 0; i < g_list_model_get_n_items(model); i++) { |
| 618 GtkStringObject *obj = g_list_model_get_item(model, i); |
627 GtkStringObject *obj = g_list_model_get_item(model, i); |
| 619 if(purple_strequal(svalue, gtk_string_object_get_string(obj))) { |
628 if(purple_strequal(type, gtk_string_object_get_string(obj))) { |
| 620 position = i; |
629 position = i; |
| 621 break; |
630 break; |
| 622 } |
631 } |
| 623 } |
632 } |
| 624 adw_combo_row_set_selected(ADW_COMBO_ROW(editor->proxy_type), position); |
633 adw_combo_row_set_selected(ADW_COMBO_ROW(editor->proxy_type), position); |
| 625 |
634 |
| 626 svalue = purple_proxy_info_get_hostname(info); |
635 if(hostname == NULL) { |
| 627 if(svalue == NULL) { |
636 hostname = ""; |
| 628 svalue = ""; |
637 } |
| 629 } |
638 gtk_editable_set_text(GTK_EDITABLE(editor->proxy_host), hostname); |
| 630 gtk_editable_set_text(GTK_EDITABLE(editor->proxy_host), svalue); |
639 |
| 631 |
|
| 632 ivalue = purple_proxy_info_get_port(info); |
|
| 633 gtk_spin_button_set_value(GTK_SPIN_BUTTON(editor->proxy_port), |
640 gtk_spin_button_set_value(GTK_SPIN_BUTTON(editor->proxy_port), |
| 634 (gdouble)ivalue); |
641 (gdouble)port); |
| 635 |
642 |
| 636 svalue = purple_proxy_info_get_username(info); |
643 if(username == NULL) { |
| 637 if(svalue == NULL) { |
644 username = ""; |
| 638 svalue = ""; |
645 } |
| 639 } |
646 gtk_editable_set_text(GTK_EDITABLE(editor->proxy_username), username); |
| 640 gtk_editable_set_text(GTK_EDITABLE(editor->proxy_username), svalue); |
647 |
| 641 |
648 if(password == NULL) { |
| 642 svalue = purple_proxy_info_get_password(info); |
649 password = ""; |
| 643 if(svalue == NULL) { |
650 } |
| 644 svalue = ""; |
651 gtk_editable_set_text(GTK_EDITABLE(editor->proxy_password), password); |
| 645 } |
|
| 646 gtk_editable_set_text(GTK_EDITABLE(editor->proxy_password), svalue); |
|
| 647 } |
652 } |
| 648 |
653 |
| 649 static void |
654 static void |
| 650 pidgin_account_editor_update(PidginAccountEditor *editor) { |
655 pidgin_account_editor_update(PidginAccountEditor *editor) { |
| 651 PurpleProtocol *protocol = NULL; |
656 PurpleProtocol *protocol = NULL; |
| 870 GObject *item = NULL; |
875 GObject *item = NULL; |
| 871 const gchar *svalue = NULL; |
876 const gchar *svalue = NULL; |
| 872 gint ivalue = 0; |
877 gint ivalue = 0; |
| 873 |
878 |
| 874 /* Build the ProxyInfo object */ |
879 /* Build the ProxyInfo object */ |
| 875 if(new_account) { |
880 if(!new_account) { |
| |
881 info = purple_account_get_proxy_info(editor->account); |
| |
882 } |
| |
883 |
| |
884 /* If this is a new account, or the account's proxy info is null, create a |
| |
885 * new instance, and set it on the account. |
| |
886 */ |
| |
887 if(new_account || !PURPLE_IS_PROXY_INFO(info)) { |
| 876 info = purple_proxy_info_new(); |
888 info = purple_proxy_info_new(); |
| 877 purple_account_set_proxy_info(editor->account, info); |
889 purple_account_set_proxy_info(editor->account, info); |
| 878 } else { |
|
| 879 info = purple_account_get_proxy_info(editor->account); |
|
| 880 } |
890 } |
| 881 |
891 |
| 882 item = adw_combo_row_get_selected_item(ADW_COMBO_ROW(editor->proxy_type)); |
892 item = adw_combo_row_get_selected_item(ADW_COMBO_ROW(editor->proxy_type)); |
| 883 svalue = gtk_string_object_get_string(GTK_STRING_OBJECT(item)); |
893 svalue = gtk_string_object_get_string(GTK_STRING_OBJECT(item)); |
| 884 if(purple_strequal(svalue, "global")) { |
894 if(purple_strequal(svalue, "global")) { |