XmppSipPlugin::XmppSipPlugin( Account* account ) : SipPlugin( account ) , m_state( Account::Disconnected ) #ifndef ENABLE_HEADLESS , m_menu( 0 ) , m_xmlConsole( 0 ) , m_pubSubManager( 0 ) #endif { Jreen::Logger::addHandler( JreenMessageHandler ); m_currentUsername = readUsername(); m_currentServer = readServer(); m_currentPassword = readPassword(); m_currentPort = readPort(); // setup JID object Jreen::JID jid = Jreen::JID( readUsername() ); // general client setup m_client = new Jreen::Client( jid, m_currentPassword ); setupClientHelper(); m_client->registerPayload( new TomahawkXmppMessageFactory ); m_currentResource = QString( "tomahawk%1" ).arg( QString::number( qrand() % 10000 ) ); m_client->setResource( m_currentResource ); #ifndef ENABLE_HEADLESS // instantiate XmlConsole if ( readXmlConsoleEnabled() ) { m_xmlConsole = new XmlConsole( m_client ); m_xmlConsole->show(); } #endif // add VCardUpdate extension to own presence m_client->presence().addExtension( new Jreen::VCardUpdate() ); // initaliaze the roster m_roster = new Jreen::SimpleRoster( m_client ); #ifndef ENABLE_HEADLESS // initialize the AvatarManager m_avatarManager = new AvatarManager( m_client ); #endif // setup disco m_client->disco()->setSoftwareVersion( "Tomahawk Player", TOMAHAWK_VERSION, TOMAHAWK_SYSTEM ); m_client->disco()->addIdentity( Jreen::Disco::Identity( "client", "type", "tomahawk", "en" ) ); m_client->disco()->addFeature( TOMAHAWK_FEATURE ); // setup caps node Jreen::Capabilities::Ptr caps = m_client->presence().payload<Jreen::Capabilities>(); caps->setNode( TOMAHAWK_CAP_NODE_NAME ); // print connection parameters qDebug() << "Our JID set to:" << m_client->jid().full(); qDebug() << "Our Server set to:" << m_client->server(); qDebug() << "Our Port set to" << m_client->port(); // setup slots connect( m_client, SIGNAL( serverFeaturesReceived( QSet<QString> ) ), SLOT( onConnect() ) ); connect( m_client, SIGNAL( disconnected( Jreen::Client::DisconnectReason ) ), SLOT( onDisconnect( Jreen::Client::DisconnectReason ) ) ); connect( m_client, SIGNAL( messageReceived( Jreen::Message ) ), SLOT( onNewMessage( Jreen::Message ) ) ); connect( m_client, SIGNAL( iqReceived( Jreen::IQ ) ), SLOT( onNewIq( Jreen::IQ ) ) ); connect( m_roster, SIGNAL( presenceReceived( Jreen::RosterItem::Ptr, Jreen::Presence ) ), SLOT( onPresenceReceived( Jreen::RosterItem::Ptr, Jreen::Presence ) ) ); connect( m_roster, SIGNAL( subscriptionReceived( Jreen::RosterItem::Ptr, Jreen::Presence ) ), SLOT( onSubscriptionReceived( Jreen::RosterItem::Ptr, Jreen::Presence ) ) ); #ifndef ENABLE_HEADLESS connect( m_avatarManager, SIGNAL( newAvatar( QString ) ), SLOT( onNewAvatar( QString ) ) ); #endif m_pubSubManager = new Jreen::PubSub::Manager( m_client ); m_pubSubManager->addEntityType< Jreen::Tune >(); // Clear status Jreen::Tune::Ptr tune( new Jreen::Tune() ); m_pubSubManager->publishItems( QList<Jreen::Payload::Ptr>() << tune, Jreen::JID() ); }
JAccount::JAccount(const QString &id) : Account(id, JProtocol::instance()), d_ptr(new JAccountPrivate(this)) { Q_D(JAccount); d->client.reset(new Client(id)); connect(d->client.data(), SIGNAL(disconnected(Jreen::Client::DisconnectReason)), this, SLOT(_q_disconnected(Jreen::Client::DisconnectReason))); connect(d->client.data(), SIGNAL(serverFeaturesReceived(QSet<QString>)), this ,SLOT(_q_init_extensions(QSet<QString>))); Account::setStatus(Status::instance(Status::Offline, "jabber")); d->loadedModules = 0; d->privacyManager = new PrivacyManager(d->client.data()); d->pubSubManager = new Jreen::PubSub::Manager(d->client.data()); d->privateXml = new Jreen::PrivateXml(d->client.data()); d->roster = new JRoster(this); Jreen::Capabilities::Ptr caps = d->client->presence().payload<Jreen::Capabilities>(); caps->setNode(QLatin1String("http://qutim.org/")); d->conferenceManager = new JMUCManager(this, this); d->messageSessionManager = new JMessageSessionManager(this); connect(d->messageSessionManager, SIGNAL(messageEcnrypted(quint64)), SIGNAL(messageEcnrypted(quint64))); d->softwareDetection = new JSoftwareDetection(this); d->client->presence().addExtension(new VCardUpdate()); Jreen::Disco *disco = d->client->disco(); disco->setSoftwareVersion(QLatin1String("qutIM"), versionString(), SystemInfo::getFullName()); disco->addIdentity(Jreen::Disco::Identity(QLatin1String("client"), QLatin1String("type"), QLatin1String("qutIM"), QLatin1String("en"))); QString qutim = tr("qutIM", "Local qutIM's name"); QString lang = tr("en", "Default language"); if(qutim != QLatin1String("qutIM") && lang != QLatin1String("en")) disco->addIdentity(Jreen::Disco::Identity(QLatin1String("client"), QLatin1String("type"),qutim,lang)); connect(d->roster, SIGNAL(loaded()), &d->signalMapper, SLOT(map())); connect(d->privacyManager, SIGNAL(listsReceived()), &d->signalMapper, SLOT(map())); d->signalMapper.setMapping(d->roster, 1); d->signalMapper.setMapping(d->privacyManager, 2); connect(d->client.data(), SIGNAL(connected()), d->privacyManager, SLOT(request())); connect(&d->signalMapper, SIGNAL(mapped(int)), this, SLOT(_q_on_module_loaded(int))); // connect(d->roster, SIGNAL(loaded()), d, SLOT(onConnected())); // connect(d->client.data(),SIGNAL(connected()), d, SLOT(onConnected())); d->roster->loadFromStorage(); connect(d->conferenceManager.data(), SIGNAL(conferenceCreated(qutim_sdk_0_3::Conference*)), this, SIGNAL(conferenceCreated(qutim_sdk_0_3::Conference*))); // d->params.addItem<Jreen::Client>(d->client); // d->params.addItem<Jreen::PubSub::Manager>(d->pubSubManager); // d->params.addItem<Adhoc>(p->adhoc); // d->params.addItem<VCardManager>(p->vCardManager->manager()); // d->params.addItem<SIManager>(p->siManager); // d->softwareDetection = new JSoftwareDetection(p->account, p->params); foreach (const ObjectGenerator *gen, ObjectGenerator::module<JabberExtension>()) { if (JabberExtension *ext = gen->generate<JabberExtension>()) { d->extensions.append(ext); ext->init(this); } } JPGPSupport::instance()->addAccount(this); }
JAccount::JAccount(const QString &id) : Account(id, JProtocol::instance()), d_ptr(new JAccountPrivate(this)) { Q_D(JAccount); d->client.reset(new Client(id)); connect(d->client.data(), SIGNAL(disconnected(Jreen::Client::DisconnectReason)), this, SLOT(_q_disconnected(Jreen::Client::DisconnectReason))); connect(d->client.data(), SIGNAL(serverFeaturesReceived(QSet<QString>)), this ,SLOT(_q_init_extensions(QSet<QString>))); d->loadedModules = 0; d->privacyManager = new PrivacyManager(d->client.data()); d->pubSubManager = new Jreen::PubSub::Manager(d->client.data()); d->privateXml = new Jreen::PrivateXml(d->client.data()); d->roster = new JRoster(this); Jreen::Capabilities::Ptr caps = d->client->presence().payload<Jreen::Capabilities>(); caps->setNode(QLatin1String("http://qutim.org/")); d->conferenceManager = new JMUCManager(this, this); d->messageSessionManager = new JMessageSessionManager(this); connect(d->messageSessionManager, SIGNAL(messageEcnrypted(quint64)), SIGNAL(messageEcnrypted(quint64))); d->softwareDetection = new JSoftwareDetection(this); d->client->presence().addExtension(new VCardUpdate()); Jreen::Disco *disco = d->client->disco(); disco->setSoftwareVersion(QLatin1String("qutIM"), versionString(), SystemInfo::getFullName()); disco->addIdentity(Jreen::Disco::Identity(QLatin1String("client"), QLatin1String("type"), QLatin1String("qutIM"), QLatin1String("en"))); QString qutim = tr("qutIM", "Local qutIM's name"); QString lang = tr("en", "Default language"); if(qutim != QLatin1String("qutIM") && lang != QLatin1String("en")) disco->addIdentity(Jreen::Disco::Identity(QLatin1String("client"), QLatin1String("type"),qutim,lang)); connect(d->roster, SIGNAL(loaded()), &d->signalMapper, SLOT(map())); connect(d->privacyManager, SIGNAL(listsReceived()), &d->signalMapper, SLOT(map())); d->signalMapper.setMapping(d->roster, 1); d->signalMapper.setMapping(d->privacyManager, 2); connect(d->client.data(), SIGNAL(connected()), d->privacyManager, SLOT(request())); connect(&d->signalMapper, SIGNAL(mapped(int)), this, SLOT(_q_on_module_loaded(int))); d->roster->loadFromStorage(); connect(d->conferenceManager.data(), SIGNAL(conferenceCreated(qutim_sdk_0_3::Conference*)), this, SIGNAL(conferenceCreated(qutim_sdk_0_3::Conference*))); foreach (const ObjectGenerator *gen, ObjectGenerator::module<JabberExtension>()) { if (JabberExtension *ext = gen->generate<JabberExtension>()) { d->extensions.append(ext); ext->init(this); } } { // Temporary hook // TODO: Remove this hook or make migration more automatic Config config = this->config(QStringLiteral("general")); const QString passwd = QStringLiteral("passwd"); if (config.hasChildKey(passwd)) { d->keyChain->write(this, config.value(passwd, QString(), Config::Crypted)); config.remove(passwd); } } // JPGPSupport::instance()->addAccount(this); }