comparison libpurple/blist.c @ 23404:3c1f1bed5be2

merge of '57be04f07f9fdc005b620053ae4f09dd1e27ebb3' and '582755b8228024381c2a9e110de35f0aaedd5dc1'
author Evan Schoenberg <evan.s@dreskin.net>
date Wed, 02 Jul 2008 00:06:25 +0000
parents 25161f5ea347
children 0d0088b03745
comparison
equal deleted inserted replaced
22773:c9bc2d0215ed 23404:3c1f1bed5be2
822 purple_contact_invalidate_priority_buddy(purple_buddy_get_contact(buddy)); 822 purple_contact_invalidate_priority_buddy(purple_buddy_get_contact(buddy));
823 if (ops && ops->update) 823 if (ops && ops->update)
824 ops->update(purplebuddylist, (PurpleBlistNode *)buddy); 824 ops->update(purplebuddylist, (PurpleBlistNode *)buddy);
825 } 825 }
826 826
827 void purple_blist_update_buddy_icon(PurpleBuddy *buddy) 827 void
828 purple_blist_update_node_icon(PurpleBlistNode *node)
828 { 829 {
829 PurpleBlistUiOps *ops = purple_blist_get_ui_ops(); 830 PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
830 831
831 g_return_if_fail(buddy != NULL); 832 g_return_if_fail(node != NULL);
832 833
833 if (ops && ops->update) 834 if (ops && ops->update)
834 ops->update(purplebuddylist, (PurpleBlistNode *)buddy); 835 ops->update(purplebuddylist, node);
835 } 836 }
837
838 #ifndef PURPLE_DISABLE_DEPRECATED
839 void
840 purple_blist_update_buddy_icon(PurpleBuddy *buddy)
841 {
842 purple_blist_update_node_icon((PurpleBlistNode *)buddy);
843 }
844 #endif
836 845
837 /* 846 /*
838 * TODO: Maybe remove the call to this from server.c and call it 847 * TODO: Maybe remove the call to this from server.c and call it
839 * from oscar.c and toc.c instead? 848 * from oscar.c and toc.c instead?
840 */ 849 */
1195 buddy->icon = (icon != NULL ? purple_buddy_icon_ref(icon) : NULL); 1204 buddy->icon = (icon != NULL ? purple_buddy_icon_ref(icon) : NULL);
1196 } 1205 }
1197 1206
1198 purple_signal_emit(purple_blist_get_handle(), "buddy-icon-changed", buddy); 1207 purple_signal_emit(purple_blist_get_handle(), "buddy-icon-changed", buddy);
1199 1208
1200 purple_blist_update_buddy_icon(buddy); 1209 purple_blist_update_node_icon((PurpleBlistNode*)buddy);
1201 } 1210 }
1202 1211
1203 PurpleAccount * 1212 PurpleAccount *
1204 purple_buddy_get_account(const PurpleBuddy *buddy) 1213 purple_buddy_get_account(const PurpleBuddy *buddy)
1205 { 1214 {
1231 1240
1232 g_return_if_fail(chat != NULL); 1241 g_return_if_fail(chat != NULL);
1233 g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT((PurpleBlistNode *)chat)); 1242 g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT((PurpleBlistNode *)chat));
1234 1243
1235 if (node == NULL) { 1244 if (node == NULL) {
1236 if (group == NULL) { 1245 if (group == NULL)
1237 group = purple_group_new(_("Chats")); 1246 group = purple_group_new(_("Chats"));
1247
1248 /* Add group to blist if isn't already on it. Fixes #2752. */
1249 if (!purple_find_group(group->name)) {
1238 purple_blist_add_group(group, 1250 purple_blist_add_group(group,
1239 purple_blist_get_last_sibling(purplebuddylist->root)); 1251 purple_blist_get_last_sibling(purplebuddylist->root));
1240 } else {
1241 /* Add group to blist if isn't already on it. Fixes #2752. */
1242 if (!purple_find_group(group->name)) {
1243 purple_blist_add_group(group,
1244 purple_blist_get_last_sibling(purplebuddylist->root));
1245 }
1246 } 1252 }
1247 } else { 1253 } else {
1248 group = (PurpleGroup*)node->parent; 1254 group = (PurpleGroup*)node->parent;
1249 } 1255 }
1250 1256
1334 g = (PurpleGroup*)node->parent->parent; 1340 g = (PurpleGroup*)node->parent->parent;
1335 } else if (contact) { 1341 } else if (contact) {
1336 c = contact; 1342 c = contact;
1337 g = (PurpleGroup *)((PurpleBlistNode *)c)->parent; 1343 g = (PurpleGroup *)((PurpleBlistNode *)c)->parent;
1338 } else { 1344 } else {
1339 if (group) { 1345 g = group;
1340 /* Add group to blist if isn't already on it. Fixes #2752. */ 1346 if (g == NULL)
1341 if (!purple_find_group(group->name)) {
1342 purple_blist_add_group(group,
1343 purple_blist_get_last_sibling(purplebuddylist->root));
1344 }
1345
1346 g = group;
1347 } else {
1348 g = purple_group_new(_("Buddies")); 1347 g = purple_group_new(_("Buddies"));
1348 /* Add group to blist if isn't already on it. Fixes #2752. */
1349 if (!purple_find_group(g->name)) {
1349 purple_blist_add_group(g, 1350 purple_blist_add_group(g,
1350 purple_blist_get_last_sibling(purplebuddylist->root)); 1351 purple_blist_get_last_sibling(purplebuddylist->root));
1351 } 1352 }
1352 c = purple_contact_new(); 1353 c = purple_contact_new();
1353 purple_blist_add_contact(c, g, 1354 purple_blist_add_contact(c, g,
1553 PURPLE_BLIST_NODE_IS_CHAT(node))) 1554 PURPLE_BLIST_NODE_IS_CHAT(node)))
1554 g = (PurpleGroup*)node->parent; 1555 g = (PurpleGroup*)node->parent;
1555 else if (group) 1556 else if (group)
1556 g = group; 1557 g = group;
1557 else { 1558 else {
1558 g = purple_group_new(_("Buddies")); 1559 g = purple_find_group(_("Buddies"));
1559 purple_blist_add_group(g, 1560 if (g == NULL) {
1560 purple_blist_get_last_sibling(purplebuddylist->root)); 1561 g = purple_group_new(_("Buddies"));
1562 purple_blist_add_group(g,
1563 purple_blist_get_last_sibling(purplebuddylist->root));
1564 }
1561 } 1565 }
1562 1566
1563 gnode = (PurpleBlistNode*)g; 1567 gnode = (PurpleBlistNode*)g;
1564 cnode = (PurpleBlistNode*)contact; 1568 cnode = (PurpleBlistNode*)contact;
1565 1569
2071 return buddy->name; 2075 return buddy->name;
2072 } 2076 }
2073 2077
2074 const char *purple_chat_get_name(PurpleChat *chat) 2078 const char *purple_chat_get_name(PurpleChat *chat)
2075 { 2079 {
2076 struct proto_chat_entry *pce; 2080 char *ret = NULL;
2077 GList *parts;
2078 char *ret;
2079 PurplePlugin *prpl; 2081 PurplePlugin *prpl;
2080 PurplePluginProtocolInfo *prpl_info = NULL; 2082 PurplePluginProtocolInfo *prpl_info = NULL;
2081 2083
2082 g_return_val_if_fail(chat != NULL, NULL); 2084 g_return_val_if_fail(chat != NULL, NULL);
2083 2085
2085 return chat->alias; 2087 return chat->alias;
2086 2088
2087 prpl = purple_find_prpl(purple_account_get_protocol_id(chat->account)); 2089 prpl = purple_find_prpl(purple_account_get_protocol_id(chat->account));
2088 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); 2090 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
2089 2091
2090 parts = prpl_info->chat_info(purple_account_get_connection(chat->account)); 2092 if (prpl_info->chat_info) {
2091 pce = parts->data; 2093 struct proto_chat_entry *pce;
2092 ret = g_hash_table_lookup(chat->components, pce->identifier); 2094 GList *parts = prpl_info->chat_info(purple_account_get_connection(chat->account));
2093 g_list_foreach(parts, (GFunc)g_free, NULL); 2095 pce = parts->data;
2094 g_list_free(parts); 2096 ret = g_hash_table_lookup(chat->components, pce->identifier);
2097 g_list_foreach(parts, (GFunc)g_free, NULL);
2098 g_list_free(parts);
2099 }
2095 2100
2096 return ret; 2101 return ret;
2097 } 2102 }
2098 2103
2099 PurpleBuddy *purple_find_buddy(PurpleAccount *account, const char *name) 2104 PurpleBuddy *purple_find_buddy(PurpleAccount *account, const char *name)
2191 2196
2192 g_return_val_if_fail(purplebuddylist != NULL, NULL); 2197 g_return_val_if_fail(purplebuddylist != NULL, NULL);
2193 g_return_val_if_fail((name != NULL) && (*name != '\0'), NULL); 2198 g_return_val_if_fail((name != NULL) && (*name != '\0'), NULL);
2194 2199
2195 for (node = purplebuddylist->root; node != NULL; node = node->next) { 2200 for (node = purplebuddylist->root; node != NULL; node = node->next) {
2196 if (!strcmp(((PurpleGroup *)node)->name, name)) 2201 if (!purple_utf8_strcasecmp(((PurpleGroup *)node)->name, name))
2197 return (PurpleGroup *)node; 2202 return (PurpleGroup *)node;
2198 } 2203 }
2199 2204
2200 return NULL; 2205 return NULL;
2201 } 2206 }