diff -r fdb31ab341af -r a0afa279b8fe mpviewplugins/mpdetailsviewplugin/src/mpquerymanager.cpp --- a/mpviewplugins/mpdetailsviewplugin/src/mpquerymanager.cpp Fri May 14 18:54:37 2010 -0500 +++ b/mpviewplugins/mpdetailsviewplugin/src/mpquerymanager.cpp Fri May 28 19:46:01 2010 -0500 @@ -31,12 +31,20 @@ #include #include +#include +#include +#include + #include "mpdetailssharedialog.h" #include "mptrace.h" +const int KUndefined = -1; const int KRecommendationCount = 2; MpQueryManager::MpQueryManager() + : mManager(0), + mDownloadManager(0), + mThumbnailManager(0) { TX_ENTRY @@ -60,6 +68,14 @@ mDownloadManager = new QNetworkAccessManager( this ); connect( mDownloadManager, SIGNAL( finished( QNetworkReply * ) ), this, SLOT( DownloadFinished( QNetworkReply * ) ) ); + + mThumbnailManager = new ThumbnailManager( this ); + mThumbnailManager->setQualityPreference( ThumbnailManager::OptimizeForQuality ); + mThumbnailManager->setThumbnailSize( ThumbnailManager::ThumbnailSmall ); + QObject::connect( mThumbnailManager, SIGNAL( thumbnailReady( QPixmap , void * , int , int ) ), + this, SLOT( thumbnailReady( QPixmap , void * , int , int ) ) ); + // TODO: Use the album art in provided by 10.1 wk16 platform. Current one is in the binary + mDefaultRecommendationAlbumArt = QPixmap( ":/mpdetailsviewicons/qtg_large_music_album.svg" ); TX_EXIT } @@ -73,6 +89,7 @@ if ( mDownloadManager ) { mDownloadManager->deleteLater(); } + delete mThumbnailManager; TX_EXIT } @@ -185,15 +202,6 @@ } /*! - Return the number of ready album arts - */ -int &MpQueryManager::albumArtsReadyCount() -{ - TX_LOG - return mAlbumArtsReadyCount; -} - -/*! Insert one uri & pixmap item into map */ void MpQueryManager::insertMapItem( const QString &uri, const QPixmap &pixmap ) @@ -238,7 +246,7 @@ */ void MpQueryManager::retrieveInformationNetworkError( QNetworkReply::NetworkError error ) { - Q_UNUSED(error); + // TODO: agree on error handling TX_ENTRY_ARGS( "Network error for retrieving Information" << error); TX_EXIT } @@ -269,12 +277,12 @@ // If it failed, use empty filename (since file was removed in any case) if ( ret ) { - emit setAlbumArt( mRecommendationAlbumArtsLink.at( mDownloadedAlbumArts), - mRecommendationAlbumArtsName.at( mDownloadedAlbumArts ) ); + setAlbumArtUri( mRecommendationAlbumArtsLink.at( mDownloadedAlbumArts), + mRecommendationAlbumArtsName.at( mDownloadedAlbumArts ) ); } else { - emit setAlbumArt( mRecommendationAlbumArtsLink.at( mDownloadedAlbumArts), "" ); + setAlbumArtUri(mRecommendationAlbumArtsLink.at( mDownloadedAlbumArts), ""); } } else @@ -472,3 +480,49 @@ return str.left( str.length() - 1 ); } +/*! + Sets recommendation album art +*/ +void MpQueryManager::setAlbumArtUri( const QString &albumArtUri, const QString &albumArtName ) +{ + TX_ENTRY_ARGS( "albumArtUri = " << albumArtUri ) + TX_LOG_ARGS( "albumArtName = " << albumArtName ) + if ( !albumArtUri.isEmpty() && !albumArtName.isEmpty() ) { + int id = mThumbnailManager->getThumbnail( albumArtName, reinterpret_cast( const_cast( &albumArtUri ) ) ); + if ( id == KUndefined ) { + // Request failed. Set default album art. + insertMapItem( albumArtUri, mDefaultRecommendationAlbumArt ); + } + } + else { + // No album art uri. Set default album art. + insertMapItem( albumArtUri, mDefaultRecommendationAlbumArt ); + } + TX_EXIT +} + +/*! + Slot to handle the recommendation album art +*/ +void MpQueryManager::thumbnailReady( + const QPixmap& pixmap, + void *data, + int /*id*/, + int error ) +{ + TX_ENTRY + // TODO: Hkn: use qobject_cast + QString uri = *( reinterpret_cast( data ) ); + TX_LOG_ARGS( "Uri: " << uri ); + + if ( error == 0 ) { + TX_LOG_ARGS( "album art link: " << uri ); + insertMapItem( uri, pixmap ); + } else { + insertMapItem( uri, mDefaultRecommendationAlbumArt ); + } + if(++mAlbumArtsReadyCount == KRecommendationCount) { + emit recommendationAlbumArtsReady(); + } + TX_EXIT +}