comparison libpurple/protocols/jabber/jabber.c @ 25365:367b3ddcf5c3

propagate from branch 'im.pidgin.pidgin' (head 81aa401ac9855c99eb55a7cf91fa221860dee220) to branch 'im.pidgin.pidgin.next.minor' (head cf7b71a77c33c3e1d2f392c46d090fb936eb47b7)
author Richard Laager <rlaager@wiktel.com>
date Mon, 08 Dec 2008 17:57:09 +0000
parents 641fe4c2b2a5 ef09497b1674
children 4e8748f3374f
comparison
equal deleted inserted replaced
24656:6f41450584a7 25365:367b3ddcf5c3
1484 1484
1485 const char* jabber_list_emblem(PurpleBuddy *b) 1485 const char* jabber_list_emblem(PurpleBuddy *b)
1486 { 1486 {
1487 JabberStream *js; 1487 JabberStream *js;
1488 JabberBuddy *jb = NULL; 1488 JabberBuddy *jb = NULL;
1489 1489 PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(b));
1490 if(!b->account->gc) 1490
1491 if(!gc)
1491 return NULL; 1492 return NULL;
1492 1493
1493 js = b->account->gc->proto_data; 1494 js = gc->proto_data;
1494 if(js) 1495 if(js)
1495 jb = jabber_buddy_find(js, b->name, FALSE); 1496 jb = jabber_buddy_find(js, purple_buddy_get_name(b), FALSE);
1496 1497
1497 if(!PURPLE_BUDDY_IS_ONLINE(b)) { 1498 if(!PURPLE_BUDDY_IS_ONLINE(b)) {
1498 if(jb && (jb->subscription & JABBER_SUB_PENDING || 1499 if(jb && (jb->subscription & JABBER_SUB_PENDING ||
1499 !(jb->subscription & JABBER_SUB_TO))) 1500 !(jb->subscription & JABBER_SUB_TO)))
1500 return "not-authorized"; 1501 return "not-authorized";
1504 1505
1505 char *jabber_status_text(PurpleBuddy *b) 1506 char *jabber_status_text(PurpleBuddy *b)
1506 { 1507 {
1507 char *ret = NULL; 1508 char *ret = NULL;
1508 JabberBuddy *jb = NULL; 1509 JabberBuddy *jb = NULL;
1509 1510 PurpleAccount *account = purple_buddy_get_account(b);
1510 if (b->account->gc && b->account->gc->proto_data) 1511 PurpleConnection *gc = purple_account_get_connection(account);
1511 jb = jabber_buddy_find(b->account->gc->proto_data, b->name, FALSE); 1512
1513 if (gc && gc->proto_data)
1514 jb = jabber_buddy_find(gc->proto_data, purple_buddy_get_name(b), FALSE);
1512 1515
1513 if(jb && !PURPLE_BUDDY_IS_ONLINE(b) && (jb->subscription & JABBER_SUB_PENDING || !(jb->subscription & JABBER_SUB_TO))) { 1516 if(jb && !PURPLE_BUDDY_IS_ONLINE(b) && (jb->subscription & JABBER_SUB_PENDING || !(jb->subscription & JABBER_SUB_TO))) {
1514 ret = g_strdup(_("Not Authorized")); 1517 ret = g_strdup(_("Not Authorized"));
1515 } else if(jb && !PURPLE_BUDDY_IS_ONLINE(b) && jb->error_msg) { 1518 } else if(jb && !PURPLE_BUDDY_IS_ONLINE(b) && jb->error_msg) {
1516 ret = g_strdup(jb->error_msg); 1519 ret = g_strdup(jb->error_msg);
1535 } 1538 }
1536 1539
1537 void jabber_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full) 1540 void jabber_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full)
1538 { 1541 {
1539 JabberBuddy *jb; 1542 JabberBuddy *jb;
1543 PurpleAccount *account;
1544 PurpleConnection *gc;
1540 1545
1541 g_return_if_fail(b != NULL); 1546 g_return_if_fail(b != NULL);
1542 g_return_if_fail(b->account != NULL); 1547
1543 g_return_if_fail(b->account->gc != NULL); 1548 account = purple_buddy_get_account(b);
1544 g_return_if_fail(b->account->gc->proto_data != NULL); 1549 g_return_if_fail(account != NULL);
1545 1550
1546 jb = jabber_buddy_find(b->account->gc->proto_data, b->name, 1551 gc = purple_account_get_connection(account);
1547 FALSE); 1552 g_return_if_fail(gc != NULL);
1553 g_return_if_fail(gc->proto_data != NULL);
1554
1555 jb = jabber_buddy_find(gc->proto_data, purple_buddy_get_name(b), FALSE);
1548 1556
1549 if(jb) { 1557 if(jb) {
1550 JabberBuddyResource *jbr = NULL; 1558 JabberBuddyResource *jbr = NULL;
1551 PurplePresence *presence = purple_buddy_get_presence(b); 1559 PurplePresence *presence = purple_buddy_get_presence(b);
1552 const char *sub; 1560 const char *sub;
1878 JabberID *jid; 1886 JabberID *jid;
1879 1887
1880 if(!(jid = jabber_id_new(name))) 1888 if(!(jid = jabber_id_new(name)))
1881 return NULL; 1889 return NULL;
1882 1890
1883 for(gnode = purple_get_blist()->root; gnode; gnode = gnode->next) { 1891 for(gnode = purple_blist_get_root(); gnode;
1884 for(cnode = gnode->child; cnode; cnode = cnode->next) { 1892 gnode = purple_blist_node_get_sibling_next(gnode)) {
1893 for(cnode = purple_blist_node_get_first_child(gnode);
1894 cnode;
1895 cnode = purple_blist_node_get_sibling_next(cnode)) {
1885 PurpleChat *chat = (PurpleChat*)cnode; 1896 PurpleChat *chat = (PurpleChat*)cnode;
1886 const char *room, *server; 1897 const char *room, *server;
1898 GHashTable *components;
1887 if(!PURPLE_BLIST_NODE_IS_CHAT(cnode)) 1899 if(!PURPLE_BLIST_NODE_IS_CHAT(cnode))
1888 continue; 1900 continue;
1889 1901
1890 if(chat->account != account) 1902 if (purple_chat_get_account(chat) != account)
1891 continue; 1903 continue;
1892 1904
1893 if(!(room = g_hash_table_lookup(chat->components, "room"))) 1905 components = purple_chat_get_components(chat);
1906 if(!(room = g_hash_table_lookup(components, "room")))
1894 continue; 1907 continue;
1895 if(!(server = g_hash_table_lookup(chat->components, "server"))) 1908 if(!(server = g_hash_table_lookup(components, "server")))
1896 continue; 1909 continue;
1897 1910
1898 if(jid->node && jid->domain && 1911 if(jid->node && jid->domain &&
1899 !g_utf8_collate(room, jid->node) && !g_utf8_collate(server, jid->domain)) { 1912 !g_utf8_collate(room, jid->node) && !g_utf8_collate(server, jid->domain)) {
1900 jabber_id_free(jid); 1913 jabber_id_free(jid);