| 355 { |
355 { |
| 356 PurpleBuddy *buddy; |
356 PurpleBuddy *buddy; |
| 357 int color = 0; |
357 int color = 0; |
| 358 |
358 |
| 359 if (PURPLE_BLIST_NODE_IS_CONTACT(node)) |
359 if (PURPLE_BLIST_NODE_IS_CONTACT(node)) |
| 360 node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node); |
360 node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node))); |
| 361 if (!PURPLE_BLIST_NODE_IS_BUDDY(node)) |
361 if (!PURPLE_BLIST_NODE_IS_BUDDY(node)) |
| 362 return 0; |
362 return 0; |
| 363 |
363 |
| 364 buddy = (PurpleBuddy*)node; |
364 buddy = (PurpleBuddy*)node; |
| 365 if (purple_presence_is_idle(purple_buddy_get_presence(buddy))) { |
365 if (purple_presence_is_idle(purple_buddy_get_presence(buddy))) { |
| 386 flag |= GNT_TEXT_FLAG_BOLD; |
386 flag |= GNT_TEXT_FLAG_BOLD; |
| 387 |
387 |
| 388 if (fnode && fnode->signed_timer) |
388 if (fnode && fnode->signed_timer) |
| 389 flag |= GNT_TEXT_FLAG_BLINK; |
389 flag |= GNT_TEXT_FLAG_BLINK; |
| 390 else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) { |
390 else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) { |
| 391 node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact *)node); |
391 node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node))); |
| 392 fnode = FINCH_GET_DATA(node); |
392 fnode = FINCH_GET_DATA(node); |
| 393 if (fnode && fnode->signed_timer) |
393 if (fnode && fnode->signed_timer) |
| 394 flag |= GNT_TEXT_FLAG_BLINK; |
394 flag |= GNT_TEXT_FLAG_BLINK; |
| 395 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) { |
395 } else if (PURPLE_BLIST_NODE_IS_GROUP(node)) { |
| 396 /* If the node is collapsed, then check to see if any of the priority buddies of |
396 /* If the node is collapsed, then check to see if any of the priority buddies of |
| 884 static char text[2096]; |
884 static char text[2096]; |
| 885 char status[8] = " "; |
885 char status[8] = " "; |
| 886 const char *name = NULL; |
886 const char *name = NULL; |
| 887 |
887 |
| 888 if (PURPLE_BLIST_NODE_IS_CONTACT(node)) |
888 if (PURPLE_BLIST_NODE_IS_CONTACT(node)) |
| 889 node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node); /* XXX: this can return NULL?! */ |
889 node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node))); /* XXX: this can return NULL?! */ |
| 890 |
890 |
| 891 if (node == NULL) |
891 if (node == NULL) |
| 892 return NULL; |
892 return NULL; |
| 893 |
893 |
| 894 if (PURPLE_BLIST_NODE_IS_BUDDY(node)) |
894 if (PURPLE_BLIST_NODE_IS_BUDDY(node)) |
| 1025 |
1025 |
| 1026 if (!node) |
1026 if (!node) |
| 1027 return; |
1027 return; |
| 1028 |
1028 |
| 1029 if (PURPLE_BLIST_NODE_IS_CONTACT(node)) |
1029 if (PURPLE_BLIST_NODE_IS_CONTACT(node)) |
| 1030 node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node); |
1030 node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node))); |
| 1031 |
1031 |
| 1032 if (PURPLE_BLIST_NODE_IS_BUDDY(node)) |
1032 if (PURPLE_BLIST_NODE_IS_BUDDY(node)) |
| 1033 { |
1033 { |
| 1034 PurpleBuddy *buddy = (PurpleBuddy *)node; |
1034 PurpleBuddy *buddy = (PurpleBuddy *)node; |
| 1035 PurpleConversation *conv; |
1035 PurpleConversation *conv; |
| 1569 ggblist->tagged = g_list_delete_link(ggblist->tagged, iter); |
1569 ggblist->tagged = g_list_delete_link(ggblist->tagged, iter); |
| 1570 } else { |
1570 } else { |
| 1571 ggblist->tagged = g_list_prepend(ggblist->tagged, node); |
1571 ggblist->tagged = g_list_prepend(ggblist->tagged, node); |
| 1572 } |
1572 } |
| 1573 if (PURPLE_BLIST_NODE_IS_CONTACT(node)) |
1573 if (PURPLE_BLIST_NODE_IS_CONTACT(node)) |
| 1574 node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node); |
1574 update_buddy_display(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)), ggblist); |
| 1575 if (PURPLE_BLIST_NODE_IS_BUDDY(node)) |
1575 else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) |
| 1576 update_buddy_display((PurpleBuddy*)node, ggblist); |
1576 update_buddy_display((PurpleBuddy*)node, ggblist); |
| 1577 else |
1577 else |
| 1578 update_node_display(node, ggblist); |
1578 update_node_display(node, ggblist); |
| 1579 } |
1579 } |
| 1580 |
1580 |
| 1610 update_node_display(node, ggblist); |
1610 update_node_display(node, ggblist); |
| 1611 /* Add the group after the current group */ |
1611 /* Add the group after the current group */ |
| 1612 purple_blist_add_group((PurpleGroup*)node, (PurpleBlistNode*)tg); |
1612 purple_blist_add_group((PurpleGroup*)node, (PurpleBlistNode*)tg); |
| 1613 } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) { |
1613 } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) { |
| 1614 update_buddy_display(purple_contact_get_priority_buddy((PurpleContact*)node), ggblist); |
1614 update_buddy_display(purple_contact_get_priority_buddy((PurpleContact*)node), ggblist); |
| 1615 if ((PurpleBlistNode*)tg == target) { |
1615 if (PURPLE_BLIST_NODE(tg) == target) { |
| 1616 /* The target is a group, just add the contact to the group. */ |
1616 /* The target is a group, just add the contact to the group. */ |
| 1617 purple_blist_add_contact((PurpleContact*)node, tg, NULL); |
1617 purple_blist_add_contact((PurpleContact*)node, tg, NULL); |
| 1618 } else if (tc) { |
1618 } else if (tc) { |
| 1619 /* The target is either a buddy, or a contact. Merge with that contact. */ |
1619 /* The target is either a buddy, or a contact. Merge with that contact. */ |
| 1620 purple_blist_merge_contact((PurpleContact*)node, (PurpleBlistNode*)tc); |
1620 purple_blist_merge_contact((PurpleContact*)node, (PurpleBlistNode*)tc); |
| 1622 /* The target is a chat. Add the contact to the group after this chat. */ |
1622 /* The target is a chat. Add the contact to the group after this chat. */ |
| 1623 purple_blist_add_contact((PurpleContact*)node, NULL, target); |
1623 purple_blist_add_contact((PurpleContact*)node, NULL, target); |
| 1624 } |
1624 } |
| 1625 } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) { |
1625 } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) { |
| 1626 update_buddy_display((PurpleBuddy*)node, ggblist); |
1626 update_buddy_display((PurpleBuddy*)node, ggblist); |
| 1627 if ((PurpleBlistNode*)tg == target) { |
1627 if (PURPLE_BLIST_NODE(tg) == target) { |
| 1628 /* The target is a group. Add this buddy in a new contact under this group. */ |
1628 /* The target is a group. Add this buddy in a new contact under this group. */ |
| 1629 purple_blist_add_buddy((PurpleBuddy*)node, NULL, tg, NULL); |
1629 purple_blist_add_buddy((PurpleBuddy*)node, NULL, tg, NULL); |
| 1630 } else if (PURPLE_BLIST_NODE_IS_CONTACT(target)) { |
1630 } else if (PURPLE_BLIST_NODE_IS_CONTACT(target)) { |
| 1631 /* Add to the contact. */ |
1631 /* Add to the contact. */ |
| 1632 purple_blist_add_buddy((PurpleBuddy*)node, tc, NULL, NULL); |
1632 purple_blist_add_buddy((PurpleBuddy*)node, tc, NULL, NULL); |
| 1637 /* Add to the selected chat's group. */ |
1637 /* Add to the selected chat's group. */ |
| 1638 purple_blist_add_buddy((PurpleBuddy*)node, NULL, tg, NULL); |
1638 purple_blist_add_buddy((PurpleBuddy*)node, NULL, tg, NULL); |
| 1639 } |
1639 } |
| 1640 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) { |
1640 } else if (PURPLE_BLIST_NODE_IS_CHAT(node)) { |
| 1641 update_node_display(node, ggblist); |
1641 update_node_display(node, ggblist); |
| 1642 if ((PurpleBlistNode*)tg == target) |
1642 if (PURPLE_BLIST_NODE(tg) == target) |
| 1643 purple_blist_add_chat((PurpleChat*)node, tg, NULL); |
1643 purple_blist_add_chat((PurpleChat*)node, tg, NULL); |
| 1644 else |
1644 else |
| 1645 purple_blist_add_chat((PurpleChat*)node, NULL, target); |
1645 purple_blist_add_chat((PurpleChat*)node, NULL, target); |
| 1646 } |
1646 } |
| 1647 } |
1647 } |
| 1683 |
1683 |
| 1684 if (!node) { |
1684 if (!node) { |
| 1685 create_group_menu(GNT_MENU(context), NULL); |
1685 create_group_menu(GNT_MENU(context), NULL); |
| 1686 title = g_strdup(_("Buddy List")); |
1686 title = g_strdup(_("Buddy List")); |
| 1687 } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) { |
1687 } else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) { |
| 1688 ggblist->cnode = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node); |
1688 ggblist->cnode = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node))); |
| 1689 create_buddy_menu(GNT_MENU(context), (PurpleBuddy*)ggblist->cnode); |
1689 create_buddy_menu(GNT_MENU(context), (PurpleBuddy*)ggblist->cnode); |
| 1690 title = g_strdup(purple_contact_get_alias((PurpleContact*)node)); |
1690 title = g_strdup(purple_contact_get_alias((PurpleContact*)node)); |
| 1691 } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) { |
1691 } else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) { |
| 1692 PurpleBuddy *buddy = (PurpleBuddy *)node; |
1692 PurpleBuddy *buddy = (PurpleBuddy *)node; |
| 1693 create_buddy_menu(GNT_MENU(context), buddy); |
1693 create_buddy_menu(GNT_MENU(context), buddy); |
| 2410 if (purple_blist_node_get_type(n1) != purple_blist_node_get_type(n2)) |
2410 if (purple_blist_node_get_type(n1) != purple_blist_node_get_type(n2)) |
| 2411 return blist_node_compare_position(n1, n2); |
2411 return blist_node_compare_position(n1, n2); |
| 2412 |
2412 |
| 2413 switch (purple_blist_node_get_type(n1)) { |
2413 switch (purple_blist_node_get_type(n1)) { |
| 2414 case PURPLE_BLIST_CONTACT_NODE: |
2414 case PURPLE_BLIST_CONTACT_NODE: |
| 2415 n1 = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)n1); |
2415 n1 = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(n1))); |
| 2416 n2 = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)n2); |
2416 n2 = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(n2))); |
| 2417 /* now compare the presence of the priority buddies */ |
2417 /* now compare the presence of the priority buddies */ |
| 2418 case PURPLE_BLIST_BUDDY_NODE: |
2418 case PURPLE_BLIST_BUDDY_NODE: |
| 2419 ret = purple_presence_compare(purple_buddy_get_presence((PurpleBuddy*)n1), |
2419 ret = purple_presence_compare(purple_buddy_get_presence((PurpleBuddy*)n1), |
| 2420 purple_buddy_get_presence((PurpleBuddy*)n2)); |
2420 purple_buddy_get_presence((PurpleBuddy*)n2)); |
| 2421 if (ret != 0) |
2421 if (ret != 0) |