Mercurial > pidgin
comparison src/multi.c @ 4491:3196d9044a45
[gaim-migrate @ 4766]
aim_user is dead. long live gaim_account.
committer: Tailor Script <tailor@pidgin.im>
| author | Nathan Walp <nwalp@pidgin.im> |
|---|---|
| date | Fri, 31 Jan 2003 13:03:47 +0000 |
| parents | 3502a25bad47 |
| children | 61ba567f9c64 |
comparison
equal
deleted
inserted
replaced
| 4490:70b892694e0b | 4491:3196d9044a45 |
|---|---|
| 34 | 34 |
| 35 static GtkWidget *acctedit = NULL; | 35 static GtkWidget *acctedit = NULL; |
| 36 static GtkWidget *treeview = NULL; /* the treeview of names in the accteditor */ | 36 static GtkWidget *treeview = NULL; /* the treeview of names in the accteditor */ |
| 37 static GtkListStore *model = NULL; | 37 static GtkListStore *model = NULL; |
| 38 | 38 |
| 39 static GSList *mod_users = NULL; | 39 static GSList *mod_accounts = NULL; |
| 40 | 40 |
| 41 enum | 41 enum |
| 42 { | 42 { |
| 43 COLUMN_SCREENNAME, | 43 COLUMN_SCREENNAME, |
| 44 COLUMN_ONLINE, | 44 COLUMN_ONLINE, |
| 46 COLUMN_PROTOCOL, | 46 COLUMN_PROTOCOL, |
| 47 COLUMN_DATA, | 47 COLUMN_DATA, |
| 48 NUM_COLUMNS | 48 NUM_COLUMNS |
| 49 }; | 49 }; |
| 50 | 50 |
| 51 struct mod_account { | |
| 52 struct gaim_account *account; | |
| 53 | |
| 54 /* these are temporary */ | |
| 55 int options; | |
| 56 int protocol; | |
| 57 char proto_opt[7][256]; | |
| 58 | |
| 59 /* stuff for modify window */ | |
| 60 GtkWidget *mod; | |
| 61 GtkWidget *main; | |
| 62 GtkWidget *name; | |
| 63 GtkWidget *alias; | |
| 64 GtkWidget *pwdbox; | |
| 65 GtkWidget *pass; | |
| 66 GtkWidget *rempass; | |
| 67 GtkWidget *user_frame; | |
| 68 GtkWidget *proto_frame; | |
| 69 GtkSizeGroup *sg; | |
| 70 GList *opt_entries; | |
| 71 | |
| 72 /* stuff for icon selection */ | |
| 73 char iconfile[256]; | |
| 74 GtkWidget *iconsel; | |
| 75 GtkWidget *iconentry; | |
| 76 GtkWidget *icondlg; | |
| 77 | |
| 78 /* stuff for mail check prompt */ | |
| 79 GtkWidget *checkmail; | |
| 80 | |
| 81 /* stuff for register with server */ | |
| 82 GtkWidget *register_user; | |
| 83 }; | |
| 84 | |
| 85 | |
| 86 struct mod_account_opt { | |
| 87 struct mod_account *ma; | |
| 88 int opt; | |
| 89 }; | |
| 90 | |
| 51 static void acct_signin(GtkCellRendererToggle *cell, gchar *path_str, | 91 static void acct_signin(GtkCellRendererToggle *cell, gchar *path_str, |
| 52 gpointer d); | 92 gpointer d); |
| 53 static void acct_autologin(GtkCellRendererToggle *cell, gchar *path_str, | 93 static void acct_autologin(GtkCellRendererToggle *cell, gchar *path_str, |
| 54 gpointer d); | 94 gpointer d); |
| 55 | 95 |
| 56 static struct mod_user *find_mod_user(struct aim_user *a) | 96 static struct mod_account *mod_account_find(struct gaim_account *a) |
| 57 { | 97 { |
| 58 GSList *m = mod_users; | 98 GSList *m = mod_accounts; |
| 59 while (m) { | 99 while (m) { |
| 60 struct mod_user *u = m->data; | 100 struct mod_account *ma = m->data; |
| 61 if (u->user == a) | 101 if (ma->account == a) |
| 62 return u; | 102 return ma; |
| 63 m = m->next; | 103 m = m->next; |
| 64 } | 104 } |
| 65 return NULL; | 105 return NULL; |
| 66 } | 106 } |
| 67 | 107 |
| 68 static void generate_protocol_options(struct mod_user *, GtkWidget *); | 108 static void generate_protocol_options(struct mod_account *, GtkWidget *); |
| 69 | 109 |
| 70 struct mod_usr_opt { | 110 |
| 71 struct mod_user *user; | 111 struct gaim_connection *new_gaim_conn(struct gaim_account *account) |
| 72 int opt; | |
| 73 }; | |
| 74 | |
| 75 struct gaim_connection *new_gaim_conn(struct aim_user *user) | |
| 76 { | 112 { |
| 77 struct gaim_connection *gc = g_new0(struct gaim_connection, 1); | 113 struct gaim_connection *gc = g_new0(struct gaim_connection, 1); |
| 78 gc->edittype = EDIT_GC; | 114 gc->edittype = EDIT_GC; |
| 79 gc->protocol = user->protocol; | 115 gc->protocol = account->protocol; |
| 80 gc->prpl = find_prpl(user->protocol); | 116 gc->prpl = find_prpl(account->protocol); |
| 81 g_snprintf(gc->username, sizeof(gc->username), "%s", user->username); | 117 g_snprintf(gc->username, sizeof(gc->username), "%s", account->username); |
| 82 g_snprintf(gc->password, sizeof(gc->password), "%s", user->password); | 118 g_snprintf(gc->password, sizeof(gc->password), "%s", account->password); |
| 83 gc->keepalive = 0; | 119 gc->keepalive = 0; |
| 84 gc->inpa = 0; | 120 gc->inpa = 0; |
| 85 gc->buddy_chats = NULL; | 121 gc->buddy_chats = NULL; |
| 86 gc->away = NULL; | 122 gc->away = NULL; |
| 87 gc->away_state = NULL; | 123 gc->away_state = NULL; |
| 88 | 124 |
| 89 connections = g_slist_append(connections, gc); | 125 connections = g_slist_append(connections, gc); |
| 90 | 126 |
| 91 user->gc = gc; | 127 account->gc = gc; |
| 92 gc->user = user; | 128 gc->account = account; |
| 93 | 129 |
| 94 return gc; | 130 return gc; |
| 95 } | 131 } |
| 96 | 132 |
| 97 struct meter_window { | 133 struct meter_window { |
| 112 g = g_slist_next(g); | 148 g = g_slist_next(g); |
| 113 h = m->members; | 149 h = m->members; |
| 114 while (h) { | 150 while (h) { |
| 115 n = (struct buddy *)h->data; | 151 n = (struct buddy *)h->data; |
| 116 h = g_slist_next(h); | 152 h = g_slist_next(h); |
| 117 if(n->user == gc->user) { | 153 if(n->account == gc->account) { |
| 118 n->present = 0; | 154 n->present = 0; |
| 119 } | 155 } |
| 120 } | 156 } |
| 121 } | 157 } |
| 122 g_free(gc->away); | 158 g_free(gc->away); |
| 158 return "Unknown"; | 194 return "Unknown"; |
| 159 } | 195 } |
| 160 | 196 |
| 161 void regenerate_user_list() | 197 void regenerate_user_list() |
| 162 { | 198 { |
| 163 GSList *u = aim_users; | 199 GSList *accounts = gaim_accounts; |
| 164 struct aim_user *a; | 200 struct gaim_account *a; |
| 165 GtkTreeIter iter; | 201 GtkTreeIter iter; |
| 166 | 202 |
| 167 if (!acctedit) | 203 if (!acctedit) |
| 168 return; | 204 return; |
| 169 | 205 |
| 170 gtk_list_store_clear(model); | 206 gtk_list_store_clear(model); |
| 171 | 207 |
| 172 while (u) { | 208 while (accounts) { |
| 173 a = (struct aim_user *)u->data; | 209 a = (struct gaim_account *)accounts->data; |
| 174 | 210 |
| 175 gtk_list_store_append(model, &iter); | 211 gtk_list_store_append(model, &iter); |
| 176 gtk_list_store_set(model, &iter, | 212 gtk_list_store_set(model, &iter, |
| 177 COLUMN_SCREENNAME, a->username, | 213 COLUMN_SCREENNAME, a->username, |
| 178 COLUMN_ONLINE, (a->gc ? TRUE : FALSE), | 214 COLUMN_ONLINE, (a->gc ? TRUE : FALSE), |
| 179 COLUMN_AUTOLOGIN, (a->options & OPT_USR_AUTO), | 215 COLUMN_AUTOLOGIN, (a->options & OPT_ACCT_AUTO), |
| 180 COLUMN_PROTOCOL, proto_name(a->protocol), | 216 COLUMN_PROTOCOL, proto_name(a->protocol), |
| 181 COLUMN_DATA, a, | 217 COLUMN_DATA, a, |
| 182 -1); | 218 -1); |
| 183 u = u->next; | 219 accounts = accounts->next; |
| 184 } | 220 } |
| 185 } | 221 } |
| 186 | 222 |
| 187 static gboolean get_iter_from_data(GtkTreeView *treeview, | 223 static gboolean get_iter_from_data(GtkTreeView *treeview, |
| 188 struct aim_user *a, GtkTreeIter *iter) | 224 struct gaim_account *a, GtkTreeIter *iter) |
| 189 { | 225 { |
| 190 return gtk_tree_model_iter_nth_child(gtk_tree_view_get_model(treeview), | 226 return gtk_tree_model_iter_nth_child(gtk_tree_view_get_model(treeview), |
| 191 iter, NULL, | 227 iter, NULL, |
| 192 g_slist_index(aim_users, a)); | 228 g_slist_index(gaim_accounts, a)); |
| 193 #if 0 | |
| 194 GtkListModel *model = gtk_tree_view_get_model(treeview); | |
| 195 struct aim_user *user; | |
| 196 int i; | |
| 197 | |
| 198 rows = gtk_tree_model_iter_n_children(model, NULL); | |
| 199 | |
| 200 for (i = 0; i < rows; i++) | |
| 201 { | |
| 202 gtk_tree_model_get(model, iter, COLUMN_DATA, &user, -1); | |
| 203 | |
| 204 if (user == a) | |
| 205 return TRUE; | |
| 206 } | |
| 207 | |
| 208 return FALSE; | |
| 209 #endif | |
| 210 } | 229 } |
| 211 | 230 |
| 212 static void add_columns(GtkWidget *treeview) | 231 static void add_columns(GtkWidget *treeview) |
| 213 { | 232 { |
| 214 GtkCellRenderer *renderer; | 233 GtkCellRenderer *renderer; |
| 284 gtk_tree_view_set_reorderable (GTK_TREE_VIEW(treeview), TRUE); | 303 gtk_tree_view_set_reorderable (GTK_TREE_VIEW(treeview), TRUE); |
| 285 gtk_widget_show(win); | 304 gtk_widget_show(win); |
| 286 return win; | 305 return win; |
| 287 } | 306 } |
| 288 | 307 |
| 289 static void delmod(GtkWidget *w, struct mod_user *u) | 308 static void delmod(GtkWidget *w, struct mod_account *ma) |
| 290 { | 309 { |
| 291 mod_users = g_slist_remove(mod_users, u); | 310 mod_accounts = g_slist_remove(mod_accounts, ma); |
| 292 g_free(u); | 311 g_free(ma); |
| 293 } | 312 } |
| 294 | 313 |
| 295 static void mod_opt(GtkWidget *b, struct mod_usr_opt *m) | 314 static void mod_opt(GtkWidget *b, struct mod_account_opt *mao) |
| 296 { | 315 { |
| 297 m->user->options = m->user->options ^ m->opt; | 316 mao->ma->options = mao->ma->options ^ mao->opt; |
| 298 } | 317 } |
| 299 | 318 |
| 300 static void free_muo(GtkWidget *b, struct mod_usr_opt *m) | 319 static void free_mao(GtkWidget *b, struct mod_account_opt *mao) |
| 301 { | 320 { |
| 302 g_free(m); | 321 g_free(mao); |
| 303 } | 322 } |
| 304 | 323 |
| 305 static GtkWidget *acct_button(const char *text, struct mod_user *u, int option, GtkWidget *box) | 324 static GtkWidget *acct_button(const char *text, struct mod_account *ma, int option, GtkWidget *box) |
| 306 { | 325 { |
| 307 GtkWidget *button; | 326 GtkWidget *button; |
| 308 struct mod_usr_opt *muo = g_new0(struct mod_usr_opt, 1); | 327 struct mod_account_opt *mao = g_new0(struct mod_account_opt, 1); |
| 309 button = gtk_check_button_new_with_label(text); | 328 button = gtk_check_button_new_with_label(text); |
| 310 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), (u->options & option)); | 329 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), (ma->options & option)); |
| 311 gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 0); | 330 gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 0); |
| 312 muo->user = u; | 331 mao->ma = ma; |
| 313 muo->opt = option; | 332 mao->opt = option; |
| 314 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(mod_opt), muo); | 333 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(mod_opt), mao); |
| 315 g_signal_connect(GTK_OBJECT(button), "destroy", G_CALLBACK(free_muo), muo); | 334 g_signal_connect(GTK_OBJECT(button), "destroy", G_CALLBACK(free_mao), mao); |
| 316 gtk_widget_show(button); | 335 gtk_widget_show(button); |
| 317 return button; | 336 return button; |
| 318 } | 337 } |
| 319 | 338 |
| 320 static void ok_mod(GtkWidget *w, struct mod_user *u) | 339 static void ok_mod(GtkWidget *w, struct mod_account *ma) |
| 321 { | 340 { |
| 322 GList *tmp; | 341 GList *tmp; |
| 323 const char *txt; | 342 const char *txt; |
| 324 struct aim_user *a; | 343 struct gaim_account *a; |
| 325 struct prpl *p; | 344 struct prpl *p; |
| 326 GtkTreeIter iter; | 345 GtkTreeIter iter; |
| 327 | 346 |
| 328 if (!u->user) { | 347 if (!ma->account) { |
| 329 txt = gtk_entry_get_text(GTK_ENTRY(u->name)); | 348 txt = gtk_entry_get_text(GTK_ENTRY(ma->name)); |
| 330 u->user = new_user(txt, u->protocol, u->options); | 349 ma->account = gaim_account_new(txt, ma->protocol, ma->options); |
| 331 } | 350 } |
| 332 a = u->user; | 351 a = ma->account; |
| 333 | 352 |
| 334 a->options = u->options; | 353 a->options = ma->options; |
| 335 a->protocol = u->protocol; | 354 a->protocol = ma->protocol; |
| 336 txt = gtk_entry_get_text(GTK_ENTRY(u->name)); | 355 txt = gtk_entry_get_text(GTK_ENTRY(ma->name)); |
| 337 g_snprintf(a->username, sizeof(a->username), "%s", txt); | 356 g_snprintf(a->username, sizeof(a->username), "%s", txt); |
| 338 txt = gtk_entry_get_text(GTK_ENTRY(u->alias)); | 357 txt = gtk_entry_get_text(GTK_ENTRY(ma->alias)); |
| 339 g_snprintf(a->alias, sizeof(a->alias), "%s", txt); | 358 g_snprintf(a->alias, sizeof(a->alias), "%s", txt); |
| 340 txt = gtk_entry_get_text(GTK_ENTRY(u->pass)); | 359 txt = gtk_entry_get_text(GTK_ENTRY(ma->pass)); |
| 341 if (a->options & OPT_USR_REM_PASS) | 360 if (a->options & OPT_ACCT_REM_PASS) |
| 342 g_snprintf(a->password, sizeof(a->password), "%s", txt); | 361 g_snprintf(a->password, sizeof(a->password), "%s", txt); |
| 343 else | 362 else |
| 344 a->password[0] = '\0'; | 363 a->password[0] = '\0'; |
| 345 | 364 |
| 346 if (get_iter_from_data(GTK_TREE_VIEW(treeview), a, &iter)) { | 365 if (get_iter_from_data(GTK_TREE_VIEW(treeview), a, &iter)) { |
| 347 gtk_list_store_set(model, &iter, | 366 gtk_list_store_set(model, &iter, |
| 348 COLUMN_SCREENNAME, a->username, | 367 COLUMN_SCREENNAME, a->username, |
| 349 COLUMN_AUTOLOGIN, (a->options & OPT_USR_AUTO), | 368 COLUMN_AUTOLOGIN, (a->options & OPT_ACCT_AUTO), |
| 350 COLUMN_PROTOCOL, proto_name(a->protocol), | 369 COLUMN_PROTOCOL, proto_name(a->protocol), |
| 351 -1); | 370 -1); |
| 352 } | 371 } |
| 353 | 372 |
| 354 #if 0 | 373 #if 0 |
| 355 i = gtk_clist_find_row_from_data(GTK_CLIST(list), a); | 374 i = gtk_clist_find_row_from_data(GTK_CLIST(list), a); |
| 356 gtk_clist_set_text(GTK_CLIST(list), i, 0, a->username); | 375 gtk_clist_set_text(GTK_CLIST(list), i, 0, a->username); |
| 357 gtk_clist_set_text(GTK_CLIST(list), i, 2, | 376 gtk_clist_set_text(GTK_CLIST(list), i, 2, |
| 358 (a->options & OPT_USR_AUTO) ? "True" : "False"); | 377 (a->options & OPT_ACCT_AUTO) ? "True" : "False"); |
| 359 gtk_clist_set_text(GTK_CLIST(list), i, 3, proto_name(a->protocol)); | 378 gtk_clist_set_text(GTK_CLIST(list), i, 3, proto_name(a->protocol)); |
| 360 #endif | 379 #endif |
| 361 | 380 |
| 362 tmp = u->opt_entries; | 381 tmp = ma->opt_entries; |
| 363 while (tmp) { | 382 while (tmp) { |
| 364 GtkEntry *entry = tmp->data; | 383 GtkEntry *entry = tmp->data; |
| 365 int pos = (int)gtk_object_get_user_data(GTK_OBJECT(entry)); | 384 int pos = (int)gtk_object_get_user_data(GTK_OBJECT(entry)); |
| 366 g_snprintf(a->proto_opt[pos], sizeof(a->proto_opt[pos]), "%s", | 385 g_snprintf(a->proto_opt[pos], sizeof(a->proto_opt[pos]), "%s", |
| 367 gtk_entry_get_text(entry)); | 386 gtk_entry_get_text(entry)); |
| 368 tmp = tmp->next; | 387 tmp = tmp->next; |
| 369 } | 388 } |
| 370 if (u->opt_entries) | 389 if (ma->opt_entries) |
| 371 g_list_free(u->opt_entries); | 390 g_list_free(ma->opt_entries); |
| 372 u->opt_entries = NULL; | 391 ma->opt_entries = NULL; |
| 373 | 392 |
| 374 g_snprintf(a->iconfile, sizeof(a->iconfile), "%s", u->iconfile); | 393 g_snprintf(a->iconfile, sizeof(a->iconfile), "%s", ma->iconfile); |
| 375 if (u->icondlg) | 394 if (ma->icondlg) |
| 376 gtk_widget_destroy(u->icondlg); | 395 gtk_widget_destroy(ma->icondlg); |
| 377 u->icondlg = NULL; | 396 ma->icondlg = NULL; |
| 378 | 397 |
| 379 /* | 398 /* |
| 380 * See if user registration is supported/required | 399 * See if user registration is supported/required |
| 381 */ | 400 */ |
| 382 if((p = find_prpl(u->protocol)) == NULL) { | 401 if((p = find_prpl(ma->protocol)) == NULL) { |
| 383 /* TBD: error dialog here! (This should never happen, you know...) */ | 402 /* TBD: error dialog here! (This should never happen, you know...) */ |
| 384 fprintf(stderr, "dbg: couldn't find protocol for protocol number %d!\n", u->protocol); | 403 fprintf(stderr, "dbg: couldn't find protocol for protocol number %d!\n", ma->protocol); |
| 385 fflush(stderr); | 404 fflush(stderr); |
| 386 } else { | 405 } else { |
| 387 if(p->register_user != NULL && | 406 if(p->register_user != NULL && |
| 388 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(u->register_user)) == TRUE) { | 407 gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ma->register_user)) == TRUE) { |
| 389 ref_protocol(p); | 408 ref_protocol(p); |
| 390 p->register_user(a); | 409 p->register_user(a); |
| 391 /* we don't unref the protocol because register user has callbacks | 410 /* we don't unref the protocol because register user has callbacks |
| 392 * that need to get called first, then they will unref the protocol | 411 * that need to get called first, then they will unref the protocol |
| 393 * appropriately */ | 412 * appropriately */ |
| 394 } | 413 } |
| 395 } | 414 } |
| 396 | 415 |
| 397 save_prefs(); | 416 save_prefs(); |
| 398 | 417 |
| 399 gtk_widget_destroy(u->mod); | 418 gtk_widget_destroy(ma->mod); |
| 400 } | 419 } |
| 401 | 420 |
| 402 static void cancel_mod(GtkWidget *w, struct mod_user *u) | 421 static void cancel_mod(GtkWidget *w, struct mod_account *ma) |
| 403 { | 422 { |
| 404 if (u->opt_entries) | 423 if (ma->opt_entries) |
| 405 g_list_free(u->opt_entries); | 424 g_list_free(ma->opt_entries); |
| 406 u->opt_entries = NULL; | 425 ma->opt_entries = NULL; |
| 407 if (u->icondlg) | 426 if (ma->icondlg) |
| 408 gtk_widget_destroy(u->icondlg); | 427 gtk_widget_destroy(ma->icondlg); |
| 409 u->icondlg = NULL; | 428 ma->icondlg = NULL; |
| 410 gtk_widget_destroy(u->mod); | 429 gtk_widget_destroy(ma->mod); |
| 411 } | 430 } |
| 412 | 431 |
| 413 static void set_prot(GtkWidget *opt, int proto) | 432 static void set_prot(GtkWidget *opt, int proto) |
| 414 { | 433 { |
| 415 struct mod_user *u = gtk_object_get_user_data(GTK_OBJECT(opt)); | 434 struct mod_account *ma = gtk_object_get_user_data(GTK_OBJECT(opt)); |
| 416 struct prpl *p, *q; | 435 struct prpl *p, *q; |
| 417 q = find_prpl(proto); | 436 q = find_prpl(proto); |
| 418 if (u->protocol != proto) { | 437 if (ma->protocol != proto) { |
| 419 int i; | 438 int i; |
| 420 for (i = 0; i < 7; i++) | 439 for (i = 0; i < 7; i++) |
| 421 u->proto_opt[i][0] = '\0'; | 440 ma->proto_opt[i][0] = '\0'; |
| 422 p = find_prpl(u->protocol); | 441 p = find_prpl(ma->protocol); |
| 423 | 442 |
| 424 if (!(p->options & OPT_PROTO_NO_PASSWORD) && (q->options & OPT_PROTO_NO_PASSWORD)) { | 443 if (!(p->options & OPT_PROTO_NO_PASSWORD) && (q->options & OPT_PROTO_NO_PASSWORD)) { |
| 425 gtk_widget_hide(u->pwdbox); | 444 gtk_widget_hide(ma->pwdbox); |
| 426 gtk_widget_hide(u->rempass); | 445 gtk_widget_hide(ma->rempass); |
| 427 } else if ((p->options & OPT_PROTO_NO_PASSWORD) && !(q->options & OPT_PROTO_NO_PASSWORD)) { | 446 } else if ((p->options & OPT_PROTO_NO_PASSWORD) && !(q->options & OPT_PROTO_NO_PASSWORD)) { |
| 428 gtk_widget_show(u->pwdbox); | 447 gtk_widget_show(ma->pwdbox); |
| 429 gtk_widget_show(u->rempass); | 448 gtk_widget_show(ma->rempass); |
| 430 } | 449 } |
| 431 if (!(p->options & OPT_PROTO_MAIL_CHECK) && (q->options & OPT_PROTO_MAIL_CHECK)) { | 450 if (!(p->options & OPT_PROTO_MAIL_CHECK) && (q->options & OPT_PROTO_MAIL_CHECK)) { |
| 432 gtk_widget_show(u->checkmail); | 451 gtk_widget_show(ma->checkmail); |
| 433 } else if ((p->options & OPT_PROTO_MAIL_CHECK) && !(q->options & OPT_PROTO_MAIL_CHECK)) { | 452 } else if ((p->options & OPT_PROTO_MAIL_CHECK) && !(q->options & OPT_PROTO_MAIL_CHECK)) { |
| 434 gtk_widget_hide(u->checkmail); | 453 gtk_widget_hide(ma->checkmail); |
| 435 } | 454 } |
| 436 | 455 |
| 437 if (!(p->options & OPT_PROTO_BUDDY_ICON) && (q->options & OPT_PROTO_BUDDY_ICON)) { | 456 if (!(p->options & OPT_PROTO_BUDDY_ICON) && (q->options & OPT_PROTO_BUDDY_ICON)) { |
| 438 gtk_widget_show(u->iconsel); | 457 gtk_widget_show(ma->iconsel); |
| 439 } else if ((p->options & OPT_PROTO_BUDDY_ICON) && !(q->options & OPT_PROTO_BUDDY_ICON)) { | 458 } else if ((p->options & OPT_PROTO_BUDDY_ICON) && !(q->options & OPT_PROTO_BUDDY_ICON)) { |
| 440 gtk_widget_hide(u->iconsel); | 459 gtk_widget_hide(ma->iconsel); |
| 441 } | 460 } |
| 442 | 461 |
| 443 if ((q->options & OPT_PROTO_BUDDY_ICON) || (q->options & OPT_PROTO_MAIL_CHECK)) | 462 if ((q->options & OPT_PROTO_BUDDY_ICON) || (q->options & OPT_PROTO_MAIL_CHECK)) |
| 444 gtk_widget_show(u->user_frame); | 463 gtk_widget_show(ma->user_frame); |
| 445 else | 464 else |
| 446 gtk_widget_hide(u->user_frame); | 465 gtk_widget_hide(ma->user_frame); |
| 447 | 466 |
| 448 u->protocol = proto; | 467 ma->protocol = proto; |
| 449 generate_protocol_options(u, u->main); | 468 generate_protocol_options(ma, ma->main); |
| 450 } | 469 } |
| 451 } | 470 } |
| 452 | 471 |
| 453 static GtkWidget *make_protocol_menu(GtkWidget *box, struct mod_user *u) | 472 static GtkWidget *make_protocol_menu(GtkWidget *box, struct mod_account *ma) |
| 454 { | 473 { |
| 455 GtkWidget *optmenu; | 474 GtkWidget *optmenu; |
| 456 GtkWidget *menu; | 475 GtkWidget *menu; |
| 457 GtkWidget *opt; | 476 GtkWidget *opt; |
| 458 GSList *p = protocols; | 477 GSList *p = protocols; |
| 466 | 485 |
| 467 menu = gtk_menu_new(); | 486 menu = gtk_menu_new(); |
| 468 | 487 |
| 469 while (p) { | 488 while (p) { |
| 470 e = (struct prpl *)p->data; | 489 e = (struct prpl *)p->data; |
| 471 if (e->protocol == u->protocol) | 490 if (e->protocol == ma->protocol) |
| 472 found = TRUE; | 491 found = TRUE; |
| 473 if (!found) | 492 if (!found) |
| 474 count++; | 493 count++; |
| 475 if (e->name) | 494 if (e->name) |
| 476 opt = gtk_menu_item_new_with_label(e->name); | 495 opt = gtk_menu_item_new_with_label(e->name); |
| 477 else | 496 else |
| 478 opt = gtk_menu_item_new_with_label("Unknown"); | 497 opt = gtk_menu_item_new_with_label("Unknown"); |
| 479 gtk_object_set_user_data(GTK_OBJECT(opt), u); | 498 gtk_object_set_user_data(GTK_OBJECT(opt), ma); |
| 480 g_signal_connect(GTK_OBJECT(opt), "activate", | 499 g_signal_connect(GTK_OBJECT(opt), "activate", |
| 481 G_CALLBACK(set_prot), (void *)e->protocol); | 500 G_CALLBACK(set_prot), (void *)e->protocol); |
| 482 gtk_menu_append(GTK_MENU(menu), opt); | 501 gtk_menu_append(GTK_MENU(menu), opt); |
| 483 gtk_widget_show(opt); | 502 gtk_widget_show(opt); |
| 484 p = p->next; | 503 p = p->next; |
| 488 gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu), count); | 507 gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu), count); |
| 489 | 508 |
| 490 return optmenu; | 509 return optmenu; |
| 491 } | 510 } |
| 492 | 511 |
| 493 static void des_icon_sel(GtkWidget *w, struct mod_user *u) | 512 static void des_icon_sel(GtkWidget *w, struct mod_account *ma) |
| 494 { | 513 { |
| 495 w = u->icondlg; | 514 w = ma->icondlg; |
| 496 if (u->icondlg) | 515 if (ma->icondlg) |
| 497 u->icondlg = NULL; | 516 ma->icondlg = NULL; |
| 498 if (w) | 517 if (w) |
| 499 gtk_widget_destroy(w); | 518 gtk_widget_destroy(w); |
| 500 } | 519 } |
| 501 | 520 |
| 502 static void set_icon(GtkWidget *w, struct mod_user *u) | 521 static void set_icon(GtkWidget *w, struct mod_account *ma) |
| 503 { | 522 { |
| 504 GtkWidget *sel = u->icondlg; | 523 GtkWidget *sel = ma->icondlg; |
| 505 const char *file = gtk_file_selection_get_filename(GTK_FILE_SELECTION(sel)); | 524 const char *file = gtk_file_selection_get_filename(GTK_FILE_SELECTION(sel)); |
| 506 | 525 |
| 507 if (file_is_dir(file, sel)) | 526 if (file_is_dir(file, sel)) |
| 508 return; | 527 return; |
| 509 | 528 |
| 510 gtk_entry_set_text(GTK_ENTRY(u->iconentry), file); | 529 gtk_entry_set_text(GTK_ENTRY(ma->iconentry), file); |
| 511 g_snprintf(u->iconfile, sizeof(u->iconfile), "%s", file); | 530 g_snprintf(ma->iconfile, sizeof(ma->iconfile), "%s", file); |
| 512 u->icondlg = NULL; | 531 ma->icondlg = NULL; |
| 513 | 532 |
| 514 gtk_widget_destroy(sel); | 533 gtk_widget_destroy(sel); |
| 515 } | 534 } |
| 516 | 535 |
| 517 static void sel_icon_dlg(GtkWidget *w, struct mod_user *u) | 536 static void sel_icon_dlg(GtkWidget *w, struct mod_account *ma) |
| 518 { | 537 { |
| 519 GtkWidget *dlg; | 538 GtkWidget *dlg; |
| 520 char buf[256]; | 539 char buf[256]; |
| 521 | 540 |
| 522 if (u->icondlg) { | 541 if (ma->icondlg) { |
| 523 gtk_widget_show(u->icondlg); | 542 gtk_widget_show(ma->icondlg); |
| 524 return; | 543 return; |
| 525 } | 544 } |
| 526 | 545 |
| 527 dlg = gtk_file_selection_new(_("Gaim - Load Buddy Icon")); | 546 dlg = gtk_file_selection_new(_("Gaim - Load Buddy Icon")); |
| 528 gtk_file_selection_hide_fileop_buttons(GTK_FILE_SELECTION(dlg)); | 547 gtk_file_selection_hide_fileop_buttons(GTK_FILE_SELECTION(dlg)); |
| 529 if (u->iconfile) { | 548 if (ma->iconfile) { |
| 530 char *tmp = g_dirname(u->iconfile); | 549 char *tmp = g_dirname(ma->iconfile); |
| 531 gtk_file_selection_set_filename(GTK_FILE_SELECTION(dlg), tmp); | 550 gtk_file_selection_set_filename(GTK_FILE_SELECTION(dlg), tmp); |
| 532 g_free(tmp); | 551 g_free(tmp); |
| 533 } else { | 552 } else { |
| 534 g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S, gaim_home_dir()); | 553 g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S, gaim_home_dir()); |
| 535 gtk_file_selection_set_filename(GTK_FILE_SELECTION(dlg), buf); | 554 gtk_file_selection_set_filename(GTK_FILE_SELECTION(dlg), buf); |
| 536 } | 555 } |
| 537 | 556 |
| 538 g_signal_connect(GTK_OBJECT(dlg), "destroy", G_CALLBACK(des_icon_sel), u); | 557 g_signal_connect(GTK_OBJECT(dlg), "destroy", G_CALLBACK(des_icon_sel), ma); |
| 539 g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(dlg)->cancel_button), "clicked", | 558 g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(dlg)->cancel_button), "clicked", |
| 540 G_CALLBACK(des_icon_sel), u); | 559 G_CALLBACK(des_icon_sel), ma); |
| 541 g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(dlg)->ok_button), "clicked", | 560 g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(dlg)->ok_button), "clicked", |
| 542 G_CALLBACK(set_icon), u); | 561 G_CALLBACK(set_icon), ma); |
| 543 | 562 |
| 544 u->icondlg = dlg; | 563 ma->icondlg = dlg; |
| 545 | 564 |
| 546 gtk_widget_show(dlg); | 565 gtk_widget_show(dlg); |
| 547 } | 566 } |
| 548 | 567 |
| 549 static void reset_icon(GtkWidget *w, struct mod_user *u) | 568 static void reset_icon(GtkWidget *w, struct mod_account *ma) |
| 550 { | 569 { |
| 551 u->iconfile[0] = 0; | 570 ma->iconfile[0] = 0; |
| 552 gtk_entry_set_text(GTK_ENTRY(u->iconentry), ""); | 571 gtk_entry_set_text(GTK_ENTRY(ma->iconentry), ""); |
| 553 } | 572 } |
| 554 | 573 |
| 555 static GtkWidget *build_icon_selection(struct mod_user *u, GtkWidget *box) | 574 static GtkWidget *build_icon_selection(struct mod_account *ma, GtkWidget *box) |
| 556 { | 575 { |
| 557 GtkWidget *hbox; | 576 GtkWidget *hbox; |
| 558 GtkWidget *label; | 577 GtkWidget *label; |
| 559 GtkWidget *name; | 578 GtkWidget *name; |
| 560 GtkWidget *browse; | 579 GtkWidget *browse; |
| 561 GtkWidget *reset; | 580 GtkWidget *reset; |
| 562 | 581 |
| 563 if (u->user) | 582 if (ma->account) |
| 564 g_snprintf(u->iconfile, sizeof(u->iconfile), "%s", u->user->iconfile); | 583 g_snprintf(ma->iconfile, sizeof(ma->iconfile), "%s", ma->account->iconfile); |
| 565 | 584 |
| 566 hbox = gtk_hbox_new(FALSE, 0); | 585 hbox = gtk_hbox_new(FALSE, 0); |
| 567 gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 5); | 586 gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 5); |
| 568 gtk_widget_show(hbox); | 587 gtk_widget_show(hbox); |
| 569 | 588 |
| 570 label = gtk_label_new(_("Buddy Icon File:")); | 589 label = gtk_label_new(_("Buddy Icon File:")); |
| 571 gtk_size_group_add_widget(u->sg, label); | 590 gtk_size_group_add_widget(ma->sg, label); |
| 572 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | 591 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
| 573 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | 592 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
| 574 gtk_widget_show(label); | 593 gtk_widget_show(label); |
| 575 | 594 |
| 576 name = gtk_entry_new(); | 595 name = gtk_entry_new(); |
| 577 gtk_entry_set_text(GTK_ENTRY(name), u->iconfile); | 596 gtk_entry_set_text(GTK_ENTRY(name), ma->iconfile); |
| 578 gtk_entry_set_editable(GTK_ENTRY(name), FALSE); | 597 gtk_entry_set_editable(GTK_ENTRY(name), FALSE); |
| 579 gtk_box_pack_start(GTK_BOX(hbox), name, TRUE, TRUE, 5); | 598 gtk_box_pack_start(GTK_BOX(hbox), name, TRUE, TRUE, 5); |
| 580 gtk_widget_show(name); | 599 gtk_widget_show(name); |
| 581 u->iconentry = name; | 600 ma->iconentry = name; |
| 582 | 601 |
| 583 browse = gtk_button_new_with_label(_("Browse")); | 602 browse = gtk_button_new_with_label(_("Browse")); |
| 584 g_signal_connect(GTK_OBJECT(browse), "clicked", G_CALLBACK(sel_icon_dlg), u); | 603 g_signal_connect(GTK_OBJECT(browse), "clicked", G_CALLBACK(sel_icon_dlg), ma); |
| 585 gtk_box_pack_start(GTK_BOX(hbox), browse, FALSE, FALSE, 0); | 604 gtk_box_pack_start(GTK_BOX(hbox), browse, FALSE, FALSE, 0); |
| 586 gtk_widget_show(browse); | 605 gtk_widget_show(browse); |
| 587 | 606 |
| 588 reset = gtk_button_new_with_label(_("Reset")); | 607 reset = gtk_button_new_with_label(_("Reset")); |
| 589 g_signal_connect(GTK_OBJECT(reset), "clicked", G_CALLBACK(reset_icon), u); | 608 g_signal_connect(GTK_OBJECT(reset), "clicked", G_CALLBACK(reset_icon), ma); |
| 590 gtk_box_pack_start(GTK_BOX(hbox), reset, FALSE, FALSE, 0); | 609 gtk_box_pack_start(GTK_BOX(hbox), reset, FALSE, FALSE, 0); |
| 591 gtk_widget_show(reset); | 610 gtk_widget_show(reset); |
| 592 | 611 |
| 593 return hbox; | 612 return hbox; |
| 594 } | 613 } |
| 595 | 614 |
| 596 static void generate_login_options(struct mod_user *u, GtkWidget *box) | 615 static void generate_login_options(struct mod_account *ma, GtkWidget *box) |
| 597 { | 616 { |
| 598 GtkWidget *frame, *frame_parent; | 617 GtkWidget *frame, *frame_parent; |
| 599 GtkWidget *vbox; | 618 GtkWidget *vbox; |
| 600 GtkWidget *hbox; | 619 GtkWidget *hbox; |
| 601 GtkWidget *label; | 620 GtkWidget *label; |
| 611 | 630 |
| 612 hbox = gtk_hbox_new(FALSE, 5); | 631 hbox = gtk_hbox_new(FALSE, 5); |
| 613 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | 632 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
| 614 | 633 |
| 615 label = gtk_label_new(_("Screenname:")); | 634 label = gtk_label_new(_("Screenname:")); |
| 616 gtk_size_group_add_widget(u->sg, label); | 635 gtk_size_group_add_widget(ma->sg, label); |
| 617 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | 636 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
| 618 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | 637 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
| 619 | 638 |
| 620 u->name = gtk_entry_new(); | 639 ma->name = gtk_entry_new(); |
| 621 gtk_box_pack_start(GTK_BOX(hbox), u->name, TRUE, TRUE, 0); | 640 gtk_box_pack_start(GTK_BOX(hbox), ma->name, TRUE, TRUE, 0); |
| 622 | 641 |
| 623 u->pwdbox = gtk_hbox_new(FALSE, 5); | 642 ma->pwdbox = gtk_hbox_new(FALSE, 5); |
| 624 gtk_box_pack_start(GTK_BOX(vbox), u->pwdbox, FALSE, FALSE, 0); | 643 gtk_box_pack_start(GTK_BOX(vbox), ma->pwdbox, FALSE, FALSE, 0); |
| 625 | 644 |
| 626 label = gtk_label_new(_("Password:")); | 645 label = gtk_label_new(_("Password:")); |
| 627 gtk_size_group_add_widget(u->sg, label); | 646 gtk_size_group_add_widget(ma->sg, label); |
| 628 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | 647 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
| 629 gtk_box_pack_start(GTK_BOX(u->pwdbox), label, FALSE, FALSE, 0); | 648 gtk_box_pack_start(GTK_BOX(ma->pwdbox), label, FALSE, FALSE, 0); |
| 630 | 649 |
| 631 u->pass = gtk_entry_new(); | 650 ma->pass = gtk_entry_new(); |
| 632 gtk_box_pack_start(GTK_BOX(u->pwdbox), u->pass, TRUE, TRUE, 0); | 651 gtk_box_pack_start(GTK_BOX(ma->pwdbox), ma->pass, TRUE, TRUE, 0); |
| 633 gtk_entry_set_visibility(GTK_ENTRY(u->pass), FALSE); | 652 gtk_entry_set_visibility(GTK_ENTRY(ma->pass), FALSE); |
| 634 | 653 |
| 635 hbox = gtk_hbox_new(FALSE, 5); | 654 hbox = gtk_hbox_new(FALSE, 5); |
| 636 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | 655 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
| 637 | 656 |
| 638 label = gtk_label_new(_("Alias:")); | 657 label = gtk_label_new(_("Alias:")); |
| 639 gtk_size_group_add_widget(u->sg, label); | 658 gtk_size_group_add_widget(ma->sg, label); |
| 640 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | 659 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
| 641 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | 660 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
| 642 | 661 |
| 643 u->alias = gtk_entry_new(); | 662 ma->alias = gtk_entry_new(); |
| 644 gtk_box_pack_start(GTK_BOX(hbox), u->alias, TRUE, TRUE, 0); | 663 gtk_box_pack_start(GTK_BOX(hbox), ma->alias, TRUE, TRUE, 0); |
| 645 | 664 |
| 646 hbox = gtk_hbox_new(FALSE, 5); | 665 hbox = gtk_hbox_new(FALSE, 5); |
| 647 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | 666 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
| 648 gtk_widget_show(hbox); | 667 gtk_widget_show(hbox); |
| 649 | 668 |
| 650 label = gtk_label_new(_("Protocol:")); | 669 label = gtk_label_new(_("Protocol:")); |
| 651 gtk_size_group_add_widget(u->sg, label); | 670 gtk_size_group_add_widget(ma->sg, label); |
| 652 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | 671 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
| 653 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | 672 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
| 654 | 673 |
| 655 make_protocol_menu(hbox, u); | 674 make_protocol_menu(hbox, ma); |
| 656 | 675 |
| 657 u->rempass = acct_button(_("Remember Password"), u, OPT_USR_REM_PASS, vbox); | 676 ma->rempass = acct_button(_("Remember Password"), ma, OPT_ACCT_REM_PASS, vbox); |
| 658 acct_button(_("Auto-Login"), u, OPT_USR_AUTO, vbox); | 677 acct_button(_("Auto-Login"), ma, OPT_ACCT_AUTO, vbox); |
| 659 | 678 |
| 660 gtk_widget_show_all(frame_parent); | 679 gtk_widget_show_all(frame_parent); |
| 661 | 680 |
| 662 if (u->user) { | 681 if (ma->account) { |
| 663 gtk_entry_set_text(GTK_ENTRY(u->name), u->user->username); | 682 gtk_entry_set_text(GTK_ENTRY(ma->name), ma->account->username); |
| 664 gtk_entry_set_text(GTK_ENTRY(u->alias), u->user->alias); | 683 gtk_entry_set_text(GTK_ENTRY(ma->alias), ma->account->alias); |
| 665 gtk_entry_set_text(GTK_ENTRY(u->pass), u->user->password); | 684 gtk_entry_set_text(GTK_ENTRY(ma->pass), ma->account->password); |
| 666 } | 685 } |
| 667 | 686 |
| 668 p = find_prpl(u->protocol); | 687 p = find_prpl(ma->protocol); |
| 669 if (p && (p->options & OPT_PROTO_NO_PASSWORD)) { | 688 if (p && (p->options & OPT_PROTO_NO_PASSWORD)) { |
| 670 gtk_widget_hide(u->pwdbox); | 689 gtk_widget_hide(ma->pwdbox); |
| 671 gtk_widget_hide(u->rempass); | 690 gtk_widget_hide(ma->rempass); |
| 672 } | 691 } |
| 673 } | 692 } |
| 674 | 693 |
| 675 static void generate_user_options(struct mod_user *u, GtkWidget *box) | 694 static void generate_user_options(struct mod_account *ma, GtkWidget *box) |
| 676 { | 695 { |
| 677 /* This function will add the appropriate (depending on the current | 696 /* This function will add the appropriate (depending on the current |
| 678 * protocol) widgets to frame and return TRUE if there anything | 697 * protocol) widgets to frame and return TRUE if there anything |
| 679 * was added (meaning the frame should be shown) | 698 * was added (meaning the frame should be shown) |
| 680 * Eric will most likely change this (as he does all other submitted code) | 699 * Eric will most likely change this (as he does all other submitted code) |
| 684 /* Sean was right. I did do that. I told him I would. */ | 703 /* Sean was right. I did do that. I told him I would. */ |
| 685 | 704 |
| 686 GtkWidget *vbox; | 705 GtkWidget *vbox; |
| 687 GtkWidget *frame; | 706 GtkWidget *frame; |
| 688 | 707 |
| 689 struct prpl *p = find_prpl(u->protocol); | 708 struct prpl *p = find_prpl(ma->protocol); |
| 690 | 709 |
| 691 frame = make_frame(box, _("User Options")); | 710 frame = make_frame(box, _("User Options")); |
| 692 u->user_frame = gtk_widget_get_parent(gtk_widget_get_parent(frame)); | 711 ma->user_frame = gtk_widget_get_parent(gtk_widget_get_parent(frame)); |
| 693 gtk_widget_show_all(u->user_frame); | 712 gtk_widget_show_all(ma->user_frame); |
| 694 | 713 |
| 695 vbox = gtk_vbox_new(FALSE, 5); | 714 vbox = gtk_vbox_new(FALSE, 5); |
| 696 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); | 715 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); |
| 697 gtk_container_add(GTK_CONTAINER(frame), vbox); | 716 gtk_container_add(GTK_CONTAINER(frame), vbox); |
| 698 gtk_widget_show(vbox); | 717 gtk_widget_show(vbox); |
| 699 | 718 |
| 700 u->checkmail = acct_button(_("New Mail Notifications"), u, OPT_USR_MAIL_CHECK, vbox); | 719 ma->checkmail = acct_button(_("New Mail Notifications"), ma, OPT_ACCT_MAIL_CHECK, vbox); |
| 701 u->iconsel = build_icon_selection(u, vbox); | 720 ma->iconsel = build_icon_selection(ma, vbox); |
| 702 | 721 |
| 703 if (!p) { | 722 if (!p) { |
| 704 gtk_widget_hide(u->user_frame); | 723 gtk_widget_hide(ma->user_frame); |
| 705 return; | 724 return; |
| 706 } | 725 } |
| 707 | 726 |
| 708 if (!(p->options & OPT_PROTO_MAIL_CHECK)) | 727 if (!(p->options & OPT_PROTO_MAIL_CHECK)) |
| 709 gtk_widget_hide(u->checkmail); | 728 gtk_widget_hide(ma->checkmail); |
| 710 if (!(p->options & OPT_PROTO_BUDDY_ICON)) | 729 if (!(p->options & OPT_PROTO_BUDDY_ICON)) |
| 711 gtk_widget_hide(u->iconsel); | 730 gtk_widget_hide(ma->iconsel); |
| 712 | 731 |
| 713 if ((p->options & OPT_PROTO_BUDDY_ICON) || (p->options & OPT_PROTO_MAIL_CHECK)) | 732 if ((p->options & OPT_PROTO_BUDDY_ICON) || (p->options & OPT_PROTO_MAIL_CHECK)) |
| 714 return; | 733 return; |
| 715 gtk_widget_hide(u->user_frame); | 734 gtk_widget_hide(ma->user_frame); |
| 716 } | 735 } |
| 717 | 736 |
| 718 static void generate_protocol_options(struct mod_user *u, GtkWidget *box) | 737 static void generate_protocol_options(struct mod_account *ma, GtkWidget *box) |
| 719 { | 738 { |
| 720 struct prpl *p = find_prpl(u->protocol); | 739 struct prpl *p = find_prpl(ma->protocol); |
| 721 | 740 |
| 722 GList *op, *tmp; | 741 GList *op, *tmp; |
| 723 | 742 |
| 724 GtkWidget *vbox; | 743 GtkWidget *vbox; |
| 725 GtkWidget *hbox; | 744 GtkWidget *hbox; |
| 727 GtkWidget *entry; | 746 GtkWidget *entry; |
| 728 GtkWidget *frame; | 747 GtkWidget *frame; |
| 729 | 748 |
| 730 char buf[256]; | 749 char buf[256]; |
| 731 | 750 |
| 732 if (u->proto_frame) | 751 if (ma->proto_frame) |
| 733 gtk_widget_destroy(u->proto_frame); | 752 gtk_widget_destroy(ma->proto_frame); |
| 734 u->proto_frame = NULL; | 753 ma->proto_frame = NULL; |
| 735 | 754 |
| 736 if (u->opt_entries) { | 755 if (ma->opt_entries) { |
| 737 g_list_free(u->opt_entries); | 756 g_list_free(ma->opt_entries); |
| 738 u->opt_entries = NULL; | 757 ma->opt_entries = NULL; |
| 739 } | 758 } |
| 740 | 759 |
| 741 if (!p) | 760 if (!p) |
| 742 return; | 761 return; |
| 743 | 762 |
| 751 | 770 |
| 752 g_snprintf(buf, sizeof(buf), _("%s Options"), p->name); | 771 g_snprintf(buf, sizeof(buf), _("%s Options"), p->name); |
| 753 frame = make_frame(box, buf); | 772 frame = make_frame(box, buf); |
| 754 | 773 |
| 755 /* BLEH */ | 774 /* BLEH */ |
| 756 u->proto_frame = gtk_widget_get_parent(gtk_widget_get_parent(frame)); | 775 ma->proto_frame = gtk_widget_get_parent(gtk_widget_get_parent(frame)); |
| 757 gtk_widget_show_all(u->proto_frame); | 776 gtk_widget_show_all(ma->proto_frame); |
| 758 | 777 |
| 759 vbox = gtk_vbox_new(FALSE, 5); | 778 vbox = gtk_vbox_new(FALSE, 5); |
| 760 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); | 779 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); |
| 761 gtk_container_add(GTK_CONTAINER(frame), vbox); | 780 gtk_container_add(GTK_CONTAINER(frame), vbox); |
| 762 gtk_widget_show(vbox); | 781 gtk_widget_show(vbox); |
| 767 hbox = gtk_hbox_new(FALSE, 5); | 786 hbox = gtk_hbox_new(FALSE, 5); |
| 768 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | 787 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
| 769 gtk_widget_show(hbox); | 788 gtk_widget_show(hbox); |
| 770 | 789 |
| 771 label = gtk_label_new(puo->label); | 790 label = gtk_label_new(puo->label); |
| 772 gtk_size_group_add_widget(u->sg, label); | 791 gtk_size_group_add_widget(ma->sg, label); |
| 773 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); | 792 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
| 774 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | 793 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
| 775 gtk_widget_show(label); | 794 gtk_widget_show(label); |
| 776 | 795 |
| 777 entry = gtk_entry_new(); | 796 entry = gtk_entry_new(); |
| 778 gtk_box_pack_end(GTK_BOX(hbox), entry, FALSE, FALSE, 0); | 797 gtk_box_pack_end(GTK_BOX(hbox), entry, FALSE, FALSE, 0); |
| 779 gtk_object_set_user_data(GTK_OBJECT(entry), (void *)puo->pos); | 798 gtk_object_set_user_data(GTK_OBJECT(entry), (void *)puo->pos); |
| 780 if (u->proto_opt[puo->pos][0]) { | 799 if (ma->proto_opt[puo->pos][0]) { |
| 781 debug_printf("setting text %s\n", u->proto_opt[puo->pos]); | 800 debug_printf("setting text %s\n", ma->proto_opt[puo->pos]); |
| 782 gtk_entry_set_text(GTK_ENTRY(entry), u->proto_opt[puo->pos]); | 801 gtk_entry_set_text(GTK_ENTRY(entry), ma->proto_opt[puo->pos]); |
| 783 } else { | 802 } else { |
| 784 gtk_entry_set_text(GTK_ENTRY(entry), puo->def); | 803 gtk_entry_set_text(GTK_ENTRY(entry), puo->def); |
| 785 } | 804 } |
| 786 gtk_widget_show(entry); | 805 gtk_widget_show(entry); |
| 787 | 806 |
| 788 u->opt_entries = g_list_append(u->opt_entries, entry); | 807 ma->opt_entries = g_list_append(ma->opt_entries, entry); |
| 789 | 808 |
| 790 op = op->next; | 809 op = op->next; |
| 791 } | 810 } |
| 792 | 811 |
| 793 if(p->register_user != NULL) { | 812 if(p->register_user != NULL) { |
| 794 u->register_user = gtk_check_button_new_with_label(_("Register with server")); | 813 ma->register_user = gtk_check_button_new_with_label(_("Register with server")); |
| 795 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(u->register_user), FALSE); | 814 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(ma->register_user), FALSE); |
| 796 gtk_box_pack_start(GTK_BOX(vbox), u->register_user, FALSE, FALSE, 0); | 815 gtk_box_pack_start(GTK_BOX(vbox), ma->register_user, FALSE, FALSE, 0); |
| 797 gtk_widget_show(u->register_user); | 816 gtk_widget_show(ma->register_user); |
| 798 } | 817 } |
| 799 | 818 |
| 800 } | 819 } |
| 801 | 820 |
| 802 static void show_acct_mod(struct aim_user *a) | 821 static void show_acct_mod(struct gaim_account *a) |
| 803 { | 822 { |
| 804 /* This is the fucking modify account dialog. I've fucking seperated it into | 823 /* This is the fucking modify account dialog. I've fucking seperated it into |
| 805 * three fucking frames: | 824 * three fucking frames: |
| 806 * a fucking Login Options frame, a fucking User Options frame and a fucking | 825 * a fucking Login Options frame, a fucking User Options frame and a fucking |
| 807 * Protcol Options frame. This fucking removes the two fucking tabs, which were | 826 * Protcol Options frame. This fucking removes the two fucking tabs, which |
| 808 * quite fucking uneccessary. Fuck. */ | 827 * were quite fucking uneccessary. Fuck. */ |
| 809 /* -- SeanEgan */ | 828 /* -- SeanEgan */ |
| 810 /* YEAH!! -- ChipX86 */ | 829 /* YEAH!! -- ChipX86 */ |
| 811 GtkWidget *hbox, *vbox; | 830 GtkWidget *hbox, *vbox; |
| 812 GtkWidget *button; | 831 GtkWidget *button; |
| 813 GtkWidget *sep; | 832 GtkWidget *sep; |
| 814 GtkSizeGroup *button_sg; | 833 GtkSizeGroup *button_sg; |
| 815 | 834 |
| 816 struct mod_user *u = find_mod_user(a); | 835 struct mod_account *ma = mod_account_find(a); |
| 817 | 836 |
| 818 if (!u) { | 837 if (!ma) { |
| 819 u = g_new0(struct mod_user, 1); | 838 ma = g_new0(struct mod_account, 1); |
| 820 u->user = a; | 839 ma->account = a; |
| 821 mod_users = g_slist_append(mod_users, u); | 840 mod_accounts = g_slist_append(mod_accounts, ma); |
| 822 | 841 |
| 823 if (a) { | 842 if (a) { |
| 824 int i; | 843 int i; |
| 825 u->options = a->options; | 844 ma->options = a->options; |
| 826 if (find_prpl(a->protocol)) | 845 if (find_prpl(a->protocol)) |
| 827 u->protocol = a->protocol; | 846 ma->protocol = a->protocol; |
| 828 else if (protocols) | 847 else if (protocols) |
| 829 u->protocol = ((struct prpl *)protocols->data)->protocol; | 848 ma->protocol = ((struct prpl *)protocols->data)->protocol; |
| 830 else | 849 else |
| 831 u->protocol = -1; | 850 ma->protocol = -1; |
| 832 g_snprintf(u->iconfile, sizeof(u->iconfile), "%s", a->iconfile); | 851 g_snprintf(ma->iconfile, sizeof(ma->iconfile), "%s", a->iconfile); |
| 833 for (i = 0; i < 7; i++) | 852 for (i = 0; i < 7; i++) |
| 834 g_snprintf(u->proto_opt[i], sizeof(u->proto_opt[i]), "%s", | 853 g_snprintf(ma->proto_opt[i], sizeof(ma->proto_opt[i]), "%s", |
| 835 a->proto_opt[i]); | 854 a->proto_opt[i]); |
| 836 } else { | 855 } else { |
| 837 u->options = OPT_USR_REM_PASS; | 856 ma->options = OPT_ACCT_REM_PASS; |
| 838 if (find_prpl(DEFAULT_PROTO)) | 857 if (find_prpl(DEFAULT_PROTO)) |
| 839 u->protocol = DEFAULT_PROTO; | 858 ma->protocol = DEFAULT_PROTO; |
| 840 else if (protocols) | 859 else if (protocols) |
| 841 u->protocol = ((struct prpl *)protocols->data)->protocol; | 860 ma->protocol = ((struct prpl *)protocols->data)->protocol; |
| 842 else | 861 else |
| 843 u->protocol = -1; | 862 ma->protocol = -1; |
| 844 } | 863 } |
| 845 } else { | 864 } else { |
| 846 gtk_widget_show(u->mod); | 865 gtk_widget_show(ma->mod); |
| 847 return; | 866 return; |
| 848 } | 867 } |
| 849 | 868 |
| 850 u->mod = gtk_window_new(GTK_WINDOW_TOPLEVEL); | 869 ma->mod = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
| 851 gtk_window_set_role(GTK_WINDOW(u->mod), "account"); | 870 gtk_window_set_role(GTK_WINDOW(ma->mod), "account"); |
| 852 gtk_widget_realize(u->mod); | 871 gtk_widget_realize(ma->mod); |
| 853 gtk_window_set_title(GTK_WINDOW(u->mod), _("Gaim - Modify Account")); | 872 gtk_window_set_title(GTK_WINDOW(ma->mod), _("Gaim - Modify Account")); |
| 854 gtk_window_set_policy(GTK_WINDOW(u->mod), FALSE, FALSE, TRUE); /* nothing odd here :) */ | 873 gtk_window_set_policy(GTK_WINDOW(ma->mod), FALSE, FALSE, TRUE); /* nothing odd here :) */ |
| 855 g_signal_connect(GTK_OBJECT(u->mod), "destroy", G_CALLBACK(delmod), u); | 874 g_signal_connect(GTK_OBJECT(ma->mod), "destroy", G_CALLBACK(delmod), ma); |
| 856 | 875 |
| 857 vbox = gtk_vbox_new(FALSE, 6); | 876 vbox = gtk_vbox_new(FALSE, 6); |
| 858 gtk_container_border_width(GTK_CONTAINER(vbox), 6); | 877 gtk_container_border_width(GTK_CONTAINER(vbox), 6); |
| 859 gtk_container_add(GTK_CONTAINER(u->mod), vbox); | 878 gtk_container_add(GTK_CONTAINER(ma->mod), vbox); |
| 860 gtk_widget_show(vbox); | 879 gtk_widget_show(vbox); |
| 861 | 880 |
| 862 u->main = gtk_vbox_new(FALSE, 12); | 881 ma->main = gtk_vbox_new(FALSE, 12); |
| 863 gtk_container_border_width(GTK_CONTAINER(u->main), 6); | 882 gtk_container_border_width(GTK_CONTAINER(ma->main), 6); |
| 864 gtk_box_pack_start(GTK_BOX(vbox), u->main, FALSE, FALSE, 0); | 883 gtk_box_pack_start(GTK_BOX(vbox), ma->main, FALSE, FALSE, 0); |
| 865 gtk_widget_show(u->main); | 884 gtk_widget_show(ma->main); |
| 866 | 885 |
| 867 u->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | 886 ma->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
| 868 | 887 |
| 869 generate_login_options(u, u->main); | 888 generate_login_options(ma, ma->main); |
| 870 generate_user_options(u, u->main); | 889 generate_user_options(ma, ma->main); |
| 871 generate_protocol_options(u, u->main); | 890 generate_protocol_options(ma, ma->main); |
| 872 | 891 |
| 873 hbox = gtk_hbox_new(FALSE, 6); | 892 hbox = gtk_hbox_new(FALSE, 6); |
| 874 gtk_container_set_border_width (GTK_CONTAINER (hbox), 6); | 893 gtk_container_set_border_width (GTK_CONTAINER (hbox), 6); |
| 875 gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | 894 gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
| 876 | 895 |
| 877 button_sg = gtk_size_group_new(GTK_SIZE_GROUP_BOTH); | 896 button_sg = gtk_size_group_new(GTK_SIZE_GROUP_BOTH); |
| 878 | 897 |
| 879 button = gtk_button_new_from_stock(GTK_STOCK_OK); | 898 button = gtk_button_new_from_stock(GTK_STOCK_OK); |
| 880 gtk_size_group_add_widget(button_sg, button); | 899 gtk_size_group_add_widget(button_sg, button); |
| 881 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0); | 900 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0); |
| 882 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(ok_mod), u); | 901 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(ok_mod), ma); |
| 883 | 902 |
| 884 button = gtk_button_new_from_stock(GTK_STOCK_CANCEL); | 903 button = gtk_button_new_from_stock(GTK_STOCK_CANCEL); |
| 885 gtk_size_group_add_widget(button_sg, button); | 904 gtk_size_group_add_widget(button_sg, button); |
| 886 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0); | 905 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0); |
| 887 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(cancel_mod), u); | 906 g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(cancel_mod), ma); |
| 888 | 907 |
| 889 sep = gtk_hseparator_new(); | 908 sep = gtk_hseparator_new(); |
| 890 gtk_box_pack_end (GTK_BOX (vbox), sep, FALSE, FALSE, 0); | 909 gtk_box_pack_end (GTK_BOX (vbox), sep, FALSE, FALSE, 0); |
| 891 gtk_widget_show(sep); | 910 gtk_widget_show(sep); |
| 892 | 911 |
| 893 gtk_widget_show_all(hbox); | 912 gtk_widget_show_all(hbox); |
| 894 gtk_widget_show(u->mod); | 913 gtk_widget_show(ma->mod); |
| 895 } | 914 } |
| 896 | 915 |
| 897 static void add_acct(GtkWidget *w, gpointer d) | 916 static void add_acct(GtkWidget *w, gpointer d) |
| 898 { | 917 { |
| 899 show_acct_mod(NULL); | 918 show_acct_mod(NULL); |
| 900 } | 919 } |
| 901 | 920 |
| 902 static void mod_acct_func(GtkTreeModel *model, GtkTreePath *path, | 921 static void mod_acct_func(GtkTreeModel *model, GtkTreePath *path, |
| 903 GtkTreeIter *iter, gpointer data) | 922 GtkTreeIter *iter, gpointer data) |
| 904 { | 923 { |
| 905 struct aim_user *u; | 924 struct gaim_account *a; |
| 906 | 925 |
| 907 gtk_tree_model_get(model, iter, COLUMN_DATA, &u, -1); | 926 gtk_tree_model_get(model, iter, COLUMN_DATA, &a, -1); |
| 908 | 927 |
| 909 if (u != NULL) | 928 if (a != NULL) |
| 910 show_acct_mod(u); | 929 show_acct_mod(a); |
| 911 } | 930 } |
| 912 | 931 |
| 913 static void mod_acct(GtkWidget *w, gpointer d) | 932 static void mod_acct(GtkWidget *w, gpointer d) |
| 914 { | 933 { |
| 915 GtkTreeSelection *selection; | 934 GtkTreeSelection *selection; |
| 916 | 935 |
| 917 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); | 936 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); |
| 918 | 937 |
| 919 gtk_tree_selection_selected_foreach(selection, mod_acct_func, NULL); | 938 gtk_tree_selection_selected_foreach(selection, mod_acct_func, NULL); |
| 920 | |
| 921 #if 0 | |
| 922 while (l) { | |
| 923 row = (int)l->data; | |
| 924 if (row != -1) { | |
| 925 u = g_slist_nth_data(aim_users, row); | |
| 926 if (u) | |
| 927 show_acct_mod(u); | |
| 928 } | |
| 929 l = l->next; | |
| 930 } | |
| 931 #endif | |
| 932 } | 939 } |
| 933 | 940 |
| 934 struct pass_prompt { | 941 struct pass_prompt { |
| 935 struct aim_user *u; | 942 struct gaim_account *account; |
| 936 GtkWidget *win; | 943 GtkWidget *win; |
| 937 GtkWidget *entry; | 944 GtkWidget *entry; |
| 938 }; | 945 }; |
| 939 static GSList *passes = NULL; | 946 static GSList *passes = NULL; |
| 940 | 947 |
| 941 static struct pass_prompt *find_pass_prompt(struct aim_user *u) | 948 static struct pass_prompt *find_pass_prompt(struct gaim_account *account) |
| 942 { | 949 { |
| 943 GSList *p = passes; | 950 GSList *p = passes; |
| 944 while (p) { | 951 while (p) { |
| 945 struct pass_prompt *r = p->data; | 952 struct pass_prompt *r = p->data; |
| 946 if (r->u == u) | 953 if (r->account == account) |
| 947 return r; | 954 return r; |
| 948 p = p->next; | 955 p = p->next; |
| 949 } | 956 } |
| 950 return NULL; | 957 return NULL; |
| 951 } | 958 } |
| 952 | 959 |
| 953 static void pass_callback(GtkDialog *d, gint resp, struct pass_prompt *p) | 960 static void pass_callback(GtkDialog *d, gint resp, struct pass_prompt *p) |
| 954 { | 961 { |
| 955 if (resp == GTK_RESPONSE_YES) { | 962 if (resp == GTK_RESPONSE_YES) { |
| 956 const char *txt = gtk_entry_get_text(GTK_ENTRY(p->entry)); | 963 const char *txt = gtk_entry_get_text(GTK_ENTRY(p->entry)); |
| 957 g_snprintf(p->u->password, sizeof(p->u->password), "%s", txt); | 964 g_snprintf(p->account->password, sizeof(p->account->password), "%s", txt); |
| 958 serv_login(p->u); | 965 serv_login(p->account); |
| 959 } | 966 } |
| 960 passes = g_slist_remove(passes, p); | 967 passes = g_slist_remove(passes, p); |
| 961 gtk_widget_destroy(p->win); | 968 gtk_widget_destroy(p->win); |
| 962 g_free(p); | 969 g_free(p); |
| 963 } | 970 } |
| 964 | 971 |
| 965 static void do_pass_dlg(struct aim_user *u) | 972 static void do_pass_dlg(struct gaim_account *account) |
| 966 { | 973 { |
| 967 /* we can safely assume that u is not NULL */ | 974 /* we can safely assume that u is not NULL */ |
| 968 struct pass_prompt *p = find_pass_prompt(u); | 975 struct pass_prompt *p = find_pass_prompt(account); |
| 969 GtkWidget *label; | 976 GtkWidget *label; |
| 970 GtkWidget *hbox, *vbox; | 977 GtkWidget *hbox, *vbox; |
| 971 char *labeltext=NULL; | 978 char *labeltext=NULL; |
| 972 char *filename = g_build_filename(DATADIR, "pixmaps", "gaim", "dialogs", "gaim_auth.png", NULL); | 979 char *filename = g_build_filename(DATADIR, "pixmaps", "gaim", "dialogs", "gaim_auth.png", NULL); |
| 973 GtkWidget *img = gtk_image_new_from_file(filename); | 980 GtkWidget *img = gtk_image_new_from_file(filename); |
| 974 g_free(filename); | 981 g_free(filename); |
| 975 | 982 |
| 976 | 983 |
| 977 if (p) { | 984 if (p) { |
| 978 gtk_widget_show(p->win); | 985 gtk_widget_show(p->win); |
| 979 return; | 986 return; |
| 980 } | 987 } |
| 981 | 988 |
| 982 p = g_new0(struct pass_prompt, 1); | 989 p = g_new0(struct pass_prompt, 1); |
| 983 p->u = u; | 990 p->account = account; |
| 984 passes = g_slist_append(passes, p); | 991 passes = g_slist_append(passes, p); |
| 985 | 992 |
| 986 p->win = gtk_dialog_new_with_buttons("", NULL, 0, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, | 993 p->win = gtk_dialog_new_with_buttons("", NULL, 0, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, |
| 987 _("_Login"), GTK_RESPONSE_YES, NULL); | 994 _("_Login"), GTK_RESPONSE_YES, NULL); |
| 988 | 995 |
| 989 gtk_dialog_set_default_response (GTK_DIALOG(p->win), GTK_RESPONSE_YES); | 996 gtk_dialog_set_default_response (GTK_DIALOG(p->win), GTK_RESPONSE_YES); |
| 990 g_signal_connect(G_OBJECT(p->win), "response", G_CALLBACK(pass_callback), p); | 997 g_signal_connect(G_OBJECT(p->win), "response", G_CALLBACK(pass_callback), p); |
| 991 | 998 |
| 1000 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | 1007 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); |
| 1001 | 1008 |
| 1002 vbox = gtk_vbox_new(FALSE, 0); | 1009 vbox = gtk_vbox_new(FALSE, 0); |
| 1003 gtk_container_add(GTK_CONTAINER(hbox), vbox); | 1010 gtk_container_add(GTK_CONTAINER(hbox), vbox); |
| 1004 | 1011 |
| 1005 labeltext = g_strdup_printf(_("Please enter your password for %s.\n\n"), u->username); | 1012 labeltext = g_strdup_printf(_("Please enter your password for %s.\n\n"), |
| 1013 account->username); | |
| 1006 label = gtk_label_new(labeltext); | 1014 label = gtk_label_new(labeltext); |
| 1007 g_free(labeltext); | 1015 g_free(labeltext); |
| 1008 | 1016 |
| 1009 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | 1017 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); |
| 1010 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | 1018 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
| 1011 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); | 1019 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); |
| 1012 | 1020 |
| 1013 hbox = gtk_hbox_new(FALSE, 5); | 1021 hbox = gtk_hbox_new(FALSE, 5); |
| 1014 gtk_container_add(GTK_CONTAINER(vbox), hbox); | 1022 gtk_container_add(GTK_CONTAINER(vbox), hbox); |
| 1015 label = gtk_label_new_with_mnemonic(_("_Password")); | 1023 label = gtk_label_new_with_mnemonic(_("_Password")); |
| 1016 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | 1024 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
| 1017 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); | 1025 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); |
| 1029 gpointer d) | 1037 gpointer d) |
| 1030 { | 1038 { |
| 1031 GtkTreeModel *model = (GtkTreeModel *)d; | 1039 GtkTreeModel *model = (GtkTreeModel *)d; |
| 1032 GtkTreeIter iter; | 1040 GtkTreeIter iter; |
| 1033 | 1041 |
| 1034 struct aim_user *u = NULL; | 1042 struct gaim_account *account = NULL; |
| 1035 struct prpl *p = NULL; | 1043 struct prpl *p = NULL; |
| 1036 | 1044 |
| 1037 gtk_tree_model_get_iter_from_string(model, &iter, path_str); | 1045 gtk_tree_model_get_iter_from_string(model, &iter, path_str); |
| 1038 gtk_tree_model_get(model, &iter, COLUMN_DATA, &u, -1); | 1046 gtk_tree_model_get(model, &iter, COLUMN_DATA, &account, -1); |
| 1039 | 1047 |
| 1040 p = find_prpl(u->protocol); | 1048 p = find_prpl(account->protocol); |
| 1041 if (!u->gc && p && p->login) { | 1049 if (!account->gc && p && p->login) { |
| 1042 struct prpl *p = find_prpl(u->protocol); | 1050 struct prpl *p = find_prpl(account->protocol); |
| 1043 if (p && !(p->options & OPT_PROTO_NO_PASSWORD) && | 1051 if (p && !(p->options & OPT_PROTO_NO_PASSWORD) && |
| 1044 !(p->options & OPT_PROTO_PASSWORD_OPTIONAL) && !u->password[0]) { | 1052 !(p->options & OPT_PROTO_PASSWORD_OPTIONAL) && !account->password[0]) { |
| 1045 do_pass_dlg(u); | 1053 do_pass_dlg(account); |
| 1046 } else { | 1054 } else { |
| 1047 serv_login(u); | 1055 serv_login(account); |
| 1048 } | 1056 } |
| 1049 } else if (u->gc) { | 1057 } else if (account->gc) { |
| 1050 u->gc->wants_to_die = TRUE; | 1058 account->gc->wants_to_die = TRUE; |
| 1051 signoff(u->gc); | 1059 signoff(account->gc); |
| 1052 } else { | 1060 } else { |
| 1053 if (u->protocol == PROTO_TOC) | 1061 if (account->protocol == PROTO_TOC) |
| 1054 do_error_dialog(_("TOC not found."), | 1062 do_error_dialog(_("TOC not found."), |
| 1055 _("You have attempted to login an IM account using the " | 1063 _("You have attempted to login an IM account using the " |
| 1056 "TOC protocol. Because this protocol is inferior to " | 1064 "TOC protocol. Because this protocol is inferior to " |
| 1057 "OSCAR, it is now compiled as a plugin by default. " | 1065 "OSCAR, it is now compiled as a plugin by default. " |
| 1058 "To login, edit this account to use OSCAR or load the " | 1066 "To login, edit this account to use OSCAR or load the " |
| 1069 gpointer d) | 1077 gpointer d) |
| 1070 { | 1078 { |
| 1071 GtkTreeModel *model = (GtkTreeModel *)d; | 1079 GtkTreeModel *model = (GtkTreeModel *)d; |
| 1072 GtkTreeIter iter; | 1080 GtkTreeIter iter; |
| 1073 | 1081 |
| 1074 struct aim_user *u = NULL; | 1082 struct gaim_account *account = NULL; |
| 1075 | 1083 |
| 1076 gtk_tree_model_get_iter_from_string(model, &iter, path_str); | 1084 gtk_tree_model_get_iter_from_string(model, &iter, path_str); |
| 1077 gtk_tree_model_get(model, &iter, COLUMN_DATA, &u, -1); | 1085 gtk_tree_model_get(model, &iter, COLUMN_DATA, &account, -1); |
| 1078 | 1086 |
| 1079 u->options ^= OPT_USR_AUTO; | 1087 account->options ^= OPT_ACCT_AUTO; |
| 1080 | 1088 |
| 1081 gtk_list_store_set(GTK_LIST_STORE(model), &iter, | 1089 gtk_list_store_set(GTK_LIST_STORE(model), &iter, |
| 1082 COLUMN_AUTOLOGIN, (u->options & OPT_USR_AUTO), -1); | 1090 COLUMN_AUTOLOGIN, (account->options & OPT_ACCT_AUTO), -1); |
| 1083 | 1091 |
| 1084 save_prefs(); | 1092 save_prefs(); |
| 1085 } | 1093 } |
| 1086 | 1094 |
| 1087 static void do_del_acct(struct aim_user *u) | 1095 static void do_del_acct(struct gaim_account *account) |
| 1088 { | 1096 { |
| 1089 GtkTreeIter iter; | 1097 GtkTreeIter iter; |
| 1090 GSList *grps = groups, *buds; | 1098 GSList *grps = groups, *buds; |
| 1091 | 1099 |
| 1092 if (u->gc) { | 1100 if (account->gc) { |
| 1093 u->gc->wants_to_die = TRUE; | 1101 account->gc->wants_to_die = TRUE; |
| 1094 signoff(u->gc); | 1102 signoff(account->gc); |
| 1095 } | 1103 } |
| 1096 | 1104 |
| 1097 if (get_iter_from_data(GTK_TREE_VIEW(treeview), u, &iter)) { | 1105 if (get_iter_from_data(GTK_TREE_VIEW(treeview), account, &iter)) { |
| 1098 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); | 1106 gtk_list_store_remove(GTK_LIST_STORE(model), &iter); |
| 1099 } | 1107 } |
| 1100 | 1108 |
| 1101 | 1109 |
| 1102 /* remove the buddies for the account we just destroyed */ | 1110 /* remove the buddies for the account we just destroyed */ |
| 1105 grps = grps->next; | 1113 grps = grps->next; |
| 1106 buds = g->members; | 1114 buds = g->members; |
| 1107 while(buds) { | 1115 while(buds) { |
| 1108 struct buddy *b = buds->data; | 1116 struct buddy *b = buds->data; |
| 1109 buds = buds->next; | 1117 buds = buds->next; |
| 1110 if(b->user == u) { | 1118 if(b->account == account) { |
| 1111 /* sigh, someday we'll get a central gaim_buddy_free() */ | 1119 /* sigh, someday we'll get a central gaim_buddy_free() */ |
| 1112 g->members = g_slist_remove(g->members, b); | 1120 g->members = g_slist_remove(g->members, b); |
| 1113 g_hash_table_destroy(b->settings); | 1121 g_hash_table_destroy(b->settings); |
| 1114 g_free(b); | 1122 g_free(b); |
| 1115 } | 1123 } |
| 1119 groups = g_slist_remove(groups, g); | 1127 groups = g_slist_remove(groups, g); |
| 1120 g_free(g); | 1128 g_free(g); |
| 1121 } | 1129 } |
| 1122 } | 1130 } |
| 1123 | 1131 |
| 1124 aim_users = g_slist_remove(aim_users, u); | 1132 gaim_accounts = g_slist_remove(gaim_accounts, account); |
| 1125 | 1133 |
| 1126 gaim_blist_save(); | 1134 gaim_blist_save(); |
| 1127 | 1135 |
| 1128 save_prefs(); | 1136 save_prefs(); |
| 1129 } | 1137 } |
| 1130 | 1138 |
| 1131 static void del_acct_func(GtkTreeModel *model, GtkTreePath *path, | 1139 static void del_acct_func(GtkTreeModel *model, GtkTreePath *path, |
| 1132 GtkTreeIter *iter, gpointer data) | 1140 GtkTreeIter *iter, gpointer data) |
| 1133 { | 1141 { |
| 1134 struct aim_user *u; | 1142 struct gaim_account *account; |
| 1135 | 1143 |
| 1136 gtk_tree_model_get(model, iter, COLUMN_DATA, &u, -1); | 1144 gtk_tree_model_get(model, iter, COLUMN_DATA, &account, -1); |
| 1137 | 1145 |
| 1138 if (u != NULL) { | 1146 if (account != NULL) { |
| 1139 char buf[8192]; | 1147 char buf[8192]; |
| 1140 | 1148 |
| 1141 g_snprintf(buf, sizeof(buf), | 1149 g_snprintf(buf, sizeof(buf), |
| 1142 _("Are you sure you want to delete %s?"), u->username); | 1150 _("Are you sure you want to delete %s?"), account->username); |
| 1143 do_ask_dialog(buf, NULL, u, _("Delete"), do_del_acct, _("Cancel"), NULL, NULL, FALSE); | 1151 do_ask_dialog(buf, NULL, account, _("Delete"), do_del_acct, _("Cancel"), NULL, NULL, FALSE); |
| 1144 } | 1152 } |
| 1145 } | 1153 } |
| 1146 | 1154 |
| 1147 static void del_acct(GtkWidget *w, gpointer d) | 1155 static void del_acct(GtkWidget *w, gpointer d) |
| 1148 { | 1156 { |
| 1150 | 1158 |
| 1151 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); | 1159 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); |
| 1152 | 1160 |
| 1153 gtk_tree_selection_selected_foreach(selection, del_acct_func, NULL); | 1161 gtk_tree_selection_selected_foreach(selection, del_acct_func, NULL); |
| 1154 } | 1162 } |
| 1155 | |
| 1156 #if 0 | |
| 1157 static void sel_auto(gpointer w, gpointer d) | |
| 1158 { | |
| 1159 GSList *l = aim_users; | |
| 1160 struct aim_user *u; | |
| 1161 int i = 0; /* faster than doing g_list_index each time */ | |
| 1162 while (l) { | |
| 1163 u = l->data; | |
| 1164 l = l->next; | |
| 1165 if (u->options & OPT_USR_AUTO) | |
| 1166 gtk_clist_select_row(GTK_CLIST(list), i, -1); | |
| 1167 else | |
| 1168 gtk_clist_unselect_row(GTK_CLIST(list), i, -1); | |
| 1169 i++; | |
| 1170 } | |
| 1171 } | |
| 1172 #endif | |
| 1173 | 1163 |
| 1174 void account_editor(GtkWidget *w, GtkWidget *W) | 1164 void account_editor(GtkWidget *w, GtkWidget *W) |
| 1175 { | 1165 { |
| 1176 /* please kill me */ | 1166 /* please kill me */ |
| 1177 GtkWidget *vbox; | 1167 GtkWidget *vbox; |
| 1358 } | 1348 } |
| 1359 | 1349 |
| 1360 redo_buddy_list(); | 1350 redo_buddy_list(); |
| 1361 gaim_setup(gc); | 1351 gaim_setup(gc); |
| 1362 | 1352 |
| 1363 gc->user->connecting = FALSE; | 1353 gc->account->connecting = FALSE; |
| 1364 connecting_count--; | 1354 connecting_count--; |
| 1365 debug_printf("connecting_count: %d\n", connecting_count); | 1355 debug_printf("connecting_count: %d\n", connecting_count); |
| 1366 | 1356 |
| 1367 plugin_event(event_signon, gc); | 1357 plugin_event(event_signon, gc); |
| 1368 system_log(log_signon, gc, NULL, OPT_LOG_BUDDY_SIGNON | OPT_LOG_MY_SIGNON); | 1358 system_log(log_signon, gc, NULL, OPT_LOG_BUDDY_SIGNON | OPT_LOG_MY_SIGNON); |
| 1384 | 1374 |
| 1385 for(grps = groups; grps; grps = grps->next) { | 1375 for(grps = groups; grps; grps = grps->next) { |
| 1386 struct group *g = grps->data; | 1376 struct group *g = grps->data; |
| 1387 for(buds = g->members; buds; buds = buds->next) { | 1377 for(buds = g->members; buds; buds = buds->next) { |
| 1388 struct buddy *b = buds->data; | 1378 struct buddy *b = buds->data; |
| 1389 if(b->user->gc == gc) { | 1379 if(b->account == gc->account) { |
| 1390 add_buds = g_list_append(add_buds, b->name); | 1380 add_buds = g_list_append(add_buds, b->name); |
| 1391 } | 1381 } |
| 1392 } | 1382 } |
| 1393 } | 1383 } |
| 1394 | 1384 |
| 1401 | 1391 |
| 1402 /* everything for the account editor */ | 1392 /* everything for the account editor */ |
| 1403 if (!acctedit) | 1393 if (!acctedit) |
| 1404 return; | 1394 return; |
| 1405 | 1395 |
| 1406 if (get_iter_from_data(GTK_TREE_VIEW(treeview), gc->user, &iter)) { | 1396 if (get_iter_from_data(GTK_TREE_VIEW(treeview), gc->account, &iter)) { |
| 1407 gtk_list_store_set(model, &iter, | 1397 gtk_list_store_set(model, &iter, |
| 1408 COLUMN_ONLINE, TRUE, | 1398 COLUMN_ONLINE, TRUE, |
| 1409 COLUMN_PROTOCOL, gc->prpl->name, | 1399 COLUMN_PROTOCOL, gc->prpl->name, |
| 1410 -1); | 1400 -1); |
| 1411 } | 1401 } |
| 1412 | 1402 |
| 1413 /* Update the conversation windows that use this account. */ | 1403 /* Update the conversation windows that use this account. */ |
| 1414 for (l = gaim_get_conversations(); l != NULL; l = l->next) { | 1404 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
| 1415 struct gaim_conversation *conv = (struct gaim_conversation *)l->data; | 1405 struct gaim_conversation *conv = (struct gaim_conversation *)l->data; |
| 1416 | 1406 |
| 1417 if (gaim_conversation_get_user(conv) == gc->user) { | 1407 if (gaim_conversation_get_account(conv) == gc->account) { |
| 1418 gaim_conversation_update(conv, GAIM_CONV_UPDATE_USER); | 1408 gaim_conversation_update(conv, GAIM_CONV_UPDATE_ACCOUNT); |
| 1419 } | 1409 } |
| 1420 } | 1410 } |
| 1421 } | 1411 } |
| 1422 | 1412 |
| 1423 void account_offline(struct gaim_connection *gc) | 1413 void account_offline(struct gaim_connection *gc) |
| 1430 kill_meter(meter); | 1420 kill_meter(meter); |
| 1431 meters = g_slist_remove(meters, meter); | 1421 meters = g_slist_remove(meters, meter); |
| 1432 g_free(meter); | 1422 g_free(meter); |
| 1433 } | 1423 } |
| 1434 debug_printf("Disconnecting. user = %p, gc = %p (%p)\n", | 1424 debug_printf("Disconnecting. user = %p, gc = %p (%p)\n", |
| 1435 gc->user, gc->user->gc, gc); | 1425 gc->account, gc->account->gc, gc); |
| 1436 gc->user->gc = NULL; /* wasn't that awkward? */ | 1426 gc->account->gc = NULL; /* wasn't that awkward? */ |
| 1437 | 1427 |
| 1438 /* take these buddies out of the edit tree */ | 1428 /* take these buddies out of the edit tree */ |
| 1439 build_edit_tree(); | 1429 build_edit_tree(); |
| 1440 | 1430 |
| 1441 if (!acctedit) | 1431 if (!acctedit) |
| 1442 return; | 1432 return; |
| 1443 | 1433 |
| 1444 if (get_iter_from_data(GTK_TREE_VIEW(treeview), gc->user, &iter)) { | 1434 if (get_iter_from_data(GTK_TREE_VIEW(treeview), gc->account, &iter)) { |
| 1445 gtk_list_store_set(model, &iter, COLUMN_ONLINE, FALSE, -1); | 1435 gtk_list_store_set(model, &iter, COLUMN_ONLINE, FALSE, -1); |
| 1446 } | 1436 } |
| 1447 | 1437 |
| 1448 /* Update the conversation windows that use this account. */ | 1438 /* Update the conversation windows that use this account. */ |
| 1449 for (l = gaim_get_conversations(); l != NULL; l = l->next) { | 1439 for (l = gaim_get_conversations(); l != NULL; l = l->next) { |
| 1450 struct gaim_conversation *conv = (struct gaim_conversation *)l->data; | 1440 struct gaim_conversation *conv = (struct gaim_conversation *)l->data; |
| 1451 | 1441 |
| 1452 if (gaim_conversation_get_user(conv) == gc->user) { | 1442 if (gaim_conversation_get_account(conv) == gc->account) { |
| 1453 gaim_conversation_update(conv, GAIM_CONV_UPDATE_USER); | 1443 gaim_conversation_update(conv, GAIM_CONV_UPDATE_ACCOUNT); |
| 1454 } | 1444 } |
| 1455 } | 1445 } |
| 1456 } | 1446 } |
| 1457 | 1447 |
| 1458 void auto_login() | 1448 void auto_login() |
| 1459 { | 1449 { |
| 1460 GSList *u = aim_users; | 1450 GSList *accts = gaim_accounts; |
| 1461 struct aim_user *a = NULL; | 1451 struct gaim_account *a = NULL; |
| 1462 | 1452 |
| 1463 while (u) { | 1453 while (accts) { |
| 1464 a = (struct aim_user *)u->data; | 1454 a = (struct gaim_account *)accts->data; |
| 1465 if ((a->options & OPT_USR_AUTO) && (a->options & OPT_USR_REM_PASS)) { | 1455 if ((a->options & OPT_ACCT_AUTO) && (a->options & OPT_ACCT_REM_PASS)) { |
| 1466 serv_login(a); | 1456 serv_login(a); |
| 1467 } | 1457 } |
| 1468 u = u->next; | 1458 accts = accts->next; |
| 1469 } | 1459 } |
| 1470 } | 1460 } |
| 1471 | 1461 |
| 1472 /* | 1462 /* |
| 1473 * d:)->-< | 1463 * d:)->-< |
| 1495 GtkWidget *graphic; | 1485 GtkWidget *graphic; |
| 1496 GtkWidget *label; | 1486 GtkWidget *label; |
| 1497 GtkWidget *nest_vbox; | 1487 GtkWidget *nest_vbox; |
| 1498 GString *name_to_print; | 1488 GString *name_to_print; |
| 1499 struct signon_meter *meter; | 1489 struct signon_meter *meter; |
| 1500 | 1490 |
| 1501 name_to_print = g_string_new(gc->username); | 1491 name_to_print = g_string_new(gc->username); |
| 1502 | 1492 |
| 1503 meter = g_new0(struct signon_meter, 1); | 1493 meter = g_new0(struct signon_meter, 1); |
| 1504 | 1494 |
| 1505 (*rows)++; | 1495 (*rows)++; |
| 1506 gtk_table_resize (table, *rows, 4); | 1496 gtk_table_resize (table, *rows, 4); |
| 1507 | 1497 |
| 1508 graphic = create_meter_pixmap( widget , gc); | 1498 graphic = create_meter_pixmap( widget , gc); |
| 1509 | 1499 |
| 1510 nest_vbox = gtk_vbox_new (FALSE, 0); | 1500 nest_vbox = gtk_vbox_new (FALSE, 0); |
| 1511 | 1501 |
| 1512 g_string_prepend(name_to_print, _("Signon: ")); | 1502 g_string_prepend(name_to_print, _("Signon: ")); |
| 1513 label = gtk_label_new (name_to_print->str); | 1503 label = gtk_label_new (name_to_print->str); |
| 1514 g_string_free(name_to_print, TRUE); | 1504 g_string_free(name_to_print, TRUE); |
| 1515 gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); | 1505 gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); |
| 1516 | 1506 |
| 1517 meter->status = gtk_statusbar_new(); | 1507 meter->status = gtk_statusbar_new(); |
| 1518 gtk_widget_set_usize(meter->status, 250, 0); | 1508 gtk_widget_set_usize(meter->status, 250, 0); |
| 1519 | 1509 |
| 1520 meter->progress = gtk_progress_bar_new (); | 1510 meter->progress = gtk_progress_bar_new (); |
| 1521 | 1511 |
| 1522 meter->button = gtk_button_new_with_label (_("Cancel")); | 1512 meter->button = gtk_button_new_with_label (_("Cancel")); |
| 1523 g_signal_connect (GTK_OBJECT (meter->button), "clicked", G_CALLBACK (cancel_signon), meter); | 1513 g_signal_connect (GTK_OBJECT (meter->button), "clicked", G_CALLBACK (cancel_signon), meter); |
| 1524 | 1514 |
| 1525 gtk_table_attach (GTK_TABLE (table), graphic, 0, 1, *rows, *rows+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); | 1515 gtk_table_attach (GTK_TABLE (table), graphic, 0, 1, *rows, *rows+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); |
| 1526 gtk_table_attach (GTK_TABLE (table), nest_vbox, 1, 2, *rows, *rows+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); | 1516 gtk_table_attach (GTK_TABLE (table), nest_vbox, 1, 2, *rows, *rows+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); |
| 1527 gtk_box_pack_start (GTK_BOX (nest_vbox), GTK_WIDGET (label), FALSE, FALSE, 0); | 1517 gtk_box_pack_start (GTK_BOX (nest_vbox), GTK_WIDGET (label), FALSE, FALSE, 0); |
| 1528 gtk_box_pack_start (GTK_BOX (nest_vbox), GTK_WIDGET (meter->status), FALSE, FALSE, 0); | 1518 gtk_box_pack_start (GTK_BOX (nest_vbox), GTK_WIDGET (meter->status), FALSE, FALSE, 0); |
| 1529 gtk_table_attach (GTK_TABLE (table), meter->progress, 2, 3, *rows, *rows+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); | 1519 gtk_table_attach (GTK_TABLE (table), meter->progress, 2, 3, *rows, *rows+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); |
| 1530 gtk_table_attach (GTK_TABLE (table), meter->button, 3, 4, *rows, *rows+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); | 1520 gtk_table_attach (GTK_TABLE (table), meter->button, 3, 4, *rows, *rows+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0); |
| 1531 | 1521 |
| 1532 gtk_widget_show_all (GTK_WIDGET (meter_win->window)); | 1522 gtk_widget_show_all (GTK_WIDGET (meter_win->window)); |
| 1533 | 1523 |
| 1534 meter_win->active_count++; | 1524 meter_win->active_count++; |
| 1535 | 1525 |
| 1536 return meter; | 1526 return meter; |
| 1537 } | 1527 } |
| 1538 | 1528 |
| 1539 static void loop_cancel () { | 1529 static void loop_cancel () { |
| 1540 GSList *m = meters; | 1530 GSList *m = meters; |
| 1600 gtk_statusbar_pop(GTK_STATUSBAR(meter->status), 1); | 1590 gtk_statusbar_pop(GTK_STATUSBAR(meter->status), 1); |
| 1601 gtk_statusbar_push(GTK_STATUSBAR(meter->status), 1, message); | 1591 gtk_statusbar_push(GTK_STATUSBAR(meter->status), 1, message); |
| 1602 } | 1592 } |
| 1603 | 1593 |
| 1604 struct kick_dlg { | 1594 struct kick_dlg { |
| 1605 struct aim_user *user; | 1595 struct gaim_account *account; |
| 1606 GtkWidget *dlg; | 1596 GtkWidget *dlg; |
| 1607 }; | 1597 }; |
| 1608 static GSList *kicks = NULL; | 1598 static GSList *kicks = NULL; |
| 1609 | 1599 |
| 1610 static struct kick_dlg *find_kick_dlg(struct aim_user *u) | 1600 static struct kick_dlg *find_kick_dlg(struct gaim_account *account) |
| 1611 { | 1601 { |
| 1612 GSList *k = kicks; | 1602 GSList *k = kicks; |
| 1613 while (k) { | 1603 while (k) { |
| 1614 struct kick_dlg *d = k->data; | 1604 struct kick_dlg *d = k->data; |
| 1615 if (d->user == u) | 1605 if (d->account == account) |
| 1616 return d; | 1606 return d; |
| 1617 k = k->next; | 1607 k = k->next; |
| 1618 } | 1608 } |
| 1619 return NULL; | 1609 return NULL; |
| 1620 } | 1610 } |
| 1632 char *details, | 1622 char *details, |
| 1633 char *title, | 1623 char *title, |
| 1634 char *prologue) | 1624 char *prologue) |
| 1635 { | 1625 { |
| 1636 char buf[2048]; | 1626 char buf[2048]; |
| 1637 struct kick_dlg *k = find_kick_dlg(gc->user); | 1627 struct kick_dlg *k = find_kick_dlg(gc->account); |
| 1638 struct signon_meter *meter = find_signon_meter(gc); | 1628 struct signon_meter *meter = find_signon_meter(gc); |
| 1639 sprintf(buf, _("%s\n%s: %s"), full_date(), prologue, details); | 1629 sprintf(buf, _("%s\n%s: %s"), full_date(), prologue, details); |
| 1640 if (k) | 1630 if (k) |
| 1641 gtk_widget_destroy(k->dlg); | 1631 gtk_widget_destroy(k->dlg); |
| 1642 k = g_new0(struct kick_dlg, 1); | 1632 k = g_new0(struct kick_dlg, 1); |
| 1643 k->user = gc->user; | 1633 k->account = gc->account; |
| 1644 k->dlg = do_error_dialog(title, buf, GAIM_ERROR); | 1634 k->dlg = do_error_dialog(title, buf, GAIM_ERROR); |
| 1645 kicks = g_slist_append(kicks, k); | 1635 kicks = g_slist_append(kicks, k); |
| 1646 g_signal_connect(GTK_OBJECT(k->dlg), "destroy", G_CALLBACK(set_kick_null), k); | 1636 g_signal_connect(GTK_OBJECT(k->dlg), "destroy", G_CALLBACK(set_kick_null), k); |
| 1647 if (meter) { | 1637 if (meter) { |
| 1648 kill_meter(meter); | 1638 kill_meter(meter); |
| 1710 plugin_event(event_signoff, gc); | 1700 plugin_event(event_signoff, gc); |
| 1711 system_log(log_signoff, gc, NULL, OPT_LOG_BUDDY_SIGNON | OPT_LOG_MY_SIGNON); | 1701 system_log(log_signoff, gc, NULL, OPT_LOG_BUDDY_SIGNON | OPT_LOG_MY_SIGNON); |
| 1712 /* set this in case the plugin died before really connecting. | 1702 /* set this in case the plugin died before really connecting. |
| 1713 do it after calling the plugins so they can determine if | 1703 do it after calling the plugins so they can determine if |
| 1714 this user was ever on-line or not */ | 1704 this user was ever on-line or not */ |
| 1715 if (gc->user->connecting) { | 1705 if (gc->account->connecting) { |
| 1716 gc->user->connecting = FALSE; | 1706 gc->account->connecting = FALSE; |
| 1717 connecting_count--; | 1707 connecting_count--; |
| 1718 } | 1708 } |
| 1719 debug_printf("connecting_count: %d\n", connecting_count); | 1709 debug_printf("connecting_count: %d\n", connecting_count); |
| 1720 serv_close(gc); | 1710 serv_close(gc); |
| 1721 | 1711 |
| 1744 destroy_buddy(); | 1734 destroy_buddy(); |
| 1745 | 1735 |
| 1746 show_login(); | 1736 show_login(); |
| 1747 } | 1737 } |
| 1748 | 1738 |
| 1749 struct aim_user *new_user(const char *name, int proto, int opts) | 1739 struct gaim_account *gaim_account_new(const char *name, int proto, int opts) |
| 1750 { | 1740 { |
| 1751 struct aim_user *u = g_new0(struct aim_user, 1); | 1741 struct gaim_account *account = g_new0(struct gaim_account, 1); |
| 1752 g_snprintf(u->username, sizeof(u->username), "%s", name); | 1742 g_snprintf(account->username, sizeof(account->username), "%s", name); |
| 1753 g_snprintf(u->user_info, sizeof(u->user_info), "%s", DEFAULT_INFO); | 1743 g_snprintf(account->user_info, sizeof(account->user_info), "%s", DEFAULT_INFO); |
| 1754 u->protocol = proto; | 1744 account->protocol = proto; |
| 1755 u->options = opts; | 1745 account->options = opts; |
| 1756 u->permit = NULL; | 1746 account->permit = NULL; |
| 1757 u->deny = NULL; | 1747 account->deny = NULL; |
| 1758 aim_users = g_slist_append(aim_users, u); | 1748 gaim_accounts = g_slist_append(gaim_accounts, account); |
| 1759 | 1749 |
| 1760 if (treeview) { | 1750 if (treeview) { |
| 1761 GtkTreeIter iter; | 1751 GtkTreeIter iter; |
| 1762 | 1752 |
| 1763 gtk_list_store_append(model, &iter); | 1753 gtk_list_store_append(model, &iter); |
| 1764 gtk_list_store_set(model, &iter, | 1754 gtk_list_store_set(model, &iter, |
| 1765 COLUMN_SCREENNAME, u->username, | 1755 COLUMN_SCREENNAME, account->username, |
| 1766 COLUMN_ONLINE, (u->gc ? TRUE : FALSE), | 1756 COLUMN_ONLINE, (account->gc ? TRUE : FALSE), |
| 1767 COLUMN_AUTOLOGIN, (u->options & OPT_USR_AUTO), | 1757 COLUMN_AUTOLOGIN, (account->options & OPT_ACCT_AUTO), |
| 1768 COLUMN_PROTOCOL, proto_name(u->protocol), | 1758 COLUMN_PROTOCOL, proto_name(account->protocol), |
| 1769 COLUMN_DATA, u, | 1759 COLUMN_DATA, account, |
| 1770 -1); | 1760 -1); |
| 1771 } | 1761 } |
| 1772 | 1762 |
| 1773 return u; | 1763 return account; |
| 1774 } | 1764 } |
