Mercurial > pidgin.yaz
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); |