diff --git a/src/accounts/twitter/sip/TwitterSip.h b/src/accounts/twitter/sip/TwitterSip.h index 57b4833f0..e47229257 100644 --- a/src/accounts/twitter/sip/TwitterSip.h +++ b/src/accounts/twitter/sip/TwitterSip.h @@ -59,10 +59,10 @@ public slots: void disconnectPlugin(); void configurationChanged(); - void sendMsg( const QString& to, const QString& msg ) + void sendMsg( const QString& peerId, const SipInfo& info ) { - Q_UNUSED( to ); - Q_UNUSED( msg ); + Q_UNUSED( peerId ); + Q_UNUSED( info ); } void broadcastMsg( const QString &msg ) @@ -70,9 +70,9 @@ public slots: Q_UNUSED( msg ); } - void addContact( const QString &jid, const QString& msg = QString() ) + void addContact( const QString &peerId, const QString& msg = QString() ) { - Q_UNUSED( jid ); + Q_UNUSED( peerId ); Q_UNUSED( msg ); } diff --git a/src/accounts/xmpp/sip/XmppSip.cpp b/src/accounts/xmpp/sip/XmppSip.cpp index dfad484d3..b0614549e 100644 --- a/src/accounts/xmpp/sip/XmppSip.cpp +++ b/src/accounts/xmpp/sip/XmppSip.cpp @@ -110,7 +110,7 @@ XmppSipPlugin::XmppSipPlugin( Account* account ) Jreen::JID jid = Jreen::JID( readUsername() ); // general client setup - m_client = new Jreen::Client( jid, m_currentPassword ); + m_client = new Jreen::Client( jid, m_currentPassword ); setupClientHelper(); m_client->registerPayload( new TomahawkXmppMessageFactory ); @@ -425,32 +425,17 @@ XmppSipPlugin::errorMessage( Jreen::Client::DisconnectReason reason ) void -XmppSipPlugin::sendMsg( const QString& to, const QString& msg ) +XmppSipPlugin::sendMsg( const QString& to, const SipInfo& info ) { - qDebug() << Q_FUNC_INFO << to << msg; + qDebug() << Q_FUNC_INFO << to << info; if ( !m_client ) return; - /******************************************************* - * Obsolete this by a SipMessage class - */ - QJson::Parser parser; - bool ok; - QVariant v = parser.parse( msg.toAscii(), &ok ); - if ( !ok || v.type() != QVariant::Map ) - { - qDebug() << "Invalid JSON in Xmpp msg"; - return; - } - - QVariantMap m = v.toMap(); - /*******************************************************/ - TomahawkXmppMessage *sipMessage; - if ( m["visible"].toBool() ) + if ( info.isVisible() ) { - sipMessage = new TomahawkXmppMessage( m["ip"].toString(), m["port"].toInt(), m["uniqname"].toString(), m["key"].toString() ); + sipMessage = new TomahawkXmppMessage( info.host().hostName(), info.port(), info.uniqname(), info.key() ); } else sipMessage = new TomahawkXmppMessage(); @@ -467,13 +452,6 @@ XmppSipPlugin::sendMsg( const QString& to, const QString& msg ) void XmppSipPlugin::broadcastMsg( const QString& msg ) { - if ( !m_client ) - return; - - foreach ( const Jreen::JID& jid, m_peers.keys() ) - { - sendMsg( jid.full(), msg ); - } } diff --git a/src/accounts/xmpp/sip/XmppSip.h b/src/accounts/xmpp/sip/XmppSip.h index de9f09282..5e2e506ea 100644 --- a/src/accounts/xmpp/sip/XmppSip.h +++ b/src/accounts/xmpp/sip/XmppSip.h @@ -86,8 +86,8 @@ public slots: virtual void disconnectPlugin(); virtual void checkSettings(); virtual void configurationChanged(); - virtual void sendMsg( const QString& to, const QString& msg ); - virtual void addContact( const QString& jid, const QString& msg = QString() ); + virtual void sendMsg( const QString& peerId, const SipInfo& info ); + virtual void addContact( const QString& peerId, const QString& msg = QString() ); void broadcastMsg( const QString& msg ); void showAddFriendDialog(); diff --git a/src/accounts/zeroconf/Zeroconf.h b/src/accounts/zeroconf/Zeroconf.h index 8f5bdbc81..41a8c985f 100644 --- a/src/accounts/zeroconf/Zeroconf.h +++ b/src/accounts/zeroconf/Zeroconf.h @@ -64,7 +64,7 @@ public slots: void advertise(); - void sendMsg( const QString& , const QString& ) {} + void sendMsg( const QString& peerId , const SipInfo& ) {} void broadcastMsg( const QString & ) {} void addContact( const QString &, const QString& ) {} diff --git a/src/libtomahawk/sip/SipHandler.cpp b/src/libtomahawk/sip/SipHandler.cpp index 22dc967df..484813590 100644 --- a/src/libtomahawk/sip/SipHandler.cpp +++ b/src/libtomahawk/sip/SipHandler.cpp @@ -118,50 +118,47 @@ SipHandler::hookUpPlugin( SipPlugin* sip ) void -SipHandler::onPeerOnline( const QString& jid ) +SipHandler::onPeerOnline( const QString& peerId ) { // qDebug() << Q_FUNC_INFO; - tDebug() << "SIP online:" << jid; + tDebug() << "SIP online:" << peerId; SipPlugin* sip = qobject_cast(sender()); - QVariantMap m; + SipInfo info; if( Servent::instance()->visibleExternally() ) { QString key = uuid(); ControlConnection* conn = new ControlConnection( Servent::instance(), QString() ); const QString& nodeid = Database::instance()->impl()->dbid(); - conn->setName( jid.left( jid.indexOf( "/" ) ) ); + conn->setName( peerId.left( peerId.indexOf( "/" ) ) ); conn->setId( nodeid ); Servent::instance()->registerOffer( key, conn ); - m["visible"] = true; - m["ip"] = Servent::instance()->externalAddress(); - m["port"] = Servent::instance()->externalPort(); - m["key"] = key; - m["uniqname"] = nodeid; + info.setVisible( true ); + info.setHost( QHostInfo::fromName( Servent::instance()->externalAddress() ) ); + info.setPort( Servent::instance()->externalPort() ); + info.setKey( key ); + info.setUniqname( nodeid ); - qDebug() << "Asking them to connect to us:" << m; + tDebug() << "Asking them to connect to us:" << info; } else { - m["visible"] = false; - qDebug() << "We are not visible externally:" << m; + info.setVisible( false ); + tDebug() << "We are not visible externally:" << info; } - QJson::Serializer ser; - QByteArray ba = ser.serialize( m ); - - sip->sendMsg( jid, QString::fromAscii( ba ) ); + sip->sendMsg( peerId, info ); } void -SipHandler::onPeerOffline( const QString& jid ) +SipHandler::onPeerOffline( const QString& peerId ) { // qDebug() << Q_FUNC_INFO; - qDebug() << "SIP offline:" << jid; + tDebug() << "SIP offline:" << peerId; } @@ -174,7 +171,7 @@ SipHandler::onSipInfo( const QString& peerId, const SipInfo& info ) //FIXME: We should probably be using barePeerId in the connectToPeer call below. //But, verify this doesn't cause any problems (there is still a uniquename after all) - + /* If only one party is externally visible, connection is obvious If both are, peer with lowest IP address initiates the connection. diff --git a/src/libtomahawk/sip/SipPlugin.h b/src/libtomahawk/sip/SipPlugin.h index ad2389443..16398dd83 100644 --- a/src/libtomahawk/sip/SipPlugin.h +++ b/src/libtomahawk/sip/SipPlugin.h @@ -67,7 +67,7 @@ public slots: virtual void configurationChanged() = 0; virtual void addContact( const QString &jid, const QString& msg = QString() ) = 0; - virtual void sendMsg( const QString& to, const QString& msg ) = 0; + virtual void sendMsg( const QString& to, const SipInfo& info ) = 0; signals: void peerOnline( const QString& );