Mercurial > pidgin
comparison src/server.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 | 314111e7b601 |
| children | faa491042c66 |
comparison
equal
deleted
inserted
replaced
| 6694:2d2f04c5c7d2 | 6695:0c5637b5462e |
|---|---|
| 514 } | 514 } |
| 515 | 515 |
| 516 /* | 516 /* |
| 517 * Set buddy's alias on server roster/list | 517 * Set buddy's alias on server roster/list |
| 518 */ | 518 */ |
| 519 void serv_alias_buddy(struct buddy *b) | 519 void serv_alias_buddy(GaimBuddy *b) |
| 520 { | 520 { |
| 521 GaimPluginProtocolInfo *prpl_info = NULL; | 521 GaimPluginProtocolInfo *prpl_info = NULL; |
| 522 | 522 |
| 523 if (b != NULL && b->account->gc->prpl != NULL) | 523 if (b != NULL && b->account->gc->prpl != NULL) |
| 524 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(b->account->gc->prpl); | 524 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(b->account->gc->prpl); |
| 527 prpl_info->alias_buddy(b->account->gc, b->name, b->alias); | 527 prpl_info->alias_buddy(b->account->gc, b->name, b->alias); |
| 528 } | 528 } |
| 529 } | 529 } |
| 530 | 530 |
| 531 void serv_got_alias(GaimConnection *gc, const char *who, const char *alias) { | 531 void serv_got_alias(GaimConnection *gc, const char *who, const char *alias) { |
| 532 struct buddy *b = gaim_find_buddy(gc->account, who); | 532 GaimBuddy *b = gaim_find_buddy(gc->account, who); |
| 533 | 533 |
| 534 if(!b) | 534 if(!b) |
| 535 return; | 535 return; |
| 536 | 536 |
| 537 gaim_blist_server_alias_buddy(b, alias); | 537 gaim_blist_server_alias_buddy(b, alias); |
| 541 * Move a buddy from one group to another on server. | 541 * Move a buddy from one group to another on server. |
| 542 * | 542 * |
| 543 * Note: For now we'll not deal with changing gc's at the same time, but | 543 * Note: For now we'll not deal with changing gc's at the same time, but |
| 544 * it should be possible. Probably needs to be done, someday. | 544 * it should be possible. Probably needs to be done, someday. |
| 545 */ | 545 */ |
| 546 void serv_move_buddy(struct buddy *b, struct group *og, struct group *ng) | 546 void serv_move_buddy(GaimBuddy *b, GaimGroup *og, GaimGroup *ng) |
| 547 { | 547 { |
| 548 GaimPluginProtocolInfo *prpl_info = NULL; | 548 GaimPluginProtocolInfo *prpl_info = NULL; |
| 549 | 549 |
| 550 if (b->account->gc != NULL && b->account->gc->prpl != NULL) | 550 if (b->account->gc != NULL && b->account->gc->prpl != NULL) |
| 551 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(b->account->gc->prpl); | 551 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(b->account->gc->prpl); |
| 558 } | 558 } |
| 559 | 559 |
| 560 /* | 560 /* |
| 561 * Rename a group on server roster/list. | 561 * Rename a group on server roster/list. |
| 562 */ | 562 */ |
| 563 void serv_rename_group(GaimConnection *g, struct group *old_group, | 563 void serv_rename_group(GaimConnection *g, GaimGroup *old_group, |
| 564 const char *new_name) | 564 const char *new_name) |
| 565 { | 565 { |
| 566 GaimPluginProtocolInfo *prpl_info = NULL; | 566 GaimPluginProtocolInfo *prpl_info = NULL; |
| 567 | 567 |
| 568 if (g != NULL && g->prpl != NULL) | 568 if (g != NULL && g->prpl != NULL) |
| 569 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); | 569 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(g->prpl); |
| 570 | 570 |
| 571 if (prpl_info && old_group && new_name) { | 571 if (prpl_info && old_group && new_name) { |
| 572 GList *tobemoved = NULL; | 572 GList *tobemoved = NULL; |
| 573 GaimBlistNode *b = ((GaimBlistNode*)old_group)->child; | 573 GaimBlistNode *cnode, *bnode; |
| 574 | 574 |
| 575 while (b) { | 575 for(cnode = ((GaimBlistNode*)old_group)->child; cnode; cnode = cnode->next) { |
| 576 if(GAIM_BLIST_NODE_IS_BUDDY(b)) { | 576 if(!GAIM_BLIST_NODE_IS_CONTACT(cnode)) |
| 577 struct buddy *bd = (struct buddy *)b; | 577 continue; |
| 578 if (bd->account == g->account) | 578 for(bnode = cnode->child; bnode; bnode = bnode->next) { |
| 579 tobemoved = g_list_append(tobemoved, bd->name); | 579 GaimBuddy *b; |
| 580 if(!GAIM_BLIST_NODE_IS_BUDDY(bnode)) | |
| 581 continue; | |
| 582 b = (GaimBuddy*)bnode; | |
| 583 | |
| 584 if(b->account == g->account) | |
| 585 tobemoved = g_list_append(tobemoved, b->name); | |
| 586 | |
| 580 } | 587 } |
| 581 b = b->next; | 588 |
| 582 } | 589 } |
| 583 | 590 |
| 584 if (prpl_info->rename_group) { | 591 if (prpl_info->rename_group) { |
| 585 /* prpl's might need to check if the group already | 592 /* prpl's might need to check if the group already |
| 586 * exists or not, and handle that differently */ | 593 * exists or not, and handle that differently */ |
| 888 * things we have to do for each. | 895 * things we have to do for each. |
| 889 */ | 896 */ |
| 890 if (gc->away) { | 897 if (gc->away) { |
| 891 time_t t = time(NULL); | 898 time_t t = time(NULL); |
| 892 char *tmpmsg; | 899 char *tmpmsg; |
| 893 struct buddy *b = gaim_find_buddy(gc->account, name); | 900 GaimBuddy *b = gaim_find_buddy(gc->account, name); |
| 894 char *alias = b ? gaim_get_buddy_alias(b) : name; | 901 const char *alias = b ? gaim_get_buddy_alias(b) : name; |
| 895 int row; | 902 int row; |
| 896 struct last_auto_response *lar; | 903 struct last_auto_response *lar; |
| 897 | 904 |
| 898 /* | 905 /* |
| 899 * Either we're going to queue it or not. Because of the way | 906 * Either we're going to queue it or not. Because of the way |
| 1071 void serv_got_update(GaimConnection *gc, const char *name, int loggedin, | 1078 void serv_got_update(GaimConnection *gc, const char *name, int loggedin, |
| 1072 int evil, time_t signon, time_t idle, int type) | 1079 int evil, time_t signon, time_t idle, int type) |
| 1073 { | 1080 { |
| 1074 GaimAccount *account; | 1081 GaimAccount *account; |
| 1075 GaimConversation *c; | 1082 GaimConversation *c; |
| 1076 struct buddy *b; | 1083 GaimBuddy *b; |
| 1077 GSList *buddies; | 1084 GSList *buddies; |
| 1078 | 1085 |
| 1079 account = gaim_connection_get_account(gc); | 1086 account = gaim_connection_get_account(gc); |
| 1080 b = gaim_find_buddy(account, name); | 1087 b = gaim_find_buddy(account, name); |
| 1081 | 1088 |
| 1231 } | 1238 } |
| 1232 | 1239 |
| 1233 void serv_got_typing(GaimConnection *gc, const char *name, int timeout, | 1240 void serv_got_typing(GaimConnection *gc, const char *name, int timeout, |
| 1234 GaimTypingState state) { | 1241 GaimTypingState state) { |
| 1235 | 1242 |
| 1236 struct buddy *b; | 1243 GaimBuddy *b; |
| 1237 GaimConversation *cnv = gaim_find_conversation_with_account(name, gc->account); | 1244 GaimConversation *cnv = gaim_find_conversation_with_account(name, gc->account); |
| 1238 GaimIm *im; | 1245 GaimIm *im; |
| 1239 | 1246 |
| 1240 if (!cnv) | 1247 if (!cnv) |
| 1241 return; | 1248 return; |
| 1263 | 1270 |
| 1264 void serv_got_typing_stopped(GaimConnection *gc, const char *name) { | 1271 void serv_got_typing_stopped(GaimConnection *gc, const char *name) { |
| 1265 | 1272 |
| 1266 GaimConversation *c = gaim_find_conversation_with_account(name, gc->account); | 1273 GaimConversation *c = gaim_find_conversation_with_account(name, gc->account); |
| 1267 GaimIm *im; | 1274 GaimIm *im; |
| 1268 struct buddy *b; | 1275 GaimBuddy *b; |
| 1269 | 1276 |
| 1270 if (!c) | 1277 if (!c) |
| 1271 return; | 1278 return; |
| 1272 | 1279 |
| 1273 im = GAIM_IM(c); | 1280 im = GAIM_IM(c); |
