From 47fd7b82859ce812c8744ba173d0e721ceb07bea Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Wed, 20 Apr 2011 20:30:04 +0200 Subject: [PATCH] Add avatar support to controlconnection, source and sourcetreeview. --- src/libtomahawk/network/controlconnection.cpp | 5 +++++ src/libtomahawk/network/controlconnection.h | 2 ++ src/libtomahawk/sip/SipPlugin.h | 4 +++- src/libtomahawk/source.cpp | 10 ++++++++++ src/libtomahawk/source.h | 4 ++++ src/sourcetree/sourcetreeview.cpp | 7 +++++-- 6 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/libtomahawk/network/controlconnection.cpp b/src/libtomahawk/network/controlconnection.cpp index b1c7a0b50..1982ee8d7 100644 --- a/src/libtomahawk/network/controlconnection.cpp +++ b/src/libtomahawk/network/controlconnection.cpp @@ -23,6 +23,7 @@ #include "database/databasecommand_collectionstats.h" #include "dbsyncconnection.h" #include "sourcelist.h" +#include #define TCP_TIMEOUT 600 @@ -120,6 +121,10 @@ ControlConnection::registerSource() Source* source = (Source*) sender(); Q_UNUSED( source ) Q_ASSERT( source == m_source.data() ); + + qDebug() << Q_FUNC_INFO << "Setting avatar ... " << name() << !SipHandler::instance()->avatar( name() ).isNull(); + source->setAvatar( SipHandler::instance()->avatar( name() ) ); + // .. but we'll use the shared pointer we've already made: m_registered = true; diff --git a/src/libtomahawk/network/controlconnection.h b/src/libtomahawk/network/controlconnection.h index d23c91f43..f0f2b105b 100644 --- a/src/libtomahawk/network/controlconnection.h +++ b/src/libtomahawk/network/controlconnection.h @@ -44,6 +44,8 @@ public: DBSyncConnection* dbSyncConnection(); + Tomahawk::source_ptr source() const { return m_source; } + protected: virtual void setup(); diff --git a/src/libtomahawk/sip/SipPlugin.h b/src/libtomahawk/sip/SipPlugin.h index 47af2fcf3..28e19ffb2 100644 --- a/src/libtomahawk/sip/SipPlugin.h +++ b/src/libtomahawk/sip/SipPlugin.h @@ -57,7 +57,9 @@ signals: void peerOnline( const QString& ); void peerOffline( const QString& ); void msgReceived( const QString& from, const QString& msg ); - + + void avatarReceived ( const QString& from, const QPixmap& avatar); + void addMenu( QMenu* menu ); void removeMenu( QMenu* menu ); }; diff --git a/src/libtomahawk/source.cpp b/src/libtomahawk/source.cpp index d825a7724..3e729d8f8 100644 --- a/src/libtomahawk/source.cpp +++ b/src/libtomahawk/source.cpp @@ -107,6 +107,16 @@ Source::friendlyName() const return m_friendlyname; } +void Source::setAvatar(const QPixmap& avatar) +{ + m_avatar = avatar; +} + +const QPixmap Source::avatar() const +{ + return m_avatar; +} + void Source::addCollection( const collection_ptr& c ) diff --git a/src/libtomahawk/source.h b/src/libtomahawk/source.h index ed48dfd1b..51d2dcdc7 100644 --- a/src/libtomahawk/source.h +++ b/src/libtomahawk/source.h @@ -54,6 +54,8 @@ public: QString userName() const { return m_username; } QString friendlyName() const; void setFriendlyName( const QString& fname ) { m_friendlyname = fname; } + void setAvatar(const QPixmap &avatar); + const QPixmap avatar() const; collection_ptr collection() const; void addCollection( const Tomahawk::collection_ptr& c ); @@ -116,6 +118,8 @@ private: QString m_textStatus; ControlConnection* m_cc; + + QPixmap m_avatar; }; }; diff --git a/src/sourcetree/sourcetreeview.cpp b/src/sourcetree/sourcetreeview.cpp index 6693bd106..716d2cd18 100644 --- a/src/sourcetree/sourcetreeview.cpp +++ b/src/sourcetree/sourcetreeview.cpp @@ -537,17 +537,20 @@ SourceDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, co SourceTreeItem* sti = SourcesModel::indexToTreeItem( index ); bool status = !( !sti || sti->source().isNull() || !sti->source()->isOnline() ); + QPixmap avatar( RESPATH "images/user-avatar.png" ); QString tracks; int figWidth = 0; - if ( status ) + if ( status && sti && !sti->source().isNull() ) { tracks = QString::number( sti->source()->trackCount() ); figWidth = painter->fontMetrics().width( tracks ); + if ( !sti->source()->avatar().isNull() ) + avatar = sti->source()->avatar(); } QRect iconRect = option.rect.adjusted( 4, 6, -option.rect.width() + option.rect.height() - 12 + 4, -6 ); - painter->drawPixmap( iconRect, QPixmap( RESPATH "images/user-avatar.png" ).scaledToHeight( iconRect.height(), Qt::SmoothTransformation ) ); + painter->drawPixmap( iconRect, avatar.scaledToHeight( iconRect.height(), Qt::SmoothTransformation ) ); if ( ( option.state & QStyle::State_Selected ) == QStyle::State_Selected ) {