| 1582 g_object_unref(chat); |
1582 g_object_unref(chat); |
| 1583 } |
1583 } |
| 1584 |
1584 |
| 1585 void purple_blist_remove_group(PurpleGroup *group) |
1585 void purple_blist_remove_group(PurpleGroup *group) |
| 1586 { |
1586 { |
| |
1587 PurpleAccountManager *manager = NULL; |
| 1587 PurpleBuddyListClass *klass = NULL; |
1588 PurpleBuddyListClass *klass = NULL; |
| 1588 PurpleBuddyListPrivate *priv = NULL; |
1589 PurpleBuddyListPrivate *priv = NULL; |
| 1589 PurpleBlistNode *node; |
1590 PurpleBlistNode *node; |
| 1590 GList *l; |
1591 GList *accounts = NULL; |
| 1591 gchar* key; |
1592 gchar* key; |
| 1592 |
1593 |
| 1593 g_return_if_fail(PURPLE_IS_BUDDY_LIST(purplebuddylist)); |
1594 g_return_if_fail(PURPLE_IS_BUDDY_LIST(purplebuddylist)); |
| 1594 g_return_if_fail(PURPLE_IS_GROUP(group)); |
1595 g_return_if_fail(PURPLE_IS_GROUP(group)); |
| 1595 |
1596 |
| 1628 |
1629 |
| 1629 purple_signal_emit(purple_blist_get_handle(), "blist-node-removed", |
1630 purple_signal_emit(purple_blist_get_handle(), "blist-node-removed", |
| 1630 PURPLE_BLIST_NODE(group)); |
1631 PURPLE_BLIST_NODE(group)); |
| 1631 |
1632 |
| 1632 /* Remove the group from all accounts that are online */ |
1633 /* Remove the group from all accounts that are online */ |
| 1633 for (l = purple_connections_get_all(); l != NULL; l = l->next) |
1634 manager = purple_account_manager_get_default(); |
| 1634 { |
1635 accounts = purple_account_manager_get_connected(manager); |
| 1635 PurpleConnection *gc = (PurpleConnection *)l->data; |
1636 while(accounts != NULL) { |
| 1636 |
1637 purple_account_remove_group(accounts->data, group); |
| 1637 if(purple_connection_get_state(gc) == PURPLE_CONNECTION_STATE_CONNECTED) { |
1638 |
| 1638 purple_account_remove_group(purple_connection_get_account(gc), group); |
1639 accounts = g_list_delete_link(accounts, accounts); |
| 1639 } |
|
| 1640 } |
1640 } |
| 1641 |
1641 |
| 1642 /* Delete the node */ |
1642 /* Delete the node */ |
| 1643 g_object_unref(group); |
1643 g_object_unref(group); |
| 1644 } |
1644 } |