aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/purple/purple.c
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2010-07-17 13:08:31 +0100
committerWilmer van der Gaast <wilmer@gaast.net>2010-07-17 13:08:31 +0100
commita08e8752a64e12f16a9ddc7e583195c3388b8d3f (patch)
tree45f6bbb88fc4a68e14b813ff336ef91d542de59d /protocols/purple/purple.c
parentd0527c1845ed1230bbc3b0f94b8643cd8f9fddc3 (diff)
libpurple: Read group information of contacts.
Diffstat (limited to 'protocols/purple/purple.c')
-rw-r--r--protocols/purple/purple.c43
1 files changed, 21 insertions, 22 deletions
diff --git a/protocols/purple/purple.c b/protocols/purple/purple.c
index 4729794d..d69bc82b 100644
--- a/protocols/purple/purple.c
+++ b/protocols/purple/purple.c
@@ -643,32 +643,12 @@ static PurpleConnectionUiOps bee_conn_uiops =
prplcb_conn_report_disconnect_reason,
};
-static void prplcb_blist_new( PurpleBlistNode *node )
-{
- PurpleBuddy *bud = (PurpleBuddy*) node;
-
- if( node->type == PURPLE_BLIST_BUDDY_NODE )
- {
- struct im_connection *ic = purple_ic_by_pa( bud->account );
-
- if( ic == NULL )
- return;
-
- imcb_add_buddy( ic, bud->name, NULL );
- if( bud->server_alias )
- {
- imcb_rename_buddy( ic, bud->name, bud->server_alias );
- imcb_buddy_nick_hint( ic, bud->name, bud->server_alias );
- }
- }
-}
-
static void prplcb_blist_update( PurpleBuddyList *list, PurpleBlistNode *node )
{
- PurpleBuddy *bud = (PurpleBuddy*) node;
-
if( node->type == PURPLE_BLIST_BUDDY_NODE )
{
+ PurpleBuddy *bud = (PurpleBuddy*) node;
+ PurpleGroup *group = purple_buddy_get_group( bud );
struct im_connection *ic = purple_ic_by_pa( bud->account );
PurpleStatus *as;
int flags = 0;
@@ -679,6 +659,9 @@ static void prplcb_blist_update( PurpleBuddyList *list, PurpleBlistNode *node )
if( bud->server_alias )
imcb_rename_buddy( ic, bud->name, bud->server_alias );
+ if( group )
+ imcb_add_buddy( ic, bud->name, purple_group_get_name( group ) );
+
flags |= purple_presence_is_online( bud->presence ) ? OPT_LOGGED_IN : 0;
flags |= purple_presence_is_available( bud->presence ) ? 0 : OPT_AWAY;
@@ -693,6 +676,22 @@ static void prplcb_blist_update( PurpleBuddyList *list, PurpleBlistNode *node )
}
}
+static void prplcb_blist_new( PurpleBlistNode *node )
+{
+ if( node->type == PURPLE_BLIST_BUDDY_NODE )
+ {
+ PurpleBuddy *bud = (PurpleBuddy*) node;
+ struct im_connection *ic = purple_ic_by_pa( bud->account );
+
+ if( ic == NULL )
+ return;
+
+ imcb_add_buddy( ic, bud->name, NULL );
+
+ prplcb_blist_update( NULL, node );
+ }
+}
+
static void prplcb_blist_remove( PurpleBuddyList *list, PurpleBlistNode *node )
{
/*