#include "gtkyahoo.h" #include "utils-proto.h" GList *name_list = NULL; GList *id_list = NULL; static void on_login_get_new_id(GtkButton * button, gpointer user_data) { launch_browser ("http://edit.yahoo.com/config/eval_register?.intl=us&new=1&.done=http%3a//conversations.yahoo.com/dir/Conversations&.src=pg&partner=&promo=&.last="); gtk_widget_destroy(GTK_WIDGET(user_data)); if (current_user) free(current_user); current_user = NULL; if (current_pass) free(current_pass); current_pass = NULL; } static void on_login_login(GtkButton * button, gpointer user_data) { GtkWindow *window = NULL; GtkWidget *login_combo1 = NULL, *login_password = NULL; char *name = NULL, *name_lookup = NULL, *id = NULL; GList *names = name_list, *ids = id_list; if (NULL != user_data) { window = GTK_WINDOW(user_data); login_password = GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(window), "login_password")); login_combo1 = GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(window), "login_combo1")); } name = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(login_combo1)->entry)); name_lookup=names->data; id = ids->data; while (0 != strcmp (name_lookup, name)) { if (NULL == (names = names->next)) { DBG_Print("login", "ran out of names!\n"); return; /* got to end without finding it!!! */ } if (NULL == (ids = ids->next)) { DBG_Print("login", "ran out of ids!\n"); return; /* got to end without finding it!!! */ } name_lookup = names->data; id = ids->data; } DBG_Print("login", "Logging in \"%s\" as user \"%s\"\n", name, id); if (current_user) free(current_user); if (current_pass) free(current_pass); current_user = strdup(id); current_pass = strdup(gtk_entry_get_text(GTK_ENTRY(login_password))); gtk_widget_destroy(GTK_WIDGET(user_data)); if (current_config) free(current_config); current_config = strdup(current_user); rcfile_init(); got_password(); } static void on_login_cancel(GtkButton * button, gpointer user_data) { gtk_widget_destroy(GTK_WIDGET(user_data)); } static void on_login_help(GtkButton * button, gpointer user_data) { launch_browser ("http://msg.edit.yahoo.com/config/eval_forgot_pw?.src=pg&.done=http://messenger.yahoo.com/"); } static GtkWidget *create_login_window(void) { GtkWidget *login_window; GtkWidget *login_vbox4; GtkWidget *login_new_user_frm; GtkWidget *login_vbox5; GtkWidget *login_packer2; GtkWidget *login_hbox3; GtkWidget *login_packer4; GtkWidget *login_get_new_id; GtkWidget *login_packer5; GtkWidget *login_packer3; GtkWidget *login_frame2; GtkWidget *login_vbox6; GtkWidget *login_hbox5; GtkWidget *login_vbox7; GtkWidget *login_label3; GtkWidget *login_label4; GtkWidget *login_vbox8; GtkWidget *login_combo1; GtkWidget *login_id; GtkWidget *login_password; GtkWidget *login_hbox6; GtkWidget *login_packer6; GtkWidget *login_vbox9; GtkWidget *login_remember; GtkWidget *login_invisible; GtkWidget *login_packer7; GtkWidget *login_hbuttonbox6; GtkWidget *login_login; GtkWidget *login_cancel; GtkWidget *login_help; GtkAccelGroup *accel_group; accel_group = gtk_accel_group_new(); login_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_object_set_data(GTK_OBJECT(login_window), "login_window", login_window); gtk_window_set_title(GTK_WINDOW(login_window), "Login"); login_vbox4 = gtk_vbox_new(FALSE, 0); gtk_widget_ref(login_vbox4); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_vbox4", login_vbox4, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_vbox4); gtk_container_add(GTK_CONTAINER(login_window), login_vbox4); login_new_user_frm = gtk_frame_new(" New User? "); gtk_widget_ref(login_new_user_frm); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_new_user_frm", login_new_user_frm, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_new_user_frm); gtk_box_pack_start(GTK_BOX(login_vbox4), login_new_user_frm, TRUE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(login_new_user_frm), 5); login_vbox5 = gtk_vbox_new(FALSE, 0); gtk_widget_ref(login_vbox5); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_vbox5", login_vbox5, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_vbox5); gtk_container_add(GTK_CONTAINER(login_new_user_frm), login_vbox5); login_packer2 = gtk_packer_new(); gtk_widget_ref(login_packer2); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_packer2", login_packer2, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_packer2); gtk_box_pack_start(GTK_BOX(login_vbox5), login_packer2, TRUE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(login_packer2), 3); login_hbox3 = gtk_hbox_new(FALSE, 0); gtk_widget_ref(login_hbox3); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_hbox3", login_hbox3, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_hbox3); gtk_box_pack_start(GTK_BOX(login_vbox5), login_hbox3, TRUE, TRUE, 0); login_packer4 = gtk_packer_new(); gtk_widget_ref(login_packer4); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_packer4", login_packer4, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_packer4); gtk_box_pack_start(GTK_BOX(login_hbox3), login_packer4, TRUE, TRUE, 0); login_get_new_id = gtk_button_new_with_label("Get a Yahoo! ID"); gtk_widget_ref(login_get_new_id); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_get_new_id", login_get_new_id, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_get_new_id); gtk_box_pack_start(GTK_BOX(login_hbox3), login_get_new_id, FALSE, FALSE, 0); login_packer5 = gtk_packer_new(); gtk_widget_ref(login_packer5); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_packer5", login_packer5, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_packer5); gtk_box_pack_start(GTK_BOX(login_hbox3), login_packer5, TRUE, TRUE, 0); login_packer3 = gtk_packer_new(); gtk_widget_ref(login_packer3); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_packer3", login_packer3, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_packer3); gtk_box_pack_start(GTK_BOX(login_vbox5), login_packer3, TRUE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(login_packer3), 5); login_frame2 = gtk_frame_new(" Already have a Yahoo! ID? "); gtk_widget_ref(login_frame2); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_frame2", login_frame2, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_frame2); gtk_box_pack_start(GTK_BOX(login_vbox4), login_frame2, TRUE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(login_frame2), 5); login_vbox6 = gtk_vbox_new(TRUE, 0); gtk_widget_ref(login_vbox6); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_vbox6", login_vbox6, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_vbox6); gtk_container_add(GTK_CONTAINER(login_frame2), login_vbox6); login_hbox5 = gtk_hbox_new(FALSE, 0); gtk_widget_ref(login_hbox5); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_hbox5", login_hbox5, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_hbox5); gtk_box_pack_start(GTK_BOX(login_vbox6), login_hbox5, TRUE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(login_hbox5), 5); login_vbox7 = gtk_vbox_new(TRUE, 0); gtk_widget_ref(login_vbox7); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_vbox7", login_vbox7, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_vbox7); gtk_box_pack_start(GTK_BOX(login_hbox5), login_vbox7, TRUE, TRUE, 0); login_label3 = gtk_label_new("Yahoo! ID:"); gtk_widget_ref(login_label3); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_label3", login_label3, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_label3); gtk_box_pack_start(GTK_BOX(login_vbox7), login_label3, FALSE, FALSE, 0); gtk_label_set_justify(GTK_LABEL(login_label3), GTK_JUSTIFY_RIGHT); gtk_misc_set_alignment(GTK_MISC(login_label3), 1, 0.5); login_label4 = gtk_label_new("Password:"); gtk_widget_ref(login_label4); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_label4", login_label4, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_label4); gtk_box_pack_start(GTK_BOX(login_vbox7), login_label4, FALSE, FALSE, 0); gtk_label_set_justify(GTK_LABEL(login_label4), GTK_JUSTIFY_RIGHT); gtk_misc_set_alignment(GTK_MISC(login_label4), 1, 0.5); login_vbox8 = gtk_vbox_new(TRUE, 0); gtk_widget_ref(login_vbox8); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_vbox8", login_vbox8, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_vbox8); gtk_box_pack_start(GTK_BOX(login_hbox5), login_vbox8, TRUE, TRUE, 0); login_combo1 = gtk_combo_new(); gtk_widget_ref(login_combo1); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_combo1", login_combo1, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_combo1); gtk_box_pack_start(GTK_BOX(login_vbox8), login_combo1, FALSE, FALSE, 0); login_id = GTK_COMBO(login_combo1)->entry; gtk_widget_ref(login_id); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_id", login_id, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_id); login_password = gtk_entry_new(); gtk_widget_ref(login_password); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_password", login_password, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_password); gtk_box_pack_start(GTK_BOX(login_vbox8), login_password, FALSE, FALSE, 0); gtk_entry_set_visibility(GTK_ENTRY(login_password), FALSE); login_hbox6 = gtk_hbox_new(FALSE, 0); gtk_widget_ref(login_hbox6); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_hbox6", login_hbox6, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_hbox6); gtk_box_pack_start(GTK_BOX(login_vbox6), login_hbox6, TRUE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(login_hbox6), 5); login_packer6 = gtk_packer_new(); gtk_widget_ref(login_packer6); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_packer6", login_packer6, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_packer6); gtk_box_pack_start(GTK_BOX(login_hbox6), login_packer6, TRUE, TRUE, 0); login_vbox9 = gtk_vbox_new(FALSE, 0); gtk_widget_ref(login_vbox9); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_vbox9", login_vbox9, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_vbox9); gtk_box_pack_start(GTK_BOX(login_hbox6), login_vbox9, TRUE, TRUE, 0); login_remember = gtk_check_button_new_with_label("Remember my ID & Password"); gtk_widget_ref(login_remember); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_remember", login_remember, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_remember); gtk_box_pack_start(GTK_BOX(login_vbox9), login_remember, FALSE, FALSE, 0); gtk_widget_set_sensitive(login_remember, FALSE); login_invisible = gtk_check_button_new_with_label("Login under Invisible Mode"); gtk_widget_ref(login_invisible); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_invisible", login_invisible, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_invisible); gtk_box_pack_start(GTK_BOX(login_vbox9), login_invisible, FALSE, FALSE, 0); gtk_widget_set_sensitive(login_invisible, FALSE); login_packer7 = gtk_packer_new(); gtk_widget_ref(login_packer7); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_packer7", login_packer7, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_packer7); gtk_box_pack_start(GTK_BOX(login_hbox6), login_packer7, TRUE, TRUE, 0); login_hbuttonbox6 = gtk_hbutton_box_new(); gtk_widget_ref(login_hbuttonbox6); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_hbuttonbox6", login_hbuttonbox6, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_hbuttonbox6); gtk_box_pack_start(GTK_BOX(login_vbox4), login_hbuttonbox6, TRUE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(login_hbuttonbox6), 5); login_login = gtk_button_new_with_label("Login"); gtk_widget_ref(login_login); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_login", login_login, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_login); gtk_container_add(GTK_CONTAINER(login_hbuttonbox6), login_login); GTK_WIDGET_SET_FLAGS(login_login, GTK_CAN_DEFAULT); login_cancel = gtk_button_new_with_label("Cancel"); gtk_widget_ref(login_cancel); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_cancel", login_cancel, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_cancel); gtk_container_add(GTK_CONTAINER(login_hbuttonbox6), login_cancel); GTK_WIDGET_SET_FLAGS(login_cancel, GTK_CAN_DEFAULT); gtk_widget_add_accelerator(login_cancel, "clicked", accel_group, GDK_Escape, 0, GTK_ACCEL_VISIBLE); login_help = gtk_button_new_with_label("Help"); gtk_widget_ref(login_help); gtk_object_set_data_full(GTK_OBJECT(login_window), "login_help", login_help, (GtkDestroyNotify) gtk_widget_unref); gtk_widget_show(login_help); gtk_container_add(GTK_CONTAINER(login_hbuttonbox6), login_help); GTK_WIDGET_SET_FLAGS(login_help, GTK_CAN_DEFAULT); gtk_signal_connect(GTK_OBJECT(login_get_new_id), "clicked", GTK_SIGNAL_FUNC(on_login_get_new_id), login_window); gtk_signal_connect(GTK_OBJECT(login_password), "activate", GTK_SIGNAL_FUNC(on_login_login), login_window); gtk_signal_connect(GTK_OBJECT(login_login), "clicked", GTK_SIGNAL_FUNC(on_login_login), login_window); gtk_signal_connect(GTK_OBJECT(login_cancel), "clicked", GTK_SIGNAL_FUNC(on_login_cancel), login_window); gtk_signal_connect(GTK_OBJECT(login_help), "clicked", GTK_SIGNAL_FUNC(on_login_help), NULL); gtk_widget_grab_focus(login_password); gtk_widget_grab_default(login_login); gtk_window_add_accel_group(GTK_WINDOW(login_window), accel_group); return login_window; } void get_login_credentials() { GtkWidget *login_window = NULL; GtkWidget *login_combo1; login_window = create_login_window(); login_combo1 = GTK_WIDGET(gtk_object_get_data(GTK_OBJECT(login_window), "login_combo1")); gtk_combo_set_popdown_strings(GTK_COMBO(login_combo1), name_list); gtk_widget_show(login_window); } gint get_login (gpointer data) { get_login_credentials (); return 0; }