Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • protocols/yahoo/yahoo.c

    rec55a7d r99c8f13  
    130130{
    131131        set_add( &acc->set, "mail_notifications", "false", set_eval_bool, acc );
    132        
    133         acc->flags |= ACC_FLAG_AWAY_MESSAGE | ACC_FLAG_STATUS_MESSAGE;
    134132}
    135133
     
    199197{
    200198        struct byahoo_data *yd = (struct byahoo_data *) ic->proto_data;
    201        
    202         if( state && msg == NULL )
    203         {
    204                 /* Use these states only if msg doesn't contain additional
    205                    info since away messages are only supported with CUSTOM. */
    206                 if( g_strcasecmp( state, "Be Right Back" ) == 0 )
     199        char *away;
     200       
     201        away = NULL;
     202       
     203        if( state && msg && g_strcasecmp( state, msg ) != 0 )
     204        {
     205                yd->current_status = YAHOO_STATUS_CUSTOM;
     206                away = "";
     207        }
     208        else if( state )
     209        {
     210                /* Set msg to NULL since (if it isn't NULL already) it's equal
     211                   to state. msg must be empty if we want to use an existing
     212                   away state. */
     213                msg = NULL;
     214               
     215                away = "";
     216                if( g_strcasecmp( state, "Available" ) == 0 )
     217                {
     218                        yd->current_status = YAHOO_STATUS_AVAILABLE;
     219                        away = NULL;
     220                }
     221                else if( g_strcasecmp( state, "Be Right Back" ) == 0 )
    207222                        yd->current_status = YAHOO_STATUS_BRB;
    208223                else if( g_strcasecmp( state, "Busy" ) == 0 )
     
    224239                else if( g_strcasecmp( state, "Invisible" ) == 0 )
    225240                        yd->current_status = YAHOO_STATUS_INVISIBLE;
    226                 else
    227                         yd->current_status = YAHOO_STATUS_CUSTOM;
    228         }
    229         else if( msg )
    230                 yd->current_status = YAHOO_STATUS_CUSTOM;
     241                else if( g_strcasecmp( state, GAIM_AWAY_CUSTOM ) == 0 )
     242                {
     243                        yd->current_status = YAHOO_STATUS_AVAILABLE;
     244                       
     245                        away = NULL;
     246                }
     247        }
    231248        else
    232249                yd->current_status = YAHOO_STATUS_AVAILABLE;
    233250       
    234         yahoo_set_away( yd->y2_id, yd->current_status, msg, state ? 2 : 0 );
     251        yahoo_set_away( yd->y2_id, yd->current_status, msg, away != NULL ? 2 : 0 );
    235252}
    236253
     
    241258        if( m == NULL )
    242259        {
     260                m = g_list_append( m, "Available" );
    243261                m = g_list_append( m, "Be Right Back" );
    244262                m = g_list_append( m, "Busy" );
     
    251269                m = g_list_append( m, "Stepped Out" );
    252270                m = g_list_append( m, "Invisible" );
     271                m = g_list_append( m, GAIM_AWAY_CUSTOM );
    253272        }
    254273       
Note: See TracChangeset for help on using the changeset viewer.