Ignore:
Timestamp:
2006-10-10T12:05:42Z (18 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
8eb10c9
Parents:
6a1128d
Message:

Added resource selection (based on priority or time of last message) to
budd_by_jid(), added a full_jid property to easily address that resource
without having to rebuild the full JID every time and implemented typing
notification shite.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • protocols/jabber/jabber_util.c

    r6a1128d ra21a8ac  
    247247       
    248248        *s = '/';
    249         new->resource = g_strdup( s + 1 );
     249        new->full_jid = g_strdup( full_jid );
     250        new->resource = strchr( new->full_jid, '/' ) + 1;
    250251       
    251252        return new;
     
    268269        else
    269270        {
    270                 /* TODO: Add selection. */
    271                 return g_hash_table_lookup( jd->buddies, jid );
     271                struct jabber_buddy *best_prio, *best_time;
     272                char *set;
     273               
     274                best_prio = best_time = bud = g_hash_table_lookup( jd->buddies, jid );
     275                for( ; bud; bud = bud->next )
     276                {
     277                        if( bud->priority > best_prio->priority )
     278                                best_prio = bud;
     279                        if( bud->last_act > best_time->last_act )
     280                                best_time = bud;
     281                }
     282               
     283                if( ( set = set_getstr( &gc->acc->set, "resource_select" ) ) == NULL )
     284                        return NULL;
     285                else if( strcmp( set, "activity" ) == 0 )
     286                        return best_time;
     287                else /* if( strcmp( set, "priority" ) == 0 ) */
     288                        return best_prio;
    272289        }
    273290       
     
    295312                        g_hash_table_remove( jd->buddies, bud->handle );
    296313                        g_free( bud->handle );
    297                         g_free( bud->resource );
     314                        g_free( bud->full_jid );
    298315                        g_free( bud->away_message );
    299316                        g_free( bud );
     
    314331                                        g_hash_table_replace( jd->buddies, bi->handle, bi->next );
    315332                               
    316                                 g_free( bi->resource );
     333                                g_free( bi->full_jid );
    317334                                g_free( bi->away_message );
    318335                                g_free( bi );
Note: See TracChangeset for help on using the changeset viewer.