void GroupWiseContact::setOnlineStatus( const Kopete::OnlineStatus& status ) { setMessageReceivedOffline( false ); if ( status == protocol()->groupwiseAwayIdle && status != onlineStatus() ) setIdleTime( 1 ); else if ( onlineStatus() == protocol()->groupwiseAwayIdle && status != onlineStatus() ) setIdleTime( 0 ); if ( account()->isContactBlocked( m_dn ) && status.internalStatus() < 15 ) { Kopete::Contact::setOnlineStatus(Kopete::OnlineStatus(status.status(), (status.weight()==0) ? 0 : (status.weight() -1), protocol() , status.internalStatus()+15 , QStringList("msn_blocked"), i18n("%1|Blocked", status.description() ) ) ); } else { if(status.internalStatus() >= 15) { //the user is not blocked, but the status is blocked switch(status.internalStatus()-15) { case 0: Kopete::Contact::setOnlineStatus( GroupWiseProtocol::protocol()->groupwiseUnknown ); break; case 1: Kopete::Contact::setOnlineStatus( GroupWiseProtocol::protocol()->groupwiseOffline ); break; case 2: Kopete::Contact::setOnlineStatus( GroupWiseProtocol::protocol()->groupwiseAvailable ); break; case 3: Kopete::Contact::setOnlineStatus( GroupWiseProtocol::protocol()->groupwiseBusy ); break; case 4: Kopete::Contact::setOnlineStatus( GroupWiseProtocol::protocol()->groupwiseAway ); break; case 5: Kopete::Contact::setOnlineStatus( GroupWiseProtocol::protocol()->groupwiseAwayIdle ); break; default: Kopete::Contact::setOnlineStatus( GroupWiseProtocol::protocol()->groupwiseUnknown ); break; } } else Kopete::Contact::setOnlineStatus(status); } }
void WlmContact::setOnlineStatus(const Kopete::OnlineStatus& status) { #if 0 bool isBlocked = qobject_cast <WlmAccount *>(account())->isOnBlockList(contactId()); bool isOnForwardList = qobject_cast <WlmAccount *>(account())->isOnServerSideList(contactId()); bool isOnReverseList = qobject_cast <WlmAccount *>(account())->isOnReverseList(contactId()); // if this contact is blocked, and currently has a regular status, // create a custom status and add wlm_blocked to ovelayIcons if(isBlocked || (isOnForwardList && !isOnReverseList)) { QStringList overelayIconsList; QString reason; if(isOnForwardList && !isOnReverseList) { overelayIconsList << "wlm_fakefriend"; reason = i18n("This contact does not have you in his/her list"); } if(isBlocked) { overelayIconsList << "wlm_blocked"; if(reason.isEmpty()) reason = i18n("This contact is blocked"); else reason = i18n("This contact does not have you in his/her list and is blocked"); } // set the new status Kopete::Contact::setOnlineStatus( Kopete::OnlineStatus(status.status() , (status.weight()==0) ? 0 : (status.weight() -1), protocol(), status.internalStatus()+15, status.overlayIcons() + overelayIconsList, reason ) ); return; } if (status.internalStatus() >= 15) { // if this contact was previously blocked, set a regular status again switch(status.internalStatus()-15) { case 1: Kopete::Contact::setOnlineStatus(WlmProtocol::protocol()->wlmOnline); break; case 2: Kopete::Contact::setOnlineStatus(WlmProtocol::protocol()->wlmAway); break; case 3: Kopete::Contact::setOnlineStatus(WlmProtocol::protocol()->wlmBusy); break; case 4: Kopete::Contact::setOnlineStatus(WlmProtocol::protocol()->wlmBeRightBack); break; case 5: Kopete::Contact::setOnlineStatus(WlmProtocol::protocol()->wlmOnThePhone); break; case 6: Kopete::Contact::setOnlineStatus(WlmProtocol::protocol()->wlmOutToLunch); break; case 7: Kopete::Contact::setOnlineStatus(WlmProtocol::protocol()->wlmInvisible); break; case 8: Kopete::Contact::setOnlineStatus(WlmProtocol::protocol()->wlmOffline); break; case 9: Kopete::Contact::setOnlineStatus(WlmProtocol::protocol()->wlmIdle); break; default: Kopete::Contact::setOnlineStatus(WlmProtocol::protocol()->wlmUnknown); break; } } else #endif Kopete::Contact::setOnlineStatus(status); }