Mercurial > pidgin.yaz
comparison src/multi.c @ 988:9523b772e546
[gaim-migrate @ 998]
progress meters for signing in. UI should be changed but at least there's something there now
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Fri, 13 Oct 2000 19:56:11 +0000 |
parents | 7ec6b092f227 |
children | eacd93d0089a |
comparison
equal
deleted
inserted
replaced
987:cf6662982b40 | 988:9523b772e546 |
---|---|
85 void destroy_gaim_conn(struct gaim_connection *gc) | 85 void destroy_gaim_conn(struct gaim_connection *gc) |
86 { | 86 { |
87 connections = g_slist_remove(connections, gc); | 87 connections = g_slist_remove(connections, gc); |
88 g_free(gc); | 88 g_free(gc); |
89 redo_convo_menus(); | 89 redo_convo_menus(); |
90 if (!connections && mainwindow) | |
91 gtk_widget_show(mainwindow); | |
90 } | 92 } |
91 | 93 |
92 struct gaim_connection *find_gaim_conn_by_name(char *name) { | 94 struct gaim_connection *find_gaim_conn_by_name(char *name) { |
93 char *who = g_strdup(normalize(name)); | 95 char *who = g_strdup(normalize(name)); |
94 GSList *c = connections; | 96 GSList *c = connections; |
618 | 620 |
619 void account_online(struct gaim_connection *gc) | 621 void account_online(struct gaim_connection *gc) |
620 { | 622 { |
621 struct aim_user *u; | 623 struct aim_user *u; |
622 int i; | 624 int i; |
625 if (gc->meter) | |
626 gtk_widget_destroy(gc->meter); | |
627 gc->meter = NULL; | |
623 if (!acctedit) return; | 628 if (!acctedit) return; |
624 u = find_user(gc->username); | 629 u = find_user(gc->username); |
625 i = gtk_clist_find_row_from_data(GTK_CLIST(list), u); | 630 i = gtk_clist_find_row_from_data(GTK_CLIST(list), u); |
626 gtk_clist_set_text(GTK_CLIST(list), i, 1, "Yes"); | 631 gtk_clist_set_text(GTK_CLIST(list), i, 1, "Yes"); |
627 gtk_clist_set_text(GTK_CLIST(list), i, 3, proto_name(gc->protocol)); | 632 gtk_clist_set_text(GTK_CLIST(list), i, 3, proto_name(gc->protocol)); |
652 serv_login(a); | 657 serv_login(a); |
653 } | 658 } |
654 u = u->next; | 659 u = u->next; |
655 } | 660 } |
656 } | 661 } |
662 | |
663 static void meter_destroy(GtkWidget *meter, struct gaim_connection *gc) { | |
664 gtk_widget_destroy(meter); | |
665 gc->meter = NULL; | |
666 } | |
667 | |
668 void set_login_progress(struct gaim_connection *gc, float howfar, char *message) { | |
669 if (mainwindow) | |
670 gtk_widget_hide(mainwindow); | |
671 | |
672 if (!gc->meter) { | |
673 GtkWidget *box, *label; | |
674 char buf[256]; | |
675 | |
676 gc->meter = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
677 gtk_window_set_policy(GTK_WINDOW(gc->meter), 0, 0, 1); | |
678 gtk_window_set_wmclass(GTK_WINDOW(gc->meter), "signon", "Gaim"); | |
679 gtk_container_set_border_width(GTK_CONTAINER(gc->meter), 5); | |
680 g_snprintf(buf, sizeof(buf), "%s Signing On", gc->username); | |
681 gtk_window_set_title(GTK_WINDOW(gc->meter), buf); | |
682 gtk_signal_connect(GTK_OBJECT(gc->meter), "destroy", | |
683 GTK_SIGNAL_FUNC(meter_destroy), gc); | |
684 gtk_widget_realize(gc->meter); | |
685 aol_icon(gc->meter->window); | |
686 | |
687 box = gtk_vbox_new(FALSE, 5); | |
688 gtk_container_add(GTK_CONTAINER(gc->meter), box); | |
689 gtk_widget_show(box); | |
690 | |
691 label = gtk_label_new(buf); | |
692 gtk_box_pack_start(GTK_BOX(box), label, 0, 0, 5); | |
693 gtk_widget_show(label); | |
694 | |
695 gc->progress = gtk_progress_bar_new(); | |
696 gtk_widget_set_usize(gc->progress, 150, 0); | |
697 gtk_box_pack_start(GTK_BOX(box), gc->progress, 0, 0, 5); | |
698 gtk_widget_show(gc->progress); | |
699 | |
700 gc->status = gtk_statusbar_new(); | |
701 gtk_widget_set_usize(gc->status, 150, 0); | |
702 gtk_box_pack_start(GTK_BOX(box), gc->status, 0, 0, 5); | |
703 gtk_widget_show(gc->status); | |
704 | |
705 gtk_widget_show(gc->meter); | |
706 } | |
707 | |
708 gtk_progress_bar_update(GTK_PROGRESS_BAR(gc->progress), howfar / 5); | |
709 gtk_statusbar_pop(GTK_STATUSBAR(gc->status), 1); | |
710 gtk_statusbar_push(GTK_STATUSBAR(gc->status), 1, message); | |
711 } | |
712 | |
713 void hide_login_progress(struct gaim_connection *gc, char *why) | |
714 { | |
715 char buf[2048]; | |
716 sprintf(buf, _("%s was unable to sign on: %s"), gc->username, why); | |
717 do_error_dialog(buf, _("Signon Error")); | |
718 if (gc->meter) | |
719 gtk_widget_destroy(gc->meter); | |
720 gc->meter = NULL; | |
721 } |