From fc5bf30a7974a5af632b5c301c75ff7c5ada97b2 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 23 Nov 2011 12:28:34 +0100 Subject: [PATCH] * Prevent stuck now playing indicator. --- src/libtomahawk/playlist/trackmodel.cpp | 13 ++++++++++++- src/libtomahawk/playlist/trackmodel.h | 1 + src/libtomahawk/playlist/treemodel.cpp | 7 +++---- src/libtomahawk/playlist/treemodel.h | 2 +- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/libtomahawk/playlist/trackmodel.cpp b/src/libtomahawk/playlist/trackmodel.cpp index 5c0ac089f..708f8ba3e 100644 --- a/src/libtomahawk/playlist/trackmodel.cpp +++ b/src/libtomahawk/playlist/trackmodel.cpp @@ -39,13 +39,13 @@ TrackModel::TrackModel( QObject* parent ) , m_readOnly( true ) , m_style( Detailed ) { + connect( AudioEngine::instance(), SIGNAL( started( Tomahawk::result_ptr ) ), SLOT( onPlaybackStarted( Tomahawk::result_ptr ) ), Qt::DirectConnection ); connect( AudioEngine::instance(), SIGNAL( stopped() ), SLOT( onPlaybackStopped() ), Qt::DirectConnection ); } TrackModel::~TrackModel() { - delete m_rootItem; } @@ -475,6 +475,17 @@ TrackModel::itemFromIndex( const QModelIndex& index ) const } +void +TrackModel::onPlaybackStarted( const Tomahawk::result_ptr& result ) +{ + TrackModelItem* oldEntry = itemFromIndex( m_currentIndex ); + if ( oldEntry && ( oldEntry->query().isNull() || !oldEntry->query()->numResults() || oldEntry->query()->results().first().data() != result.data() ) ) + { + oldEntry->setIsPlaying( false ); + } +} + + void TrackModel::onPlaybackStopped() { diff --git a/src/libtomahawk/playlist/trackmodel.h b/src/libtomahawk/playlist/trackmodel.h index 40e3c3658..f0b4990ea 100644 --- a/src/libtomahawk/playlist/trackmodel.h +++ b/src/libtomahawk/playlist/trackmodel.h @@ -126,6 +126,7 @@ public slots: virtual void setShuffled( bool /*shuffled*/ ) {} private slots: + void onPlaybackStarted( const Tomahawk::result_ptr& result ); void onPlaybackStopped(); private: diff --git a/src/libtomahawk/playlist/treemodel.cpp b/src/libtomahawk/playlist/treemodel.cpp index 7c3861a98..d2ace7c54 100644 --- a/src/libtomahawk/playlist/treemodel.cpp +++ b/src/libtomahawk/playlist/treemodel.cpp @@ -43,7 +43,7 @@ TreeModel::TreeModel( QObject* parent ) { setIcon( QPixmap( RESPATH "images/music-icon.png" ) ); - connect( AudioEngine::instance(), SIGNAL( finished( Tomahawk::result_ptr ) ), SLOT( onPlaybackFinished( Tomahawk::result_ptr ) ), Qt::DirectConnection ); + connect( AudioEngine::instance(), SIGNAL( started( Tomahawk::result_ptr ) ), SLOT( onPlaybackStarted( Tomahawk::result_ptr ) ), Qt::DirectConnection ); connect( AudioEngine::instance(), SIGNAL( stopped() ), SLOT( onPlaybackStopped() ), Qt::DirectConnection ); connect( Tomahawk::InfoSystem::InfoSystem::instance(), @@ -948,11 +948,10 @@ TreeModel::infoSystemFinished( QString target ) void -TreeModel::onPlaybackFinished( const Tomahawk::result_ptr& result ) +TreeModel::onPlaybackStarted( const Tomahawk::result_ptr& result ) { TreeModelItem* oldEntry = itemFromIndex( m_currentIndex ); - qDebug() << oldEntry->result().data() << result.data(); - if ( oldEntry && !oldEntry->result().isNull() && oldEntry->result().data() == result.data() ) + if ( oldEntry && ( oldEntry->result().isNull() || oldEntry->result().data() != result.data() ) ) { oldEntry->setIsPlaying( false ); } diff --git a/src/libtomahawk/playlist/treemodel.h b/src/libtomahawk/playlist/treemodel.h index cab628a5f..952ae1306 100644 --- a/src/libtomahawk/playlist/treemodel.h +++ b/src/libtomahawk/playlist/treemodel.h @@ -149,7 +149,7 @@ private slots: void infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestData, QVariant output ); void infoSystemFinished( QString target ); - void onPlaybackFinished( const Tomahawk::result_ptr& result ); + void onPlaybackStarted( const Tomahawk::result_ptr& result ); void onPlaybackStopped(); void onDataChanged();