diff --git a/src/accounts/xmpp/sip/XmppSip.cpp b/src/accounts/xmpp/sip/XmppSip.cpp index 512217165..97cb46e54 100644 --- a/src/accounts/xmpp/sip/XmppSip.cpp +++ b/src/accounts/xmpp/sip/XmppSip.cpp @@ -973,6 +973,7 @@ XmppSipPlugin::handlePeerStatus( const Jreen::JID& jid, Jreen::Presence::Type pr m_peers[ jid ] = presenceType; Tomahawk::peerinfo_ptr peerInfo = PeerInfo::get( this, fulljid, PeerInfo::AutoCreate ); + peerInfo->setContactId( jid.bare() ); peerInfo->setStatus( PeerInfo::Online ); #ifndef ENABLE_HEADLESS diff --git a/src/libtomahawk/network/Servent.cpp b/src/libtomahawk/network/Servent.cpp index 22c674635..443378190 100644 --- a/src/libtomahawk/network/Servent.cpp +++ b/src/libtomahawk/network/Servent.cpp @@ -334,7 +334,7 @@ Servent::registerPeer( const Tomahawk::peerinfo_ptr& peerInfo ) ControlConnection* conn = new ControlConnection( this ); const QString& nodeid = Database::instance()->impl()->dbid(); - conn->setName( peerId.left( peerId.indexOf( "/" ) ) ); + conn->setName( peerInfo->contactId() ); conn->setId( nodeid ); conn->addPeerInfo( peerInfo ); @@ -759,7 +759,7 @@ Servent::connectToPeer( const peerinfo_ptr& peerInfo ) conn->setFirstMessage( m ); if ( peerInfo->id().length() ) - conn->setName( peerInfo->id() ); + conn->setName( peerInfo->contactId() ); if ( sipInfo.nodeId().length() ) conn->setId( sipInfo.nodeId() ); diff --git a/src/libtomahawk/sip/PeerInfo.cpp b/src/libtomahawk/sip/PeerInfo.cpp index 8e25795bc..005bcbe20 100644 --- a/src/libtomahawk/sip/PeerInfo.cpp +++ b/src/libtomahawk/sip/PeerInfo.cpp @@ -201,6 +201,20 @@ PeerInfo::debugName() const } +void +PeerInfo::setContactId ( const QString& contactId ) +{ + m_contactId = contactId; +} + + +const QString +PeerInfo::contactId() const +{ + return m_contactId; +} + + void PeerInfo::setStatus( PeerInfo::Status status ) diff --git a/src/libtomahawk/sip/PeerInfo.h b/src/libtomahawk/sip/PeerInfo.h index 4fe9b1794..400e97ed5 100644 --- a/src/libtomahawk/sip/PeerInfo.h +++ b/src/libtomahawk/sip/PeerInfo.h @@ -86,7 +86,13 @@ public: void setType( Tomahawk::PeerInfo::Type type ); PeerInfo::Type type() const; - // actual data + /* actual data */ + + // while peerId references a certain peer, contact id references the contact + // e.g. a peerId might be a full jid with resource while contact id is the bare jid + void setContactId( const QString& contactId ); + const QString contactId() const; + void setStatus( Status status ); Status status() const; @@ -122,6 +128,7 @@ private: PeerInfo::Type m_type; QString m_id; + QString m_contactId; Status m_status; SipInfo m_sipInfo; QString m_friendlyName;