1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-04-07 17:42:35 +02:00

make stations behave

This commit is contained in:
Leo Franchi 2011-03-06 12:24:53 -05:00
parent ebd66b1105
commit eec2c3a9bf
2 changed files with 14 additions and 4 deletions

View File

@ -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<Tomahawk::result_ptr> ) ), 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<Query*>(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();
}
}

View File

@ -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 );