1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-01 20:00:13 +02:00
This commit is contained in:
Leo Franchi
2011-01-14 16:45:53 -05:00
parent ce53bf1024
commit 92c96c5de6
4 changed files with 22 additions and 3 deletions

View File

@@ -29,7 +29,7 @@
#include "dynamic/GeneratorInterface.h" #include "dynamic/GeneratorInterface.h"
#include "dynamic/GeneratorFactory.h" #include "dynamic/GeneratorFactory.h"
#include "pipeline.h" #include "pipeline.h"
#include <audioengine.h> #include "audioengine.h"
using namespace Tomahawk; using namespace Tomahawk;
@@ -38,6 +38,7 @@ DynamicWidget::DynamicWidget( const Tomahawk::dynplaylist_ptr& playlist, QWidget
, m_layout( new QVBoxLayout ) , m_layout( new QVBoxLayout )
, m_resolveOnNextLoad( false ) , m_resolveOnNextLoad( false )
, m_runningOnDemand( false ) , m_runningOnDemand( false )
, m_startOnResolved( false )
, m_songsSinceLastResolved( 0 ) , m_songsSinceLastResolved( 0 )
, m_headerText( 0 ) , m_headerText( 0 )
, m_headerLayout( 0 ) , m_headerLayout( 0 )
@@ -163,12 +164,13 @@ DynamicWidget::generateOrStart()
} else if( m_playlist->mode() == OnDemand ) { } else if( m_playlist->mode() == OnDemand ) {
if( m_runningOnDemand == false ) { if( m_runningOnDemand == false ) {
m_runningOnDemand = true; m_runningOnDemand = true;
m_startOnResolved = true;
m_playlist->generator()->startOnDemand(); m_playlist->generator()->startOnDemand();
m_generateButton->setText( tr( "Stop" ) ); m_generateButton->setText( tr( "Stop" ) );
} else { // stop } else { // stop
m_runningOnDemand = false; m_runningOnDemand = false;
m_startOnResolved = false;
m_generateButton->setText( tr( "Start" ) ); m_generateButton->setText( tr( "Start" ) );
} }
} }
@@ -196,7 +198,8 @@ DynamicWidget::applyModeChange( int mode )
} else if( mode == Static ) { } else if( mode == Static ) {
m_generateButton->setText( tr( "Generate" ) ); m_generateButton->setText( tr( "Generate" ) );
m_genNumber->show(); m_genNumber->show();
m_headerLayout->insertWidget( 4, m_genNumber ); if( m_headerLayout->indexOf( m_generateButton ) == -1 )
m_headerLayout->insertWidget( 4, m_genNumber );
disconnect( TomahawkApp::instance()->audioEngine(), SIGNAL( loading( Tomahawk::result_ptr ) ), this, SLOT( newTrackLoading() ) ); disconnect( TomahawkApp::instance()->audioEngine(), SIGNAL( loading( Tomahawk::result_ptr ) ), this, SLOT( newTrackLoading() ) );
} }
@@ -224,6 +227,12 @@ void
DynamicWidget::trackResolved() DynamicWidget::trackResolved()
{ {
m_songsSinceLastResolved = 0; m_songsSinceLastResolved = 0;
if( m_startOnResolved ) {
m_startOnResolved = false;
TomahawkApp::instance()->audioEngine()->play();
}
} }
void void
@@ -243,6 +252,12 @@ DynamicWidget::newTrackLoading()
} }
} }
void DynamicWidget::onDemandFailed()
{
if( m_runningOnDemand )
generateOrStart();
}
void void
DynamicWidget::controlsChanged() DynamicWidget::controlsChanged()

View File

@@ -62,6 +62,7 @@ private slots:
void tracksGenerated( const QList< Tomahawk::query_ptr>& queries ); void tracksGenerated( const QList< Tomahawk::query_ptr>& queries );
// used by on demand mode // used by on demand mode
void onDemandFailed();
void newTrackLoading(); void newTrackLoading();
void onDemandFetched( const Tomahawk::query_ptr& track ); void onDemandFetched( const Tomahawk::query_ptr& track );
void trackResolveFailed(); void trackResolveFailed();
@@ -79,6 +80,7 @@ private:
// used in OnDemand mode // used in OnDemand mode
bool m_runningOnDemand; bool m_runningOnDemand;
bool m_startOnResolved;
int m_songsSinceLastResolved; int m_songsSinceLastResolved;
QLabel* m_headerText; QLabel* m_headerText;

View File

@@ -94,6 +94,7 @@ public:
void removeControl( const dyncontrol_ptr& control ); void removeControl( const dyncontrol_ptr& control );
signals: signals:
void onDemandFailed();
void generated( const QList< Tomahawk::query_ptr>& queries ); void generated( const QList< Tomahawk::query_ptr>& queries );
void nextTrackGenerated( const Tomahawk::query_ptr& track ); void nextTrackGenerated( const Tomahawk::query_ptr& track );

View File

@@ -160,6 +160,7 @@ EchonestGenerator::dynamicStarted()
emit nextTrackGenerated( songQuery ); emit nextTrackGenerated( songQuery );
} catch( const Echonest::ParseError& e ) { } catch( const Echonest::ParseError& e ) {
qWarning() << "libechonest threw an error parsing the start of the dynamic playlist:" << e.errorType() << e.what(); qWarning() << "libechonest threw an error parsing the start of the dynamic playlist:" << e.errorType() << e.what();
emit onDemandFailed();
} }
} }