void OAuthLogin::urlChanged(QUrl url) { QString redirected_uri = url.toString(); QUrlQuery query(QUrl(redirected_uri).query()); if (redirected_uri.startsWith(m_redirectUri)) { if (query.hasQueryItem(QSL("code"))) { emit authGranted(query.queryItemValue(QSL("code"))); accept(); } else { emit authRejected(); reject(); } } }
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(); } }