diff --git a/src/libtomahawk/sip/SipHandler.cpp b/src/libtomahawk/sip/SipHandler.cpp index 0170bdf64..a3b7b0375 100644 --- a/src/libtomahawk/sip/SipHandler.cpp +++ b/src/libtomahawk/sip/SipHandler.cpp @@ -179,6 +179,7 @@ SipHandler::loadPlugin( const QString& path ) QObject::connect( sip, SIGNAL( error( int, QString ) ), SLOT( onError( int, QString ) ) ); QObject::connect( sip, SIGNAL( avatarReceived( QString, QPixmap ) ), SLOT( onAvatarReceived( QString, QPixmap ) ) ); + QObject::connect( sip, SIGNAL( avatarReceived( QPixmap ) ), SLOT( onAvatarReceived( QPixmap ) ) ); m_plugins << sip; } } @@ -411,3 +412,9 @@ void SipHandler::onAvatarReceived( const QString& from, const QPixmap& avatar ) qDebug() << Q_FUNC_INFO << from << "no control connection setup yet"; } } + +void SipHandler::onAvatarReceived( const QPixmap& avatar ) +{ + qDebug() << Q_FUNC_INFO << "Set own avatar on MyCollection"; + SourceList::instance()->getLocal()->setAvatar( avatar ); +} diff --git a/src/libtomahawk/sip/SipHandler.h b/src/libtomahawk/sip/SipHandler.h index cbef72f5d..1c1c6f5bc 100644 --- a/src/libtomahawk/sip/SipHandler.h +++ b/src/libtomahawk/sip/SipHandler.h @@ -63,7 +63,12 @@ private slots: void onSettingsChanged(); - void onAvatarReceived( const QString& from, const QPixmap& avatar = QPixmap()); + // set data for local source + void onAvatarReceived( const QPixmap& avatar ); + + // set data for other sources + void onAvatarReceived( const QString& from, const QPixmap& avatar ); + private: static SipHandler *s_instance; diff --git a/src/libtomahawk/sip/SipPlugin.h b/src/libtomahawk/sip/SipPlugin.h index 28e19ffb2..4bd55fc31 100644 --- a/src/libtomahawk/sip/SipPlugin.h +++ b/src/libtomahawk/sip/SipPlugin.h @@ -58,8 +58,13 @@ signals: void peerOffline( const QString& ); void msgReceived( const QString& from, const QString& msg ); + // new data for own source + void avatarReceived ( const QPixmap& avatar ); + + // new data for other sources; void avatarReceived ( const QString& from, const QPixmap& avatar); + void addMenu( QMenu* menu ); void removeMenu( QMenu* menu ); }; diff --git a/src/sip/jreen/jabber.cpp b/src/sip/jreen/jabber.cpp index e6982857b..7e0b1235e 100644 --- a/src/sip/jreen/jabber.cpp +++ b/src/sip/jreen/jabber.cpp @@ -111,6 +111,7 @@ JabberPlugin::connectPlugin( bool startup ) QObject::connect( p, SIGNAL( authError( int, QString ) ), SLOT( onAuthError( int, QString ) ) ); QObject::connect( p, SIGNAL( avatarReceived( QString, QPixmap ) ), SIGNAL( avatarReceived( QString, QPixmap ) ) ); + QObject::connect( p, SIGNAL( avatarReceived( QPixmap ) ), SIGNAL( avatarReceived( QPixmap) ) ); return true; } diff --git a/src/sip/jreen/jabber_p.cpp b/src/sip/jreen/jabber_p.cpp index ea5add54a..100ae908c 100644 --- a/src/sip/jreen/jabber_p.cpp +++ b/src/sip/jreen/jabber_p.cpp @@ -553,5 +553,10 @@ void Jabber_p::onNewAvatar(const QString& jid) } } - emit avatarReceived ( jid, m_avatarManager->avatar( jid ) ); + if( jid == m_client->jid().bare() ) + // own avatar + emit avatarReceived ( m_avatarManager->avatar( jid ) ); + else + // someone else's avatar + emit avatarReceived ( jid, m_avatarManager->avatar( jid ) ); } diff --git a/src/sip/jreen/jabber_p.h b/src/sip/jreen/jabber_p.h index 2d138b788..243e255a9 100644 --- a/src/sip/jreen/jabber_p.h +++ b/src/sip/jreen/jabber_p.h @@ -65,6 +65,7 @@ signals: void connected(); void disconnected(); void jidChanged( const QString& ); + void avatarReceived( const QPixmap& avatar ); void avatarReceived( const QString&, const QPixmap& avatar ); void authError( int, const QString& );