Mercurial > pidgin
comparison src/multi.c @ 1089:f0f5c10cce63
[gaim-migrate @ 1099]
added a cancel button to the progress meter
committer: Tailor Script <tailor@pidgin.im>
| author | Eric Warmenhoven <eric@warmenhoven.org> |
|---|---|
| date | Mon, 13 Nov 2000 02:58:00 +0000 |
| parents | ce201056e7a6 |
| children | 5bc8fdacd2cb |
comparison
equal
deleted
inserted
replaced
| 1088:18a14e6dd0af | 1089:f0f5c10cce63 |
|---|---|
| 44 struct mod_usr_opt { | 44 struct mod_usr_opt { |
| 45 struct aim_user *user; | 45 struct aim_user *user; |
| 46 int opt; | 46 int opt; |
| 47 }; | 47 }; |
| 48 | 48 |
| 49 struct gaim_connection *new_gaim_conn(int proto, char *username, char *password) | 49 struct gaim_connection *new_gaim_conn(struct aim_user *user) |
| 50 { | 50 { |
| 51 struct gaim_connection *gc = g_new0(struct gaim_connection, 1); | 51 struct gaim_connection *gc = g_new0(struct gaim_connection, 1); |
| 52 gc->protocol = proto; | 52 gc->protocol = user->protocol; |
| 53 gc->prpl = find_prpl(proto); | 53 gc->prpl = find_prpl(user->protocol); |
| 54 g_snprintf(gc->username, sizeof(gc->username), "%s", username); | 54 g_snprintf(gc->username, sizeof(gc->username), "%s", user->username); |
| 55 g_snprintf(gc->password, sizeof(gc->password), "%s", password); | 55 g_snprintf(gc->password, sizeof(gc->password), "%s", user->password); |
| 56 gc->keepalive = -1; | 56 gc->keepalive = -1; |
| 57 gc->inpa = -1; | 57 gc->inpa = -1; |
| 58 gc->buddy_chats = NULL; | 58 gc->buddy_chats = NULL; |
| 59 gc->groups = NULL; | 59 gc->groups = NULL; |
| 60 gc->permit = NULL; | 60 gc->permit = NULL; |
| 61 gc->deny = NULL; | 61 gc->deny = NULL; |
| 62 | 62 |
| 63 connections = g_slist_append(connections, gc); | 63 connections = g_slist_append(connections, gc); |
| 64 | |
| 65 user->gc = gc; | |
| 66 gc->user = user; | |
| 64 | 67 |
| 65 return gc; | 68 return gc; |
| 66 } | 69 } |
| 67 | 70 |
| 68 void destroy_gaim_conn(struct gaim_connection *gc) | 71 void destroy_gaim_conn(struct gaim_connection *gc) |
| 617 do_pass_dlg(u); | 620 do_pass_dlg(u); |
| 618 } else { | 621 } else { |
| 619 #ifdef USE_APPLET | 622 #ifdef USE_APPLET |
| 620 set_user_state(signing_on); | 623 set_user_state(signing_on); |
| 621 #endif /* USE_APPLET */ | 624 #endif /* USE_APPLET */ |
| 625 gtk_clist_set_text(GTK_CLIST(list), row, 1, "Attempting"); | |
| 622 serv_login(u); | 626 serv_login(u); |
| 623 } | 627 } |
| 624 } else { | 628 } else { |
| 625 signoff(u->gc); | 629 signoff(u->gc); |
| 626 } | 630 } |
| 702 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(acctedit_close), W); | 706 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(acctedit_close), W); |
| 703 | 707 |
| 704 gtk_widget_show(acctedit); | 708 gtk_widget_show(acctedit); |
| 705 } | 709 } |
| 706 | 710 |
| 707 void account_online(struct aim_user *u, struct gaim_connection *gc) | 711 void account_online(struct gaim_connection *gc) |
| 708 { | 712 { |
| 709 int i; | 713 int i; |
| 710 | |
| 711 gc->user = u; | |
| 712 u->gc = gc; | |
| 713 | 714 |
| 714 /* first we hide the login progress meter */ | 715 /* first we hide the login progress meter */ |
| 715 if (gc->meter) | 716 if (gc->meter) |
| 716 gtk_widget_destroy(gc->meter); | 717 gtk_widget_destroy(gc->meter); |
| 717 gc->meter = NULL; | 718 gc->meter = NULL; |
| 751 } | 752 } |
| 752 | 753 |
| 753 void account_offline(struct gaim_connection *gc) | 754 void account_offline(struct gaim_connection *gc) |
| 754 { | 755 { |
| 755 int i; | 756 int i; |
| 757 if (gc->meter) | |
| 758 gtk_widget_destroy(gc->meter); | |
| 759 gc->meter = NULL; | |
| 756 gc->user->gc = NULL; /* wasn't that awkward? */ | 760 gc->user->gc = NULL; /* wasn't that awkward? */ |
| 757 if (!acctedit) return; | 761 if (!acctedit) return; |
| 758 i = gtk_clist_find_row_from_data(GTK_CLIST(list), gc->user); | 762 i = gtk_clist_find_row_from_data(GTK_CLIST(list), gc->user); |
| 759 gtk_clist_set_text(GTK_CLIST(list), i, 1, "No"); | 763 gtk_clist_set_text(GTK_CLIST(list), i, 1, "No"); |
| 760 redo_convo_menus(); | 764 redo_convo_menus(); |
| 775 } | 779 } |
| 776 u = u->next; | 780 u = u->next; |
| 777 } | 781 } |
| 778 } | 782 } |
| 779 | 783 |
| 780 static void meter_destroy(GtkWidget *meter, struct gaim_connection *gc) { | 784 static void cancel_signon(GtkWidget *button, struct gaim_connection *gc) { |
| 781 gtk_widget_destroy(meter); | 785 signoff(gc); |
| 782 gc->meter = NULL; | 786 } |
| 787 | |
| 788 static gint meter_destroy(GtkWidget *meter, GdkEvent *evt, struct gaim_connection *gc) { | |
| 789 return TRUE; | |
| 783 } | 790 } |
| 784 | 791 |
| 785 void set_login_progress(struct gaim_connection *gc, float howfar, char *message) { | 792 void set_login_progress(struct gaim_connection *gc, float howfar, char *message) { |
| 786 if (mainwindow) | 793 if (mainwindow) |
| 787 gtk_widget_hide(mainwindow); | 794 gtk_widget_hide(mainwindow); |
| 788 | 795 |
| 789 if (!gc->meter) { | 796 if (!gc->meter) { |
| 790 GtkWidget *box, *label; | 797 GtkWidget *box, *label, *button; |
| 791 char buf[256]; | 798 char buf[256]; |
| 792 | 799 |
| 793 gc->meter = gtk_window_new(GTK_WINDOW_TOPLEVEL); | 800 gc->meter = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
| 794 gtk_window_set_policy(GTK_WINDOW(gc->meter), 0, 0, 1); | 801 gtk_window_set_policy(GTK_WINDOW(gc->meter), 0, 0, 1); |
| 795 gtk_window_set_wmclass(GTK_WINDOW(gc->meter), "signon", "Gaim"); | 802 gtk_window_set_wmclass(GTK_WINDOW(gc->meter), "signon", "Gaim"); |
| 796 gtk_container_set_border_width(GTK_CONTAINER(gc->meter), 5); | 803 gtk_container_set_border_width(GTK_CONTAINER(gc->meter), 5); |
| 797 g_snprintf(buf, sizeof(buf), "%s Signing On", gc->username); | 804 g_snprintf(buf, sizeof(buf), "%s Signing On", gc->username); |
| 798 gtk_window_set_title(GTK_WINDOW(gc->meter), buf); | 805 gtk_window_set_title(GTK_WINDOW(gc->meter), buf); |
| 799 gtk_signal_connect(GTK_OBJECT(gc->meter), "destroy", | 806 gtk_signal_connect(GTK_OBJECT(gc->meter), "delete_event", |
| 800 GTK_SIGNAL_FUNC(meter_destroy), gc); | 807 GTK_SIGNAL_FUNC(meter_destroy), gc); |
| 801 gtk_widget_realize(gc->meter); | 808 gtk_widget_realize(gc->meter); |
| 802 aol_icon(gc->meter->window); | 809 aol_icon(gc->meter->window); |
| 803 | 810 |
| 804 box = gtk_vbox_new(FALSE, 5); | 811 box = gtk_vbox_new(FALSE, 5); |
| 816 | 823 |
| 817 gc->status = gtk_statusbar_new(); | 824 gc->status = gtk_statusbar_new(); |
| 818 gtk_widget_set_usize(gc->status, 150, 0); | 825 gtk_widget_set_usize(gc->status, 150, 0); |
| 819 gtk_box_pack_start(GTK_BOX(box), gc->status, 0, 0, 5); | 826 gtk_box_pack_start(GTK_BOX(box), gc->status, 0, 0, 5); |
| 820 gtk_widget_show(gc->status); | 827 gtk_widget_show(gc->status); |
| 828 | |
| 829 button = gtk_button_new_with_label(_("Cancel")); | |
| 830 gtk_box_pack_start(GTK_BOX(box), button, 0, 0, 5); | |
| 831 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cancel_signon), gc); | |
| 832 gtk_widget_show(button); | |
| 821 | 833 |
| 822 gtk_widget_show(gc->meter); | 834 gtk_widget_show(gc->meter); |
| 823 } | 835 } |
| 824 | 836 |
| 825 gtk_progress_bar_update(GTK_PROGRESS_BAR(gc->progress), howfar / 5); | 837 gtk_progress_bar_update(GTK_PROGRESS_BAR(gc->progress), howfar / 5); |
