Mercurial > pidgin
comparison src/dialogs.c @ 6695:0c5637b5462e
[gaim-migrate @ 7221]
This is contact support. Really.
It has a few bugs left in it, like sorting not working, and stuff like that,
but it's pretty solid for the most part.
I'm not in the mood to do a whole lot of typing, so just use and enjoy.
committer: Tailor Script <tailor@pidgin.im>
| author | Nathan Walp <nwalp@pidgin.im> |
|---|---|
| date | Tue, 02 Sep 2003 03:41:10 +0000 |
| parents | b89d98f0bf79 |
| children | d93c6a1fadf2 |
comparison
equal
deleted
inserted
replaced
| 6694:2d2f04c5c7d2 | 6695:0c5637b5462e |
|---|---|
| 377 dialogwindows = g_list_prepend(dialogwindows, w->window); | 377 dialogwindows = g_list_prepend(dialogwindows, w->window); |
| 378 gtk_widget_show_all(w->window); | 378 gtk_widget_show_all(w->window); |
| 379 } | 379 } |
| 380 | 380 |
| 381 static void | 381 static void |
| 382 do_remove_chat(struct chat *chat) | 382 do_remove_chat(GaimBlistChat *chat) |
| 383 { | 383 { |
| 384 gaim_blist_remove_chat(chat); | 384 gaim_blist_remove_chat(chat); |
| 385 gaim_blist_save(); | 385 gaim_blist_save(); |
| 386 } | 386 } |
| 387 | 387 |
| 388 static void | 388 static void |
| 389 do_remove_buddy(struct buddy *b) | 389 do_remove_buddy(GaimBuddy *b) |
| 390 { | 390 { |
| 391 struct group *g; | 391 GaimGroup *g; |
| 392 GaimConversation *c; | 392 GaimConversation *c; |
| 393 gchar *name; | 393 gchar *name; |
| 394 GaimAccount *account; | 394 GaimAccount *account; |
| 395 | 395 |
| 396 if (!b) | 396 if (!b) |
| 412 gaim_conversation_update(c, GAIM_CONV_UPDATE_REMOVE); | 412 gaim_conversation_update(c, GAIM_CONV_UPDATE_REMOVE); |
| 413 | 413 |
| 414 g_free(name); | 414 g_free(name); |
| 415 } | 415 } |
| 416 | 416 |
| 417 void do_remove_group(struct group *g) | 417 void do_remove_group(GaimGroup *g) |
| 418 { | 418 { |
| 419 GaimBlistNode *b = ((GaimBlistNode*)g)->child; | 419 GaimBlistNode *cnode, *bnode; |
| 420 while (b) { | 420 cnode = ((GaimBlistNode*)g)->child; |
| 421 if(GAIM_BLIST_NODE_IS_BUDDY(b)) { | 421 while(cnode) { |
| 422 struct buddy *bd = (struct buddy *)b; | 422 if(GAIM_BLIST_NODE_IS_CONTACT(cnode)) { |
| 423 GaimConversation *c = gaim_find_conversation_with_account(bd->name, bd->account); | 423 bnode = cnode->child; |
| 424 if (gaim_account_is_connected(bd->account)) { | 424 cnode = cnode->next; |
| 425 serv_remove_buddy(bd->account->gc, bd->name, g->name); | 425 while(bnode) { |
| 426 gaim_blist_remove_buddy(bd); | 426 GaimBuddy *b; |
| 427 | 427 if(GAIM_BLIST_NODE_IS_BUDDY(bnode)) { |
| 428 if (c != NULL) | 428 b = (GaimBuddy*)bnode; |
| 429 gaim_conversation_update(c, GAIM_CONV_UPDATE_REMOVE); | 429 bnode = bnode->next; |
| 430 GaimConversation *c = gaim_find_conversation_with_account(b->name, b->account); | |
| 431 if(gaim_account_is_connected(b->account)) { | |
| 432 serv_remove_buddy(b->account->gc, b->name, g->name); | |
| 433 gaim_blist_remove_buddy(b); | |
| 434 if(c) | |
| 435 gaim_conversation_update(c, | |
| 436 GAIM_CONV_UPDATE_REMOVE); | |
| 437 } | |
| 438 } else { | |
| 439 bnode = bnode->next; | |
| 440 } | |
| 430 } | 441 } |
| 431 } else if(GAIM_BLIST_NODE_IS_CHAT(b)) { | 442 } else if(GAIM_BLIST_NODE_IS_CHAT(cnode)) { |
| 432 struct chat *chat = (struct chat *)b; | 443 GaimBlistChat *chat = (GaimBlistChat *)cnode; |
| 433 if (gaim_account_is_connected(chat->account)) { | 444 cnode = cnode->next; |
| 445 if(gaim_account_is_connected(chat->account)) | |
| 434 gaim_blist_remove_chat(chat); | 446 gaim_blist_remove_chat(chat); |
| 435 } | 447 } else { |
| 448 cnode = cnode->next; | |
| 436 } | 449 } |
| 437 b = b->next; | |
| 438 } | 450 } |
| 439 gaim_blist_remove_group(g); | 451 gaim_blist_remove_group(g); |
| 440 gaim_blist_save(); | 452 gaim_blist_save(); |
| 441 } | 453 } |
| 442 | 454 |
| 443 void show_confirm_del(struct buddy *b) | 455 void show_confirm_del(GaimBuddy *b) |
| 444 { | 456 { |
| 445 char *text; | 457 char *text; |
| 446 if (!b) | 458 if (!b) |
| 447 return; | 459 return; |
| 448 | 460 |
| 453 _("Cancel"), NULL); | 465 _("Cancel"), NULL); |
| 454 | 466 |
| 455 g_free(text); | 467 g_free(text); |
| 456 } | 468 } |
| 457 | 469 |
| 458 void show_confirm_del_chat(struct chat *chat) | 470 void show_confirm_del_blist_chat(GaimBlistChat *chat) |
| 459 { | 471 { |
| 460 char *name = gaim_chat_get_display_name(chat); | 472 char *name = gaim_blist_chat_get_display_name(chat); |
| 461 char *text = g_strdup_printf(_("You are about to remove the chat %s from your buddy list. Do you want to continue?"), name); | 473 char *text = g_strdup_printf(_("You are about to remove the chat %s from your buddy list. Do you want to continue?"), name); |
| 462 | 474 |
| 463 gaim_request_action(NULL, NULL, _("Remove Chat"), text, -1, chat, 2, | 475 gaim_request_action(NULL, NULL, _("Remove Chat"), text, -1, chat, 2, |
| 464 _("Remove Chat"), G_CALLBACK(do_remove_chat), | 476 _("Remove Chat"), G_CALLBACK(do_remove_chat), |
| 465 _("Cancel"), NULL); | 477 _("Cancel"), NULL); |
| 466 | 478 |
| 467 g_free(name); | 479 g_free(name); |
| 468 g_free(text); | 480 g_free(text); |
| 469 } | 481 } |
| 470 | 482 |
| 471 void show_confirm_del_group(struct group *g) | 483 void show_confirm_del_group(GaimGroup *g) |
| 472 { | 484 { |
| 473 char *text = g_strdup_printf(_("You are about to remove the group %s and all its members from your buddy list. Do you want to continue?"), | 485 char *text = g_strdup_printf(_("You are about to remove the group %s and all its members from your buddy list. Do you want to continue?"), |
| 474 g->name); | 486 g->name); |
| 475 | 487 |
| 476 gaim_request_action(NULL, NULL, _("Remove Group"), text, -1, g, 2, | 488 gaim_request_action(NULL, NULL, _("Remove Group"), text, -1, g, 2, |
| 775 | 787 |
| 776 void do_add_buddy(GtkWidget *w, int resp, struct addbuddy *a) | 788 void do_add_buddy(GtkWidget *w, int resp, struct addbuddy *a) |
| 777 { | 789 { |
| 778 const char *grp, *who, *whoalias; | 790 const char *grp, *who, *whoalias; |
| 779 GaimConversation *c; | 791 GaimConversation *c; |
| 780 struct buddy *b; | 792 GaimBuddy *b; |
| 781 struct group *g; | 793 GaimGroup *g; |
| 782 void *icon_data; | 794 void *icon_data; |
| 783 void *icon_data2; | 795 void *icon_data2; |
| 784 int icon_len; | 796 int icon_len; |
| 785 | 797 |
| 786 if (resp == GTK_RESPONSE_OK) { | 798 if (resp == GTK_RESPONSE_OK) { |
| 793 if (!(g = gaim_find_group(grp))) { | 805 if (!(g = gaim_find_group(grp))) { |
| 794 g = gaim_group_new(grp); | 806 g = gaim_group_new(grp); |
| 795 gaim_blist_add_group(g, NULL); | 807 gaim_blist_add_group(g, NULL); |
| 796 } | 808 } |
| 797 b = gaim_buddy_new(a->gc->account, who, whoalias); | 809 b = gaim_buddy_new(a->gc->account, who, whoalias); |
| 798 gaim_blist_add_buddy(b, g, NULL); | 810 gaim_blist_add_buddy(b, NULL, g, NULL); |
| 799 serv_add_buddy(a->gc, who); | 811 serv_add_buddy(a->gc, who); |
| 800 | 812 |
| 801 if (c != NULL) | 813 if (c != NULL) |
| 802 gaim_conversation_update(c, GAIM_CONV_UPDATE_ADD); | 814 gaim_conversation_update(c, GAIM_CONV_UPDATE_ADD); |
| 803 | 815 |
| 817 | 829 |
| 818 static GList *groups_tree() | 830 static GList *groups_tree() |
| 819 { | 831 { |
| 820 GList *tmp = NULL; | 832 GList *tmp = NULL; |
| 821 char *tmp2; | 833 char *tmp2; |
| 822 struct group *g; | 834 GaimGroup *g; |
| 823 | 835 |
| 824 GaimBlistNode *gnode = gaim_get_blist()->root; | 836 GaimBlistNode *gnode = gaim_get_blist()->root; |
| 825 | 837 |
| 826 if (!gnode) { | 838 if (!gnode) { |
| 827 tmp2 = g_strdup(_("Buddies")); | 839 tmp2 = g_strdup(_("Buddies")); |
| 828 tmp = g_list_append(tmp, tmp2); | 840 tmp = g_list_append(tmp, tmp2); |
| 829 } else { | 841 } else { |
| 830 while (gnode) { | 842 while (gnode) { |
| 831 if(GAIM_BLIST_NODE_IS_GROUP(gnode)) { | 843 if(GAIM_BLIST_NODE_IS_GROUP(gnode)) { |
| 832 g = (struct group *)gnode; | 844 g = (GaimGroup *)gnode; |
| 833 tmp2 = g->name; | 845 tmp2 = g->name; |
| 834 tmp = g_list_append(tmp, tmp2); | 846 tmp = g_list_append(tmp, tmp2); |
| 835 } | 847 } |
| 836 gnode = gnode->next; | 848 gnode = gnode->next; |
| 837 } | 849 } |
| 846 | 858 |
| 847 | 859 |
| 848 static void | 860 static void |
| 849 add_group_cb(GaimConnection *gc, const char *group_name) | 861 add_group_cb(GaimConnection *gc, const char *group_name) |
| 850 { | 862 { |
| 851 struct group *g; | 863 GaimGroup *g; |
| 852 | 864 |
| 853 g = gaim_group_new(group_name); | 865 g = gaim_group_new(group_name); |
| 854 gaim_blist_add_group(g, NULL); | 866 gaim_blist_add_group(g, NULL); |
| 855 gaim_blist_save(); | 867 gaim_blist_save(); |
| 856 } | 868 } |
| 992 static void do_add_chat(GtkWidget *w, struct addchat *ac) { | 1004 static void do_add_chat(GtkWidget *w, struct addchat *ac) { |
| 993 GHashTable *components = g_hash_table_new_full(g_str_hash, g_str_equal, | 1005 GHashTable *components = g_hash_table_new_full(g_str_hash, g_str_equal, |
| 994 g_free, g_free); | 1006 g_free, g_free); |
| 995 GList *tmp; | 1007 GList *tmp; |
| 996 | 1008 |
| 997 struct chat *chat; | 1009 GaimBlistChat *chat; |
| 998 struct group *group; | 1010 GaimGroup *group; |
| 999 const char *group_name; | 1011 const char *group_name; |
| 1000 | 1012 |
| 1001 for(tmp = ac->entries; tmp; tmp = tmp->next) { | 1013 for(tmp = ac->entries; tmp; tmp = tmp->next) { |
| 1002 if(g_object_get_data(tmp->data, "is_spin")) { | 1014 if(g_object_get_data(tmp->data, "is_spin")) { |
| 1003 g_hash_table_replace(components, | 1015 g_hash_table_replace(components, |
| 1009 g_strdup(g_object_get_data(tmp->data, "identifier")), | 1021 g_strdup(g_object_get_data(tmp->data, "identifier")), |
| 1010 g_strdup(gtk_entry_get_text(tmp->data))); | 1022 g_strdup(gtk_entry_get_text(tmp->data))); |
| 1011 } | 1023 } |
| 1012 } | 1024 } |
| 1013 | 1025 |
| 1014 chat = gaim_chat_new(ac->account, gtk_entry_get_text(GTK_ENTRY(ac->alias_entry)), components); | 1026 chat = gaim_blist_chat_new(ac->account, gtk_entry_get_text(GTK_ENTRY(ac->alias_entry)), components); |
| 1015 | 1027 |
| 1016 group_name = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(ac->group_combo)->entry)); | 1028 group_name = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(ac->group_combo)->entry)); |
| 1017 if (!(group = gaim_find_group(group_name))) { | 1029 if (!(group = gaim_find_group(group_name))) { |
| 1018 group = gaim_group_new(group_name); | 1030 group = gaim_group_new(group_name); |
| 1019 gaim_blist_add_group(group, NULL); | 1031 gaim_blist_add_group(group, NULL); |
| 1237 gtk_option_menu_remove_menu(GTK_OPTION_MENU(ac->account_menu)); | 1249 gtk_option_menu_remove_menu(GTK_OPTION_MENU(ac->account_menu)); |
| 1238 gtk_option_menu_set_menu(GTK_OPTION_MENU(ac->account_menu), menu); | 1250 gtk_option_menu_set_menu(GTK_OPTION_MENU(ac->account_menu), menu); |
| 1239 gtk_option_menu_set_history(GTK_OPTION_MENU(ac->account_menu), place); | 1251 gtk_option_menu_set_history(GTK_OPTION_MENU(ac->account_menu), place); |
| 1240 } | 1252 } |
| 1241 | 1253 |
| 1242 void show_add_chat(GaimAccount *account, struct group *group) { | 1254 void show_add_chat(GaimAccount *account, GaimGroup *group) { |
| 1243 struct addchat *ac = g_new0(struct addchat, 1); | 1255 struct addchat *ac = g_new0(struct addchat, 1); |
| 1244 struct gaim_gtk_buddy_list *gtkblist; | 1256 struct gaim_gtk_buddy_list *gtkblist; |
| 1245 GList *c; | 1257 GList *c; |
| 1246 GaimConnection *gc; | 1258 GaimConnection *gc; |
| 1247 | 1259 |
| 1253 GTK_ICON_SIZE_DIALOG); | 1265 GTK_ICON_SIZE_DIALOG); |
| 1254 | 1266 |
| 1255 gtkblist = GAIM_GTK_BLIST(gaim_get_blist()); | 1267 gtkblist = GAIM_GTK_BLIST(gaim_get_blist()); |
| 1256 | 1268 |
| 1257 if (account) { | 1269 if (account) { |
| 1258 ac->account = account; | 1270 ac->account = account; |
| 1259 } else { | 1271 } else { |
| 1260 /* Select an account with chat capabilities */ | 1272 /* Select an account with chat capabilities */ |
| 1261 for (c = gaim_connections_get_all(); c != NULL; c = c->next) { | 1273 for (c = gaim_connections_get_all(); c != NULL; c = c->next) { |
| 1262 gc = c->data; | 1274 gc = c->data; |
| 1263 | 1275 |
| 1264 if (GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->join_chat) { | 1276 if (GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl)->join_chat) { |
| 1265 ac->account = gc->account; | 1277 ac->account = gc->account; |
| 1266 break; | 1278 break; |
| 1267 } | 1279 } |
| 1268 } | 1280 } |
| 1269 } | 1281 } |
| 1270 | 1282 |
| 1271 if (!ac->account) { | 1283 if (!ac->account) { |
| 1272 gaim_notify_error(NULL, NULL, | 1284 gaim_notify_error(NULL, NULL, |
| 1273 _("You are not currently signed on with any " | 1285 _("You are not currently signed on with any " |
| 1274 "protocols that have the ability to chat."), NULL); | 1286 "protocols that have the ability to chat."), NULL); |
| 2961 | 2973 |
| 2962 return; | 2974 return; |
| 2963 } | 2975 } |
| 2964 | 2976 |
| 2965 static void | 2977 static void |
| 2966 alias_chat_cb(struct chat *chat, const char *new_alias) | 2978 alias_chat_cb(GaimBlistChat *chat, const char *new_alias) |
| 2967 { | 2979 { |
| 2968 gaim_blist_alias_chat(chat, new_alias); | 2980 gaim_blist_alias_chat(chat, new_alias); |
| 2969 gaim_blist_save(); | 2981 gaim_blist_save(); |
| 2970 } | 2982 } |
| 2971 | 2983 |
| 2972 void | 2984 void |
| 2973 alias_dialog_chat(struct chat *chat) | 2985 alias_dialog_blist_chat(GaimBlistChat *chat) |
| 2974 { | 2986 { |
| 2975 gaim_request_input(NULL, _("Alias Chat"), _("Alias chat"), | 2987 gaim_request_input(NULL, _("Alias Chat"), _("Alias chat"), |
| 2976 _("Please enter an aliased name for this chat."), | 2988 _("Please enter an aliased name for this chat."), |
| 2977 chat->alias, FALSE, FALSE, | 2989 chat->alias, FALSE, FALSE, |
| 2978 _("OK"), G_CALLBACK(alias_chat_cb), | 2990 _("OK"), G_CALLBACK(alias_chat_cb), |
| 2979 _("Cancel"), NULL, chat); | 2991 _("Cancel"), NULL, chat); |
| 2980 } | 2992 } |
| 2981 | 2993 |
| 2982 static void | 2994 static void |
| 2983 alias_buddy_cb(struct buddy *buddy, GaimRequestFields *fields) | 2995 alias_buddy_cb(GaimBuddy *buddy, GaimRequestFields *fields) |
| 2984 { | 2996 { |
| 2985 const char *alias; | 2997 const char *alias; |
| 2986 | 2998 |
| 2987 alias = gaim_request_fields_get_string(fields, "alias"); | 2999 alias = gaim_request_fields_get_string(fields, "alias"); |
| 2988 | 3000 |
| 2991 serv_alias_buddy(buddy); | 3003 serv_alias_buddy(buddy); |
| 2992 gaim_blist_save(); | 3004 gaim_blist_save(); |
| 2993 } | 3005 } |
| 2994 | 3006 |
| 2995 void | 3007 void |
| 2996 alias_dialog_bud(struct buddy *b) | 3008 alias_dialog_bud(GaimBuddy *b) |
| 2997 { | 3009 { |
| 2998 GaimRequestFields *fields; | 3010 GaimRequestFields *fields; |
| 2999 GaimRequestFieldGroup *group; | 3011 GaimRequestFieldGroup *group; |
| 3000 GaimRequestField *field; | 3012 GaimRequestField *field; |
| 3001 | 3013 |
| 3485 | 3497 |
| 3486 /*------------------------------------------------------------------------*/ | 3498 /*------------------------------------------------------------------------*/ |
| 3487 /* The dialog for renaming groups */ | 3499 /* The dialog for renaming groups */ |
| 3488 /*------------------------------------------------------------------------*/ | 3500 /*------------------------------------------------------------------------*/ |
| 3489 | 3501 |
| 3490 static void do_rename_group(struct group *g, const char *new_name) | 3502 static void do_rename_group(GaimGroup *g, const char *new_name) |
| 3491 { | 3503 { |
| 3492 gaim_blist_rename_group(g, new_name); | 3504 gaim_blist_rename_group(g, new_name); |
| 3493 gaim_blist_save(); | 3505 gaim_blist_save(); |
| 3494 } | 3506 } |
| 3495 | 3507 |
| 3496 void show_rename_group(GtkWidget *unused, struct group *g) | 3508 void show_rename_group(GtkWidget *unused, GaimGroup *g) |
| 3497 { | 3509 { |
| 3498 gaim_request_input(NULL, _("Rename Group"), _("New group name"), | 3510 gaim_request_input(NULL, _("Rename Group"), _("New group name"), |
| 3499 _("Please enter a new name for the selected group."), | 3511 _("Please enter a new name for the selected group."), |
| 3500 g->name, FALSE, FALSE, | 3512 g->name, FALSE, FALSE, |
| 3501 _("OK"), G_CALLBACK(do_rename_group), | 3513 _("OK"), G_CALLBACK(do_rename_group), |
