diff --git a/src/libtomahawk/playlist/dynamic/DynamicModel.cpp b/src/libtomahawk/playlist/dynamic/DynamicModel.cpp index b8c660600..d4855833c 100644 --- a/src/libtomahawk/playlist/dynamic/DynamicModel.cpp +++ b/src/libtomahawk/playlist/dynamic/DynamicModel.cpp @@ -26,6 +26,7 @@ DynamicModel::DynamicModel( QObject* parent ) , m_startOnResolved( false ) , m_onDemandRunning( false ) , m_changeOnNext( false ) + , m_searchingForNext( false ) , m_filterUnresolvable( true ) , m_currentAttempts( 0 ) , m_lastResolvedRow( 0 ) @@ -78,7 +79,7 @@ DynamicModel::newTrackGenerated( const Tomahawk::query_ptr& query ) { if( m_onDemandRunning ) { connect( query.data(), SIGNAL( resolvingFinished( bool ) ), this, SLOT( trackResolveFinished( bool ) ) ); - connect( query.data(), SIGNAL( resultsAdded( QList ) ), this, SLOT( trackResolved() ) ); + connect( query.data(), SIGNAL( solvedStateChanged( bool ) ), this, SLOT( trackResolved( bool ) ) ); append( query ); } @@ -105,8 +106,11 @@ DynamicModel::changeStation() void -DynamicModel::trackResolved() +DynamicModel::trackResolved( bool resolved ) { + if( !resolved ) + return; + Query* q = qobject_cast(sender()); qDebug() << "Got successful resolved track:" << q->track() << q->artist() << m_lastResolvedRow << m_currentAttempts; if( m_startOnResolved ) { // on first start @@ -119,6 +123,7 @@ DynamicModel::trackResolved() emit collapseFromTo( m_lastResolvedRow, m_currentAttempts ); } m_currentAttempts = 0; + m_searchingForNext = false; emit checkForOverflow(); } @@ -131,6 +136,7 @@ DynamicModel::trackResolveFinished( bool success ) qDebug() << "Got not resolved track:" << q->track() << q->artist() << m_lastResolvedRow << m_currentAttempts; m_currentAttempts++; if( m_currentAttempts < 20 ) { + qDebug() << "FETCHING MORE!"; m_playlist->generator()->fetchNext(); } else { emit trackGenerationFailure( tr( "Could not find a playable track.\n\nPlease change the filters or try again." ) ); @@ -142,11 +148,15 @@ DynamicModel::trackResolveFinished( bool success ) void DynamicModel::newTrackLoading() { + qDebug() << "Got NEW TRACK LOADING signal"; if( m_changeOnNext ) { // reset instead of getting the next one m_lastResolvedRow = rowCount( QModelIndex() ); + m_searchingForNext = true; m_playlist->generator()->startOnDemand(); - } else if( m_onDemandRunning && m_currentAttempts == 0 ) { // if we're in dynamic mode and we're also currently idle + } else if( m_onDemandRunning && m_currentAttempts == 0 && !m_searchingForNext ) { // if we're in dynamic mode and we're also currently idle m_lastResolvedRow = rowCount( QModelIndex() ); + m_searchingForNext = true; + qDebug() << "IDLE fetching new track!"; m_playlist->generator()->fetchNext(); } } diff --git a/src/libtomahawk/playlist/dynamic/DynamicModel.h b/src/libtomahawk/playlist/dynamic/DynamicModel.h index 11271aa9e..1a42d765a 100644 --- a/src/libtomahawk/playlist/dynamic/DynamicModel.h +++ b/src/libtomahawk/playlist/dynamic/DynamicModel.h @@ -64,7 +64,7 @@ private slots: void newTrackGenerated( const Tomahawk::query_ptr& query ); void trackResolveFinished( bool ); - void trackResolved(); + void trackResolved( bool ); void newTrackLoading(); void filteringTrackResolved( bool successful );