comparison libpurple/protocols/jabber/buddy.c @ 25204:cac2f6203505

Patch from darkrain42 Use idleness when finding buddy resources (most active) Use resource found using jabber_buddy_find_resource to report idle time (get rid of an extra function to rank on idle time)
author Marcus Lundblad <ml@update.uu.se>
date Tue, 18 Nov 2008 20:24:59 +0000
parents c5c4faef04ff
children b2f4964768d7
comparison
equal deleted inserted replaced
25203:c5c4faef04ff 25204:cac2f6203505
109 /* Determine if this resource is more available than the one we've currently chosen */ 109 /* Determine if this resource is more available than the one we've currently chosen */
110 switch(tmp->state) { 110 switch(tmp->state) {
111 case JABBER_BUDDY_STATE_ONLINE: 111 case JABBER_BUDDY_STATE_ONLINE:
112 case JABBER_BUDDY_STATE_CHAT: 112 case JABBER_BUDDY_STATE_CHAT:
113 /* This resource is online/chatty. Prefer to one which isn't either. */ 113 /* This resource is online/chatty. Prefer to one which isn't either. */
114 if ((jbr->state != JABBER_BUDDY_STATE_ONLINE) && (jbr->state != JABBER_BUDDY_STATE_CHAT)) 114 if (((jbr->state != JABBER_BUDDY_STATE_ONLINE) && (jbr->state != JABBER_BUDDY_STATE_CHAT)) ||
115 (jbr->idle && !tmp->idle) || (jbr->idle && tmp->idle && tmp->idle > jbr->idle))
115 jbr = tmp; 116 jbr = tmp;
116 break; 117 break;
117 case JABBER_BUDDY_STATE_AWAY: 118 case JABBER_BUDDY_STATE_AWAY:
118 case JABBER_BUDDY_STATE_DND: 119 case JABBER_BUDDY_STATE_DND:
119 case JABBER_BUDDY_STATE_UNAVAILABLE: 120 case JABBER_BUDDY_STATE_UNAVAILABLE:
120 /* This resource is away/dnd/unavailable. Prefer to one which is extended away or unknown. */ 121 /* This resource is away/dnd/unavailable. Prefer to one which is extended away or unknown. */
121 if ((jbr->state == JABBER_BUDDY_STATE_XA) || 122 if (((jbr->state == JABBER_BUDDY_STATE_XA) ||
122 (jbr->state == JABBER_BUDDY_STATE_UNKNOWN) || (jbr->state == JABBER_BUDDY_STATE_ERROR)) 123 (jbr->state == JABBER_BUDDY_STATE_UNKNOWN) || (jbr->state == JABBER_BUDDY_STATE_ERROR)) ||
124 (jbr->idle && !tmp->idle) || (jbr->idle && tmp->idle && tmp->idle > jbr->idle))
123 jbr = tmp; 125 jbr = tmp;
124 break; 126 break;
125 case JABBER_BUDDY_STATE_XA: 127 case JABBER_BUDDY_STATE_XA:
126 /* This resource is extended away. That's better than unknown. */ 128 /* This resource is extended away. That's better than unknown. */
127 if ((jbr->state == JABBER_BUDDY_STATE_UNKNOWN) || (jbr->state == JABBER_BUDDY_STATE_ERROR)) 129 if (((jbr->state == JABBER_BUDDY_STATE_UNKNOWN) || (jbr->state == JABBER_BUDDY_STATE_ERROR)) ||
130 (jbr->idle && !tmp->idle) || (jbr->idle && tmp->idle && tmp->idle > jbr->idle))
128 jbr = tmp; 131 jbr = tmp;
129 break; 132 break;
130 case JABBER_BUDDY_STATE_UNKNOWN: 133 case JABBER_BUDDY_STATE_UNKNOWN:
131 case JABBER_BUDDY_STATE_ERROR: 134 case JABBER_BUDDY_STATE_ERROR:
132 /* These are never preferable. */ 135 /* These are never preferable. */