comparison src/blist.c @ 7118:bf630f7dfdcd

[gaim-migrate @ 7685] Here's a commit that I think will make faceprint happy. GaimWindow -> GaimConvWindow, GaimIm -> GaimConvIm, GaimChat -> GaimConvChat, GaimBlistChat -> GaimChat, and updated the API functions as well. Plugin authors are going to hunt me down and murder me. I can feel it.. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Thu, 02 Oct 2003 02:54:07 +0000
parents 943085b0ff8b
children 208cb260d7a7
comparison
equal deleted inserted replaced
7117:943085b0ff8b 7118:bf630f7dfdcd
321 buddy->name = g_strdup(name); 321 buddy->name = g_strdup(name);
322 if (ops) 322 if (ops)
323 ops->update(gaimbuddylist, (GaimBlistNode*)buddy); 323 ops->update(gaimbuddylist, (GaimBlistNode*)buddy);
324 } 324 }
325 325
326 void gaim_blist_alias_chat(GaimBlistChat *chat, const char *alias) 326 void gaim_blist_alias_chat(GaimChat *chat, const char *alias)
327 { 327 {
328 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; 328 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
329 329
330 g_free(chat->alias); 330 g_free(chat->alias);
331 331
404 for(bnode = child->child; bnode; bnode = bnode->next) 404 for(bnode = child->child; bnode; bnode = bnode->next)
405 gaim_blist_add_buddy((GaimBuddy*)bnode, (GaimContact*)child, 405 gaim_blist_add_buddy((GaimBuddy*)bnode, (GaimContact*)child,
406 NULL, bnode->prev); 406 NULL, bnode->prev);
407 prev = child; 407 prev = child;
408 } else if(GAIM_BLIST_NODE_IS_CHAT(child)) { 408 } else if(GAIM_BLIST_NODE_IS_CHAT(child)) {
409 gaim_blist_add_chat((GaimBlistChat *)child, dest_group, prev); 409 gaim_blist_add_chat((GaimChat *)child, dest_group, prev);
410 prev = child; 410 prev = child;
411 } else { 411 } else {
412 gaim_debug(GAIM_DEBUG_ERROR, "blist", 412 gaim_debug(GAIM_DEBUG_ERROR, "blist",
413 "Unknown child type in group %s\n", group->name); 413 "Unknown child type in group %s\n", group->name);
414 } 414 }
430 if (ops) 430 if (ops)
431 ops->update(gaimbuddylist, (GaimBlistNode*)group); 431 ops->update(gaimbuddylist, (GaimBlistNode*)group);
432 } 432 }
433 } 433 }
434 434
435 GaimBlistChat *gaim_blist_chat_new(GaimAccount *account, const char *alias, GHashTable *components) 435 GaimChat *gaim_blist_chat_new(GaimAccount *account, const char *alias, GHashTable *components)
436 { 436 {
437 GaimBlistChat *chat; 437 GaimChat *chat;
438 GaimBlistUiOps *ops; 438 GaimBlistUiOps *ops;
439 439
440 if(!components) 440 if(!components)
441 return NULL; 441 return NULL;
442 442
443 chat = g_new0(GaimBlistChat, 1); 443 chat = g_new0(GaimChat, 1);
444 chat->account = account; 444 chat->account = account;
445 if(alias && strlen(alias)) 445 if(alias && strlen(alias))
446 chat->alias = g_strdup(alias); 446 chat->alias = g_strdup(alias);
447 chat->components = components; 447 chat->components = components;
448 chat->settings = g_hash_table_new_full(g_str_hash, g_str_equal, 448 chat->settings = g_hash_table_new_full(g_str_hash, g_str_equal,
456 ops->new_node((GaimBlistNode *)chat); 456 ops->new_node((GaimBlistNode *)chat);
457 457
458 return chat; 458 return chat;
459 } 459 }
460 460
461 char *gaim_blist_chat_get_display_name(GaimBlistChat *chat) 461 char *gaim_blist_chat_get_display_name(GaimChat *chat)
462 { 462 {
463 char *name; 463 char *name;
464 464
465 if(chat->alias){ 465 if(chat->alias){
466 name = g_strdup(chat->alias); 466 name = g_strdup(chat->alias);
529 g_return_val_if_fail(buddy != NULL, NULL); 529 g_return_val_if_fail(buddy != NULL, NULL);
530 530
531 return buddy->icon; 531 return buddy->icon;
532 } 532 }
533 533
534 void gaim_blist_add_chat(GaimBlistChat *chat, GaimGroup *group, GaimBlistNode *node) 534 void gaim_blist_add_chat(GaimChat *chat, GaimGroup *group, GaimBlistNode *node)
535 { 535 {
536 GaimBlistNode *n = node, *cnode = (GaimBlistNode*)chat; 536 GaimBlistNode *n = node, *cnode = (GaimBlistNode*)chat;
537 GaimGroup *g = group; 537 GaimGroup *g = group;
538 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; 538 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
539 gboolean save = FALSE; 539 gboolean save = FALSE;
1051 1051
1052 if(!cnode->child) 1052 if(!cnode->child)
1053 gaim_blist_remove_contact((GaimContact*)cnode); 1053 gaim_blist_remove_contact((GaimContact*)cnode);
1054 } 1054 }
1055 1055
1056 void gaim_blist_remove_chat (GaimBlistChat *chat) 1056 void gaim_blist_remove_chat (GaimChat *chat)
1057 { 1057 {
1058 GaimBlistUiOps *ops = gaimbuddylist->ui_ops; 1058 GaimBlistUiOps *ops = gaimbuddylist->ui_ops;
1059 1059
1060 GaimBlistNode *gnode, *node = (GaimBlistNode*)chat; 1060 GaimBlistNode *gnode, *node = (GaimBlistNode*)chat;
1061 GaimGroup *group; 1061 GaimGroup *group;
1167 ret= gaim_get_buddy_alias_only(buddy); 1167 ret= gaim_get_buddy_alias_only(buddy);
1168 1168
1169 return ret ? ret : buddy->name; 1169 return ret ? ret : buddy->name;
1170 } 1170 }
1171 1171
1172 const char *gaim_blist_chat_get_name(GaimBlistChat *chat) 1172 const char *gaim_blist_chat_get_name(GaimChat *chat)
1173 { 1173 {
1174 if(chat->alias && *chat->alias) { 1174 if(chat->alias && *chat->alias) {
1175 return chat->alias; 1175 return chat->alias;
1176 } else { 1176 } else {
1177 struct proto_chat_entry *pce; 1177 struct proto_chat_entry *pce;
1268 node = node->next; 1268 node = node->next;
1269 } 1269 }
1270 return NULL; 1270 return NULL;
1271 } 1271 }
1272 1272
1273 GaimBlistChat * 1273 GaimChat *
1274 gaim_blist_find_chat(GaimAccount *account, const char *name) 1274 gaim_blist_find_chat(GaimAccount *account, const char *name)
1275 { 1275 {
1276 char *chat_name; 1276 char *chat_name;
1277 GaimBlistChat *chat; 1277 GaimChat *chat;
1278 GaimPlugin *prpl; 1278 GaimPlugin *prpl;
1279 GaimPluginProtocolInfo *prpl_info = NULL; 1279 GaimPluginProtocolInfo *prpl_info = NULL;
1280 struct proto_chat_entry *pce; 1280 struct proto_chat_entry *pce;
1281 GaimBlistNode *node, *group; 1281 GaimBlistNode *node, *group;
1282 GList *parts; 1282 GList *parts;
1286 1286
1287 for (group = gaimbuddylist->root; group != NULL; group = group->next) { 1287 for (group = gaimbuddylist->root; group != NULL; group = group->next) {
1288 for (node = group->child; node != NULL; node = node->next) { 1288 for (node = group->child; node != NULL; node = node->next) {
1289 if (GAIM_BLIST_NODE_IS_CHAT(node)) { 1289 if (GAIM_BLIST_NODE_IS_CHAT(node)) {
1290 1290
1291 chat = (GaimBlistChat*)node; 1291 chat = (GaimChat*)node;
1292 1292
1293 prpl = gaim_find_prpl(gaim_account_get_protocol(chat->account)); 1293 prpl = gaim_find_prpl(gaim_account_get_protocol(chat->account));
1294 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl); 1294 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(prpl);
1295 1295
1296 parts = prpl_info->chat_info( 1296 parts = prpl_info->chat_info(
1311 1311
1312 return NULL; 1312 return NULL;
1313 } 1313 }
1314 1314
1315 GaimGroup * 1315 GaimGroup *
1316 gaim_blist_chat_get_group(GaimBlistChat *chat) 1316 gaim_blist_chat_get_group(GaimChat *chat)
1317 { 1317 {
1318 g_return_val_if_fail(chat != NULL, NULL); 1318 g_return_val_if_fail(chat != NULL, NULL);
1319 1319
1320 return (GaimGroup *)(((GaimBlistNode *)chat)->parent); 1320 return (GaimGroup *)(((GaimBlistNode *)chat)->parent);
1321 } 1321 }
1338 1338
1339 gnode = (GaimBlistNode *)g; 1339 gnode = (GaimBlistNode *)g;
1340 1340
1341 for(cnode = gnode->child; cnode; cnode = cnode->next) { 1341 for(cnode = gnode->child; cnode; cnode = cnode->next) {
1342 if (GAIM_BLIST_NODE_IS_CHAT(cnode)) { 1342 if (GAIM_BLIST_NODE_IS_CHAT(cnode)) {
1343 if(!g_slist_find(l, ((GaimBlistChat *)cnode)->account)) 1343 if(!g_slist_find(l, ((GaimChat *)cnode)->account))
1344 l = g_slist_append(l, ((GaimBlistChat *)cnode)->account); 1344 l = g_slist_append(l, ((GaimChat *)cnode)->account);
1345 } else if(GAIM_BLIST_NODE_IS_CONTACT(cnode)) { 1345 } else if(GAIM_BLIST_NODE_IS_CONTACT(cnode)) {
1346 for(bnode = cnode->child; bnode; bnode = bnode->next) { 1346 for(bnode = cnode->child; bnode; bnode = bnode->next) {
1347 if(GAIM_BLIST_NODE_IS_BUDDY(bnode)) { 1347 if(GAIM_BLIST_NODE_IS_BUDDY(bnode)) {
1348 if(!g_slist_find(l, ((GaimBuddy *)bnode)->account)) 1348 if(!g_slist_find(l, ((GaimBuddy *)bnode)->account))
1349 l = g_slist_append(l, ((GaimBuddy *)bnode)->account); 1349 l = g_slist_append(l, ((GaimBuddy *)bnode)->account);
1390 if(recompute) { 1390 if(recompute) {
1391 gaim_contact_compute_priority_buddy((GaimContact*)cnode); 1391 gaim_contact_compute_priority_buddy((GaimContact*)cnode);
1392 ops->update(gaimbuddylist, cnode); 1392 ops->update(gaimbuddylist, cnode);
1393 } 1393 }
1394 } else if(GAIM_BLIST_NODE_IS_CHAT(cnode) && 1394 } else if(GAIM_BLIST_NODE_IS_CHAT(cnode) &&
1395 ((GaimBlistChat*)cnode)->account == account) { 1395 ((GaimChat*)cnode)->account == account) {
1396 ((GaimGroup *)gnode)->online++; 1396 ((GaimGroup *)gnode)->online++;
1397 ((GaimGroup *)gnode)->currentsize++; 1397 ((GaimGroup *)gnode)->currentsize++;
1398 ops->update(gaimbuddylist, cnode); 1398 ops->update(gaimbuddylist, cnode);
1399 } 1399 }
1400 } 1400 }
1446 gaim_contact_compute_priority_buddy((GaimContact*)cnode); 1446 gaim_contact_compute_priority_buddy((GaimContact*)cnode);
1447 if(ops) 1447 if(ops)
1448 ops->update(gaimbuddylist, cnode); 1448 ops->update(gaimbuddylist, cnode);
1449 } 1449 }
1450 } else if(GAIM_BLIST_NODE_IS_CHAT(cnode) && 1450 } else if(GAIM_BLIST_NODE_IS_CHAT(cnode) &&
1451 ((GaimBlistChat*)cnode)->account == account) { 1451 ((GaimChat*)cnode)->account == account) {
1452 ((GaimGroup*)gnode)->currentsize--; 1452 ((GaimGroup*)gnode)->currentsize--;
1453 ((GaimGroup*)gnode)->online--; 1453 ((GaimGroup*)gnode)->online--;
1454 if(ops) 1454 if(ops)
1455 ops->remove(gaimbuddylist, cnode); 1455 ops->remove(gaimbuddylist, cnode);
1456 } 1456 }
1849 || buddy->account == account) 1849 || buddy->account == account)
1850 return TRUE; 1850 return TRUE;
1851 } 1851 }
1852 } 1852 }
1853 } else if(GAIM_BLIST_NODE_IS_CHAT(cnode)) { 1853 } else if(GAIM_BLIST_NODE_IS_CHAT(cnode)) {
1854 GaimBlistChat *chat = (GaimBlistChat *)cnode; 1854 GaimChat *chat = (GaimChat *)cnode;
1855 if((!account && gaim_account_is_connected(chat->account)) 1855 if((!account && gaim_account_is_connected(chat->account))
1856 || chat->account == account) 1856 || chat->account == account)
1857 return TRUE; 1857 return TRUE;
1858 } 1858 }
1859 } 1859 }
2023 blist_parser_group = NULL; 2023 blist_parser_group = NULL;
2024 } else if(!strcmp(element_name, "chat")) { 2024 } else if(!strcmp(element_name, "chat")) {
2025 GaimAccount *account = gaim_accounts_find(blist_parser_account_name, 2025 GaimAccount *account = gaim_accounts_find(blist_parser_account_name,
2026 blist_parser_account_protocol); 2026 blist_parser_account_protocol);
2027 if(account) { 2027 if(account) {
2028 GaimBlistChat *chat = gaim_blist_chat_new(account, 2028 GaimChat *chat = gaim_blist_chat_new(account,
2029 blist_parser_chat_alias, blist_parser_chat_components); 2029 blist_parser_chat_alias, blist_parser_chat_components);
2030 gaim_blist_add_chat(chat,blist_parser_group, 2030 gaim_blist_add_chat(chat,blist_parser_group,
2031 gaim_blist_get_last_child((GaimBlistNode*)blist_parser_group)); 2031 gaim_blist_get_last_child((GaimBlistNode*)blist_parser_group));
2032 if(blist_parser_chat_settings) { 2032 if(blist_parser_chat_settings) {
2033 g_hash_table_destroy(chat->settings); 2033 g_hash_table_destroy(chat->settings);
2440 } 2440 }
2441 } 2441 }
2442 2442
2443 fprintf(file, "\t\t\t</contact>\n"); 2443 fprintf(file, "\t\t\t</contact>\n");
2444 } else if(GAIM_BLIST_NODE_IS_CHAT(cnode)) { 2444 } else if(GAIM_BLIST_NODE_IS_CHAT(cnode)) {
2445 GaimBlistChat *chat = (GaimBlistChat *)cnode; 2445 GaimChat *chat = (GaimChat *)cnode;
2446 if(!exp_acct || chat->account == exp_acct) { 2446 if(!exp_acct || chat->account == exp_acct) {
2447 char *acct_name = g_markup_escape_text(chat->account->username, -1); 2447 char *acct_name = g_markup_escape_text(chat->account->username, -1);
2448 fprintf(file, "\t\t\t<chat protocol=\"%d\" account=\"%s\">\n", 2448 fprintf(file, "\t\t\t<chat protocol=\"%d\" account=\"%s\">\n",
2449 gaim_account_get_protocol(chat->account), 2449 gaim_account_get_protocol(chat->account),
2450 acct_name); 2450 acct_name);
2552 if(!g) 2552 if(!g)
2553 return NULL; 2553 return NULL;
2554 return g_strdup(g_hash_table_lookup(g->settings, key)); 2554 return g_strdup(g_hash_table_lookup(g->settings, key));
2555 } 2555 }
2556 2556
2557 void gaim_blist_chat_set_setting(GaimBlistChat *c, const char *key, 2557 void gaim_blist_chat_set_setting(GaimChat *c, const char *key,
2558 const char *value) 2558 const char *value)
2559 { 2559 {
2560 if(!c) 2560 if(!c)
2561 return; 2561 return;
2562 g_hash_table_replace(c->settings, g_strdup(key), g_strdup(value)); 2562 g_hash_table_replace(c->settings, g_strdup(key), g_strdup(value));
2563 } 2563 }
2564 2564
2565 char *gaim_blist_chat_get_setting(GaimBlistChat *c, const char *key) 2565 char *gaim_blist_chat_get_setting(GaimChat *c, const char *key)
2566 { 2566 {
2567 if(!c) 2567 if(!c)
2568 return NULL; 2568 return NULL;
2569 return g_strdup(g_hash_table_lookup(c->settings, key)); 2569 return g_strdup(g_hash_table_lookup(c->settings, key));
2570 } 2570 }