From 700ce6f18bf84b56a8d1a76e72cee249aaf702d7 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Sat, 16 Mar 2013 16:36:04 +0100 Subject: [PATCH] Show resolver version for bundles, revision for packaged bundles. --- src/libtomahawk/accounts/Account.h | 1 + src/libtomahawk/accounts/AccountDelegate.cpp | 17 +++++++++++++++++ src/libtomahawk/accounts/AccountModel.cpp | 2 ++ src/libtomahawk/accounts/ResolverAccount.cpp | 17 +++++++++++++++++ src/libtomahawk/accounts/ResolverAccount.h | 1 + src/libtomahawk/utils/TomahawkUtils.h | 1 + src/libtomahawk/utils/TomahawkUtilsGui.cpp | 3 +++ 7 files changed, 42 insertions(+) diff --git a/src/libtomahawk/accounts/Account.h b/src/libtomahawk/accounts/Account.h index 54b6db6ec..5bbc3aee6 100644 --- a/src/libtomahawk/accounts/Account.h +++ b/src/libtomahawk/accounts/Account.h @@ -90,6 +90,7 @@ public: #endif virtual QString description() const { return QString(); } virtual QString author() const { return QString(); } + virtual QString version() const { return QString(); } virtual void saveConfig() {} // called when the widget has been edited. save values from config widget, call sync() to write to disk account generic settings diff --git a/src/libtomahawk/accounts/AccountDelegate.cpp b/src/libtomahawk/accounts/AccountDelegate.cpp index 2ca7d3e1e..be0306e96 100644 --- a/src/libtomahawk/accounts/AccountDelegate.cpp +++ b/src/libtomahawk/accounts/AccountDelegate.cpp @@ -371,6 +371,23 @@ AccountDelegate::paint ( QPainter* painter, const QStyleOptionViewItem& option, painter->drawText( countRect, Qt::AlignLeft, count ); // runningEdge = authorRect.x(); } + else //no rating, it's not attica, let's show other stuff... + { + QString versionString = index.data( AccountModel::VersionRole ).toString(); + + if ( !versionString.isEmpty() ) + { + int runningEdge = textRect.left(); + int pkgTop = runningBottom + PADDING; + int h = painter->fontMetrics().height(); + + QRect pkgRect( runningEdge, pkgTop, h, h ); + painter->drawPixmap( pkgRect, TomahawkUtils::defaultPixmap( TomahawkUtils::ResolverBundle, TomahawkUtils::Original, pkgRect.size() ) ); + + QRect textRect( runningEdge + PADDING + h, pkgTop, painter->fontMetrics().width( versionString ), h ); + painter->drawText( textRect, Qt::AlignLeft, versionString ); + } + } // Title and description! return; diff --git a/src/libtomahawk/accounts/AccountModel.cpp b/src/libtomahawk/accounts/AccountModel.cpp index 637ff55a1..5c81caac4 100644 --- a/src/libtomahawk/accounts/AccountModel.cpp +++ b/src/libtomahawk/accounts/AccountModel.cpp @@ -342,6 +342,8 @@ AccountModel::data( const QModelIndex& index, int role ) const : acct->description(); case AuthorRole: return acct->author(); + case VersionRole: + return acct->version(); case Qt::CheckStateRole: return acct->enabled() ? Qt::Checked : Qt::Unchecked; case AccountData: diff --git a/src/libtomahawk/accounts/ResolverAccount.cpp b/src/libtomahawk/accounts/ResolverAccount.cpp index a3591caea..83d048c9d 100644 --- a/src/libtomahawk/accounts/ResolverAccount.cpp +++ b/src/libtomahawk/accounts/ResolverAccount.cpp @@ -154,6 +154,12 @@ ResolverAccountFactory::metadataFromJsonFile( const QString& path ) result[ "scripts" ] = scripts; } } + if ( !variant[ "version" ].isNull() ) + result[ "version" ] = variant[ "version" ]; + if ( !variant[ "revision" ].isNull() ) + result[ "revision" ] = variant[ "revision" ]; + if ( !variant[ "timestamp" ].isNull() ) + result[ "timestamp" ] = variant[ "timestamp" ]; } //TODO: correct baseName and rename directory maybe? } @@ -354,6 +360,17 @@ ResolverAccount::author() const } +QString +ResolverAccount::version() const +{ + QString versionString = configuration().value( "version" ).toString(); + QString build = configuration().value( "revision" ).toString(); + if ( !build.isEmpty() ) + return versionString + "-" + build; + return versionString; +} + + /// AtticaResolverAccount AtticaResolverAccount::AtticaResolverAccount( const QString& accountId ) diff --git a/src/libtomahawk/accounts/ResolverAccount.h b/src/libtomahawk/accounts/ResolverAccount.h index 5906aad4c..f86b6225f 100644 --- a/src/libtomahawk/accounts/ResolverAccount.h +++ b/src/libtomahawk/accounts/ResolverAccount.h @@ -86,6 +86,7 @@ public: virtual QPixmap icon() const; virtual QString description() const; virtual QString author() const; + virtual QString version() const; // Not relevant virtual SipPlugin* sipPlugin() { return 0; } diff --git a/src/libtomahawk/utils/TomahawkUtils.h b/src/libtomahawk/utils/TomahawkUtils.h index 5388a8b12..7f56f3040 100644 --- a/src/libtomahawk/utils/TomahawkUtils.h +++ b/src/libtomahawk/utils/TomahawkUtils.h @@ -120,6 +120,7 @@ namespace TomahawkUtils StarHovered, SipPluginOnline, SipPluginOffline, + ResolverBundle, Invalid }; diff --git a/src/libtomahawk/utils/TomahawkUtilsGui.cpp b/src/libtomahawk/utils/TomahawkUtilsGui.cpp index 247be38eb..c444e21f0 100644 --- a/src/libtomahawk/utils/TomahawkUtilsGui.cpp +++ b/src/libtomahawk/utils/TomahawkUtilsGui.cpp @@ -707,6 +707,9 @@ defaultPixmap( ImageType type, ImageMode mode, const QSize& size ) case SoundcloudIcon: pixmap = ImageRegistry::instance()->pixmap( RESPATH "images/soundcloud.svg", size ); break; + case ResolverBundle: + pixmap = ImageRegistry::instance()->pixmap( RESPATH "images/drop-all-songs.svg", size ); + break; default: break;