AIMContact::AIMContact( Kopete::Account* account, const QString& name, Kopete::MetaContact* parent, const QString& icon ) : AIMContactBase(account, name, parent, icon ) { mProtocol=static_cast<ICQProtocol *>(protocol()); setPresenceTarget( Oscar::Presence( Oscar::Presence::Offline, Oscar::Presence::AIM ) ); QObject::connect( mAccount->engine(), SIGNAL(receivedUserInfo(QString,UserDetails)), this, SLOT(userInfoUpdated(QString,UserDetails)) ); QObject::connect( mAccount->engine(), SIGNAL(userIsOffline(QString)), this, SLOT(userOffline(QString)) ); }
void GatewayTask::processUserOnline(const XMPP::Jid& user, int showStatus) { bool first_login = UserManager::instance()->getOption(user.bare(), "first_login").toBool(); if ( d->icqHost.isEmpty() || !d->icqPort ) { qCritical("[GT] processLogin: icq host and/or port values are not set. Aborting..."); return; } ICQ::Session::OnlineStatus icqStatus = xmmpToIcqStatus(XMPP::Presence::Show(showStatus)); if ( d->jidIcqTable.contains( user.bare() ) ) { ICQ::Session *conn = d->jidIcqTable.value( user.bare() ); conn->setOnlineStatus(icqStatus); d->jidResources.insert(user.bare(), user); return; } if ( UserManager::instance()->isRegistered(user.bare()) ) { QString uin = UserManager::instance()->getUin(user.bare()); QString password = UserManager::instance()->getPassword(user.bare()); ICQ::Session *conn = new ICQ::Session(this); conn->setUin(uin); conn->setPassword(password); conn->setServerHost(d->icqHost); conn->setServerPort(d->icqPort); conn->setOnlineStatus(ICQ::Session::Online); QObject::connect( conn, SIGNAL( statusChanged(int) ), SLOT( processIcqStatus(int) ) ); QObject::connect( conn, SIGNAL( userOnline(QString,int) ), SLOT( processContactOnline(QString,int) ) ); QObject::connect( conn, SIGNAL( userOffline(QString) ), SLOT( processContactOffline(QString) ) ); QObject::connect( conn, SIGNAL( authGranted(QString) ), SLOT( processAuthGranted(QString) ) ); QObject::connect( conn, SIGNAL( authDenied(QString) ), SLOT( processAuthDenied(QString) ) ); QObject::connect( conn, SIGNAL( authRequest(QString) ), SLOT( processAuthRequest(QString) ) ); QObject::connect( conn, SIGNAL( incomingMessage(QString,QString) ), SLOT( processIncomingMessage(QString,QString) ) ); QObject::connect( conn, SIGNAL( incomingMessage(QString,QString,QDateTime) ), SLOT( processIncomingMessage(QString,QString,QDateTime) ) ); QObject::connect( conn, SIGNAL( connected() ), SLOT( processIcqSignOn() ) ); QObject::connect( conn, SIGNAL( disconnected() ), SLOT( processIcqSignOff() ) ); QObject::connect( conn, SIGNAL( error(QString) ), SLOT( processIcqError(QString) ) ); QObject::connect( conn, SIGNAL( shortUserDetailsAvailable(QString) ), SLOT( processShortUserDetails(QString) ) ); if ( first_login ) { QObject::connect( conn, SIGNAL( rosterAvailable() ), SLOT( processIcqFirstLogin() ) ); } d->jidIcqTable.insert(user.bare(), conn); d->icqJidTable.insert(conn, user.bare()); d->jidResources.insert(user.bare(), user); QTextCodec *codec; if ( UserManager::instance()->hasOption(user.bare(), "encoding") ) { codec = QTextCodec::codecForName( UserManager::instance()->getOption(user.bare(), "encoding").toByteArray() ); if ( codec == 0 ) { codec = QTextCodec::codecForName("windows-1251"); } } else { codec = QTextCodec::codecForName("windows-1251"); } Q_ASSERT( codec != 0 ); conn->setCodecForMessages(codec); conn->connect(); } }