1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-11 08:34:34 +02:00

Wait until we have loaded Albums track

This commit is contained in:
Uwe L. Korn
2013-07-21 17:09:11 +02:00
parent aec1b1ac80
commit 25a24bde05
2 changed files with 32 additions and 2 deletions

View File

@@ -248,6 +248,11 @@ JSResolverHelper::parseTrack( const QVariantMap& track )
void
JSResolverHelper::addUrlResult( const QString& url, const QVariantMap& result )
{
// It may seem a bit weird, but currently no slot should do anything
// more as we starting on a new URL and not task are waiting for it yet.
m_pendingUrl = QString();
m_pendingAlbum = album_ptr();
QString type = result.value( "type" ).toString();
if ( type == "artist" )
{
@@ -259,8 +264,15 @@ JSResolverHelper::addUrlResult( const QString& url, const QVariantMap& result )
{
QString name = result.value( "name" ).toString();
QString artist = result.value( "artist" ).toString();
emit m_resolver->informationFound( url, Album::get( Artist::get( artist, true ), name ).objectCast<QObject>() );
album_ptr album = Album::get( Artist::get( artist, true ), name );
m_pendingUrl = url;
m_pendingAlbum = album;
connect( album.data(), SIGNAL( tracksAdded( QList<Tomahawk::query_ptr>, Tomahawk::ModelMode, Tomahawk::collection_ptr ) ),
SLOT( tracksAdded( QList<Tomahawk::query_ptr>, Tomahawk::ModelMode, Tomahawk::collection_ptr ) ) );
if ( album->tracks().count() > 0 )
{
emit m_resolver->informationFound( url, album.objectCast<QObject>() );
}
}
else if ( type == "track" )
{
@@ -335,6 +347,19 @@ JSResolverHelper::reportCapabilities( const QVariant& v )
}
void
JSResolverHelper::tracksAdded( const QList<query_ptr>&, const ModelMode, const collection_ptr&)
{
// Check if we still are actively waiting
if ( m_pendingAlbum.isNull() || m_pendingUrl.isNull() )
return;
emit m_resolver->informationFound( m_pendingUrl, m_pendingAlbum.objectCast<QObject>() );
m_pendingAlbum = album_ptr();
m_pendingUrl = QString();
}
void
JSResolverHelper::setResolverConfig( const QVariantMap& config )
{

View File

@@ -74,6 +74,9 @@ public slots:
void reportCapabilities( const QVariant& capabilities );
private slots:
void tracksAdded( const QList<Tomahawk::query_ptr>& tracks, const Tomahawk::ModelMode, const Tomahawk::collection_ptr& collection );
private:
Tomahawk::query_ptr parseTrack( const QVariantMap& track );
void returnStreamUrl( const QString& streamUrl, boost::function< void( QSharedPointer< QIODevice >& ) > callback );
@@ -83,5 +86,7 @@ private:
bool m_urlCallbackIsAsync;
QVariantMap m_resolverConfig;
JSResolver* m_resolver;
QString m_pendingUrl;
Tomahawk::album_ptr m_pendingAlbum;
};
#endif // JSRESOLVERHELPER_H