1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-01 03:40:16 +02:00

Fixes due to changed Jreen API

This commit is contained in:
Ruslan Nigmatullin
2011-06-04 23:48:27 +06:00
parent 34d9a723dd
commit 2d3f712f95
7 changed files with 43 additions and 32 deletions

View File

@@ -6,6 +6,7 @@
#include <jreen/vcard.h> #include <jreen/vcard.h>
#include <jreen/vcardupdate.h> #include <jreen/vcardupdate.h>
#include <jreen/presence.h> #include <jreen/presence.h>
#include <jreen/iqreply.h>
#include <QDir> #include <QDir>
#include <QDebug> #include <QDebug>
@@ -20,8 +21,8 @@ AvatarManager::AvatarManager(Jreen::Client *client) :
m_cachedAvatars = m_cacheDir.entryList(); m_cachedAvatars = m_cacheDir.entryList();
connect(m_client, SIGNAL(serverFeaturesReceived(QSet<QString>)), SLOT(onNewConnection())); connect(m_client, SIGNAL(serverFeaturesReceived(QSet<QString>)), SLOT(onNewConnection()));
connect(m_client, SIGNAL(newPresence(Jreen::Presence)), SLOT(onNewPresence(Jreen::Presence))); connect(m_client, SIGNAL(presenceReceived(Jreen::Presence)), SLOT(onNewPresence(Jreen::Presence)));
connect(m_client, SIGNAL(newIQ(Jreen::IQ)), SLOT(onNewIq(Jreen::IQ))); connect(m_client, SIGNAL(iqReceived(Jreen::IQ)), SLOT(onNewIq(Jreen::IQ)));
connect(this, SIGNAL(newAvatar(QString)), SLOT(onNewAvatar(QString))); connect(this, SIGNAL(newAvatar(QString)), SLOT(onNewAvatar(QString)));
} }
@@ -42,12 +43,13 @@ void AvatarManager::fetchVCard(const QString &jid)
Jreen::IQ iq(Jreen::IQ::Get, jid ); Jreen::IQ iq(Jreen::IQ::Get, jid );
iq.addExtension(new Jreen::VCard()); iq.addExtension(new Jreen::VCard());
m_client->send( iq, this, SLOT( onNewIq( Jreen::IQ, int ) ), 0 ); Jreen::IQReply *reply = m_client->send(iq);
connect(reply, SIGNAL(received(Jreen::IQ)), SLOT(onNewIq(Jreen::IQ)));
} }
void AvatarManager::onNewPresence(const Jreen::Presence& presence) void AvatarManager::onNewPresence(const Jreen::Presence& presence)
{ {
Jreen::VCardUpdate::Ptr update = presence.findExtension<Jreen::VCardUpdate>(); Jreen::VCardUpdate::Ptr update = presence.payload<Jreen::VCardUpdate>();
if(update) if(update)
{ {
// qDebug() << "vcard: found update for" << presence.from().full(); // qDebug() << "vcard: found update for" << presence.from().full();
@@ -74,9 +76,9 @@ void AvatarManager::onNewPresence(const Jreen::Presence& presence)
} }
} }
void AvatarManager::onNewIq(const Jreen::IQ& iq, int context) void AvatarManager::onNewIq(const Jreen::IQ& iq)
{ {
Jreen::VCard *vcard = iq.findExtension<Jreen::VCard>().data(); Jreen::VCard::Ptr vcard = iq.payload<Jreen::VCard>();
if(vcard) if(vcard)
{ {
iq.accept(); iq.accept();
@@ -119,7 +121,7 @@ void AvatarManager::onNewIq(const Jreen::IQ& iq, int context)
// qDebug() << Q_FUNC_INFO << "got own vcard"; // qDebug() << Q_FUNC_INFO << "got own vcard";
Jreen::Presence presence = m_client->presence(); Jreen::Presence presence = m_client->presence();
Jreen::VCardUpdate::Ptr update = presence.findExtension<Jreen::VCardUpdate>(); Jreen::VCardUpdate::Ptr update = presence.payload<Jreen::VCardUpdate>();
if (update->photoHash() != avatarHash) if (update->photoHash() != avatarHash)
{ {
qDebug() << Q_FUNC_INFO << "Updating own presence..."; qDebug() << Q_FUNC_INFO << "Updating own presence...";

View File

@@ -23,7 +23,7 @@ signals:
private slots: private slots:
void onNewPresence( const Jreen::Presence& presence ); void onNewPresence( const Jreen::Presence& presence );
void onNewIq(const Jreen::IQ &iq, int context = 0 ); void onNewIq(const Jreen::IQ &iq);
void onNewConnection(); void onNewConnection();
void onNewAvatar( const QString &jid ); void onNewAvatar( const QString &jid );

View File

@@ -35,6 +35,7 @@
#include <jreen/directconnection.h> #include <jreen/directconnection.h>
#include <jreen/tcpconnection.h> #include <jreen/tcpconnection.h>
#include <jreen/softwareversion.h> #include <jreen/softwareversion.h>
#include <jreen/iqreply.h>
#include <qjson/parser.h> #include <qjson/parser.h>
#include <qjson/serializer.h> #include <qjson/serializer.h>
@@ -91,7 +92,7 @@ JabberPlugin::JabberPlugin( const QString& pluginId )
m_client = new Jreen::Client( jid, m_currentPassword ); m_client = new Jreen::Client( jid, m_currentPassword );
setupClientHelper(); setupClientHelper();
m_client->registerStanzaExtension(new TomahawkSipMessageFactory); m_client->registerPayload(new TomahawkSipMessageFactory);
m_currentResource = QString::fromAscii( "tomahawk%1" ).arg( QString::number( qrand() % 10000 ) ); m_currentResource = QString::fromAscii( "tomahawk%1" ).arg( QString::number( qrand() % 10000 ) );
m_client->setResource( m_currentResource ); m_client->setResource( m_currentResource );
@@ -117,7 +118,7 @@ JabberPlugin::JabberPlugin( const QString& pluginId )
m_client->disco()->addFeature( TOMAHAWK_FEATURE ); m_client->disco()->addFeature( TOMAHAWK_FEATURE );
// setup caps node, legacy peer detection - used before 0.1 // setup caps node, legacy peer detection - used before 0.1
Jreen::Capabilities::Ptr caps = m_client->presence().findExtension<Jreen::Capabilities>(); Jreen::Capabilities::Ptr caps = m_client->presence().payload<Jreen::Capabilities>();
caps->setNode( TOMAHAWK_CAP_NODE_NAME ); caps->setNode( TOMAHAWK_CAP_NODE_NAME );
//FIXME: caps->setVersion( TOMAHAWK_VERSION ); //FIXME: caps->setVersion( TOMAHAWK_VERSION );
@@ -129,9 +130,9 @@ JabberPlugin::JabberPlugin( const QString& pluginId )
// setup slots // setup slots
connect(m_client, SIGNAL(serverFeaturesReceived(QSet<QString>)), SLOT(onConnect())); 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(disconnected(Jreen::Client::DisconnectReason)), SLOT(onDisconnect(Jreen::Client::DisconnectReason)));
connect(m_client, SIGNAL(newMessage(Jreen::Message)), SLOT(onNewMessage(Jreen::Message))); connect(m_client, SIGNAL(messageReceived(Jreen::Message)), SLOT(onNewMessage(Jreen::Message)));
connect(m_client, SIGNAL(newIQ(Jreen::IQ)), SLOT(onNewIq(Jreen::IQ))); connect(m_client, SIGNAL(iqReceived(Jreen::IQ)), SLOT(onNewIq(Jreen::IQ)));
connect(m_roster, SIGNAL(presenceReceived(Jreen::RosterItem::Ptr,Jreen::Presence)), connect(m_roster, SIGNAL(presenceReceived(Jreen::RosterItem::Ptr,Jreen::Presence)),
SLOT(onPresenceReceived(Jreen::RosterItem::Ptr,Jreen::Presence))); SLOT(onPresenceReceived(Jreen::RosterItem::Ptr,Jreen::Presence)));
@@ -445,8 +446,9 @@ JabberPlugin::sendMsg(const QString& to, const QString& msg)
qDebug() << "Send sip messsage to " << to; qDebug() << "Send sip messsage to " << to;
Jreen::IQ iq( Jreen::IQ::Set, to ); Jreen::IQ iq( Jreen::IQ::Set, to );
iq.addExtension( sipMessage ); iq.addExtension( sipMessage );
Jreen::IQReply *reply = m_client->send(iq);
m_client->send( iq, this, SLOT( onNewIq( Jreen::IQ, int ) ), SipMessageSent ); reply->setData(SipMessageSent);
connect(reply, SIGNAL(received(Jreen::IQ)), SLOT(onNewIq(Jreen::IQ)));
} }
void void
@@ -648,7 +650,7 @@ void JabberPlugin::onPresenceReceived( const Jreen::RosterItem::Ptr &item, const
} }
// ignore anyone not Running tomahawk: // ignore anyone not Running tomahawk:
Jreen::Capabilities::Ptr caps = presence.findExtension<Jreen::Capabilities>(); Jreen::Capabilities::Ptr caps = presence.payload<Jreen::Capabilities>();
/* Disabled this, because it's somewhat ugly and we should rely on nothing but the features /* Disabled this, because it's somewhat ugly and we should rely on nothing but the features
if ( caps && ( caps->node() == TOMAHAWK_CAP_NODE_NAME ) ) if ( caps && ( caps->node() == TOMAHAWK_CAP_NODE_NAME ) )
{ {
@@ -667,7 +669,9 @@ void JabberPlugin::onPresenceReceived( const Jreen::RosterItem::Ptr &item, const
Jreen::IQ featuresIq( Jreen::IQ::Get, jid ); Jreen::IQ featuresIq( Jreen::IQ::Get, jid );
featuresIq.addExtension( new Jreen::Disco::Info( node ) ); featuresIq.addExtension( new Jreen::Disco::Info( node ) );
m_client->send( featuresIq, this, SLOT( onNewIq( Jreen::IQ, int ) ), RequestDisco ); Jreen::IQReply *reply = m_client->send(featuresIq);
reply->setData(RequestDisco);
connect(reply, SIGNAL(received(Jreen::IQ)), SLOT(onNewIq(Jreen::IQ)));
} }
else if( !caps ) else if( !caps )
{ {
@@ -761,15 +765,18 @@ JabberPlugin::onSubscriptionRequestConfirmed( int result )
m_roster->allowSubscription( jid, allowSubscription == QMessageBox::Yes ); m_roster->allowSubscription( jid, allowSubscription == QMessageBox::Yes );
} }
void JabberPlugin::onNewIq(const Jreen::IQ& iq, int context) void JabberPlugin::onNewIq(const Jreen::IQ& iq)
{ {
if ( m_state != Connected ) if ( m_state != Connected )
return; return;
Jreen::IQReply *reply = qobject_cast<Jreen::IQReply*>(sender());
int context = reply ? reply->data().toInt() : NoContext;
if( context == RequestDisco ) if( context == RequestDisco )
{ {
// qDebug() << Q_FUNC_INFO << "Received disco IQ..."; // qDebug() << Q_FUNC_INFO << "Received disco IQ...";
Jreen::Disco::Info *discoInfo = iq.findExtension<Jreen::Disco::Info>().data(); Jreen::Disco::Info *discoInfo = iq.payload<Jreen::Disco::Info>().data();
if(!discoInfo) if(!discoInfo)
return; return;
iq.accept(); iq.accept();
@@ -803,7 +810,7 @@ void JabberPlugin::onNewIq(const Jreen::IQ& iq, int context)
} }
else if(context == RequestVersion) else if(context == RequestVersion)
{ {
Jreen::SoftwareVersion* softwareVersion = iq.findExtension<Jreen::SoftwareVersion>().data(); Jreen::SoftwareVersion::Ptr softwareVersion = iq.payload<Jreen::SoftwareVersion>();
if( softwareVersion ) if( softwareVersion )
{ {
QString versionString = QString("%1 %2 %3").arg( softwareVersion->name(), softwareVersion->os(), softwareVersion->version() ); QString versionString = QString("%1 %2 %3").arg( softwareVersion->name(), softwareVersion->os(), softwareVersion->version() );
@@ -825,7 +832,7 @@ void JabberPlugin::onNewIq(const Jreen::IQ& iq, int context)
}*/ }*/
else else
{ {
TomahawkSipMessage *sipMessage = iq.findExtension<TomahawkSipMessage>().data(); TomahawkSipMessage::Ptr sipMessage = iq.payload<TomahawkSipMessage>();
if(sipMessage) if(sipMessage)
{ {
iq.accept(); iq.accept();
@@ -910,7 +917,9 @@ void JabberPlugin::handlePeerStatus(const Jreen::JID& jid, Jreen::Presence::Type
// request software version // request software version
Jreen::IQ versionIq( Jreen::IQ::Get, jid ); Jreen::IQ versionIq( Jreen::IQ::Get, jid );
versionIq.addExtension( new Jreen::SoftwareVersion() ); versionIq.addExtension( new Jreen::SoftwareVersion() );
m_client->send( versionIq, this, SLOT( onNewIq( Jreen::IQ, int ) ), RequestVersion ); Jreen::IQReply *reply = m_client->send(versionIq);
reply->setData(RequestVersion);
connect(reply, SIGNAL(received(Jreen::IQ)), SLOT(onNewIq(Jreen::IQ)));
return; return;
} }

View File

@@ -113,7 +113,7 @@ private slots:
{ {
qDebug() << e; qDebug() << e;
} }
void onNewIq( const Jreen::IQ &iq, int context = NoContext ); void onNewIq( const Jreen::IQ &iq );
void onNewAvatar( const QString &jid ); void onNewAvatar( const QString &jid );
private: private:

View File

@@ -8,9 +8,9 @@
#include "../sipdllmacro.h" #include "../sipdllmacro.h"
class TomahawkSipMessagePrivate; class TomahawkSipMessagePrivate;
class SIPDLLEXPORT TomahawkSipMessage : public Jreen::StanzaExtension class SIPDLLEXPORT TomahawkSipMessage : public Jreen::Payload
{ {
J_EXTENSION(TomahawkSipMessage, "") J_PAYLOAD(TomahawkSipMessage)
Q_DECLARE_PRIVATE(TomahawkSipMessage) Q_DECLARE_PRIVATE(TomahawkSipMessage)
public: public:
// sets visible to true // sets visible to true

View File

@@ -86,7 +86,7 @@ void TomahawkSipMessageFactory::handleCharacterData(const QStringRef &text)
Q_UNUSED(text); Q_UNUSED(text);
} }
void TomahawkSipMessageFactory::serialize(StanzaExtension *extension, QXmlStreamWriter *writer) void TomahawkSipMessageFactory::serialize(Payload *extension, QXmlStreamWriter *writer)
{ {
TomahawkSipMessage *sipMessage = se_cast<TomahawkSipMessage*>(extension); TomahawkSipMessage *sipMessage = se_cast<TomahawkSipMessage*>(extension);
@@ -118,10 +118,10 @@ void TomahawkSipMessageFactory::serialize(StanzaExtension *extension, QXmlStream
writer->writeEndElement(); writer->writeEndElement();
} }
StanzaExtension::Ptr TomahawkSipMessageFactory::createExtension() Payload::Ptr TomahawkSipMessageFactory::createPayload()
{ {
if(m_visible) if(m_visible)
return StanzaExtension::Ptr(new TomahawkSipMessage(m_ip, m_port, m_uniqname, m_key)); return Payload::Ptr(new TomahawkSipMessage(m_ip, m_port, m_uniqname, m_key));
else else
return StanzaExtension::Ptr(new TomahawkSipMessage()); return Payload::Ptr(new TomahawkSipMessage());
} }

View File

@@ -23,7 +23,7 @@
#include "../sipdllmacro.h" #include "../sipdllmacro.h"
class SIPDLLEXPORT TomahawkSipMessageFactory : public Jreen::StanzaExtensionFactory<TomahawkSipMessage> class SIPDLLEXPORT TomahawkSipMessageFactory : public Jreen::PayloadFactory<TomahawkSipMessage>
{ {
public: public:
TomahawkSipMessageFactory(); TomahawkSipMessageFactory();
@@ -33,8 +33,8 @@ public:
void handleStartElement(const QStringRef &name, const QStringRef &uri, const QXmlStreamAttributes &attributes); void handleStartElement(const QStringRef &name, const QStringRef &uri, const QXmlStreamAttributes &attributes);
void handleEndElement(const QStringRef &name, const QStringRef &uri); void handleEndElement(const QStringRef &name, const QStringRef &uri);
void handleCharacterData(const QStringRef &text); void handleCharacterData(const QStringRef &text);
void serialize(Jreen::StanzaExtension *extension, QXmlStreamWriter *writer); void serialize(Jreen::Payload *extension, QXmlStreamWriter *writer);
Jreen::StanzaExtension::Ptr createExtension(); Jreen::Payload::Ptr createPayload();
private: private:
enum State { AtNowhere, AtTransport, AtCandidate } m_state; enum State { AtNowhere, AtTransport, AtCandidate } m_state;
int m_depth; int m_depth;