pidgin/pidginaccounteditor.c

changeset 41816
f6baa88826a7
parent 41780
1247cc856233
child 41858
38e61d11b89f
equal deleted inserted replaced
41815:d9a6c1d2eebf 41816:f6baa88826a7
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")) {

mercurial