Mercurial > pidgin
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 } |