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

* PlayableModel now emits signals for its queries so we don't have to store them everywhere.

This commit is contained in:
Christian Muehlhaeuser
2012-12-23 10:06:58 +01:00
parent e0d5a4ddb1
commit 85b3a83144
5 changed files with 39 additions and 4 deletions

View File

@@ -62,6 +62,7 @@ PlayableModel::createIndex( int row, int column, PlayableItem* item ) const
if ( item->query() ) if ( item->query() )
{ {
connect( item->query().data(), SIGNAL( playableStateChanged( bool ) ), SLOT( onQueryBecamePlayable( bool ) ), Qt::UniqueConnection ); connect( item->query().data(), SIGNAL( playableStateChanged( bool ) ), SLOT( onQueryBecamePlayable( bool ) ), Qt::UniqueConnection );
connect( item->query().data(), SIGNAL( resolvingFinished( bool ) ), SLOT( onQueryResolved( bool ) ), Qt::UniqueConnection );
} }
return QAbstractItemModel::createIndex( row, column, item ); return QAbstractItemModel::createIndex( row, column, item );
@@ -884,6 +885,28 @@ PlayableModel::onQueryBecamePlayable( bool playable )
} }
void
PlayableModel::onQueryResolved( bool hasResults )
{
Q_UNUSED( hasResults );
Tomahawk::Query* q = qobject_cast< Query* >( sender() );
if ( !q )
{
// Track has been removed from the playlist by now
return;
}
Tomahawk::query_ptr query = q->weakRef().toStrongRef();
PlayableItem* item = itemFromQuery( query );
if ( item )
{
emit indexResolved( item->index );
}
}
PlayableItem* PlayableItem*
PlayableModel::itemFromQuery( const Tomahawk::query_ptr& query ) const PlayableModel::itemFromQuery( const Tomahawk::query_ptr& query ) const
{ {

View File

@@ -120,9 +120,10 @@ signals:
void loadingStarted(); void loadingStarted();
void loadingFinished(); void loadingFinished();
void indexResolved( const QModelIndex& index );
void indexPlayable( const QModelIndex& index ); void indexPlayable( const QModelIndex& index );
void changed();
void changed();
void currentIndexChanged(); void currentIndexChanged();
public slots: public slots:
@@ -158,8 +159,10 @@ protected:
private slots: private slots:
void onDataChanged(); void onDataChanged();
void onQueryBecamePlayable( bool playable );
void onQueryBecamePlayable( bool playable );
void onQueryResolved( bool hasResults );
void onPlaybackStarted( const Tomahawk::result_ptr& result ); void onPlaybackStarted( const Tomahawk::result_ptr& result );
void onPlaybackStopped(); void onPlaybackStopped();

View File

@@ -108,6 +108,7 @@ PlayableProxyModel::setSourcePlayableModel( PlayableModel* sourceModel )
disconnect( m_model, SIGNAL( loadingFinished() ), this, SIGNAL( loadingFinished() ) ); disconnect( m_model, SIGNAL( loadingFinished() ), this, SIGNAL( loadingFinished() ) );
disconnect( m_model, SIGNAL( itemCountChanged( unsigned int ) ), this, SIGNAL( itemCountChanged( unsigned int ) ) ); disconnect( m_model, SIGNAL( itemCountChanged( unsigned int ) ), this, SIGNAL( itemCountChanged( unsigned int ) ) );
disconnect( m_model, SIGNAL( indexPlayable( QModelIndex ) ), this, SLOT( onIndexPlayable( QModelIndex ) ) ); disconnect( m_model, SIGNAL( indexPlayable( QModelIndex ) ), this, SLOT( onIndexPlayable( QModelIndex ) ) );
disconnect( m_model, SIGNAL( indexResolved( QModelIndex ) ), this, SLOT( onIndexResolved( QModelIndex ) ) );
disconnect( m_model, SIGNAL( currentIndexChanged() ), this, SIGNAL( currentIndexChanged() ) ); disconnect( m_model, SIGNAL( currentIndexChanged() ), this, SIGNAL( currentIndexChanged() ) );
} }
@@ -119,6 +120,7 @@ PlayableProxyModel::setSourcePlayableModel( PlayableModel* sourceModel )
connect( m_model, SIGNAL( loadingFinished() ), SIGNAL( loadingFinished() ) ); connect( m_model, SIGNAL( loadingFinished() ), SIGNAL( loadingFinished() ) );
connect( m_model, SIGNAL( itemCountChanged( unsigned int ) ), SIGNAL( itemCountChanged( unsigned int ) ) ); connect( m_model, SIGNAL( itemCountChanged( unsigned int ) ), SIGNAL( itemCountChanged( unsigned int ) ) );
connect( m_model, SIGNAL( indexPlayable( QModelIndex ) ), SLOT( onIndexPlayable( QModelIndex ) ) ); connect( m_model, SIGNAL( indexPlayable( QModelIndex ) ), SLOT( onIndexPlayable( QModelIndex ) ) );
connect( m_model, SIGNAL( indexResolved( QModelIndex ) ), SLOT( onIndexResolved( QModelIndex ) ) );
connect( m_model, SIGNAL( currentIndexChanged() ), SIGNAL( currentIndexChanged() ) ); connect( m_model, SIGNAL( currentIndexChanged() ), SIGNAL( currentIndexChanged() ) );
} }
@@ -643,3 +645,10 @@ PlayableProxyModel::onIndexPlayable( const QModelIndex& index )
{ {
emit indexPlayable( mapFromSource( index ) ); emit indexPlayable( mapFromSource( index ) );
} }
void
PlayableProxyModel::onIndexResolved( const QModelIndex& index )
{
emit indexResolved( mapFromSource( index ) );
}

View File

@@ -94,6 +94,7 @@ signals:
void loadingFinished(); void loadingFinished();
void indexPlayable( const QModelIndex& index ); void indexPlayable( const QModelIndex& index );
void indexResolved( const QModelIndex& index );
void currentIndexChanged(); void currentIndexChanged();
void itemCountChanged( unsigned int items ); void itemCountChanged( unsigned int items );
@@ -106,6 +107,7 @@ protected:
private slots: private slots:
void onIndexPlayable( const QModelIndex& index ); void onIndexPlayable( const QModelIndex& index );
void onIndexResolved( const QModelIndex& index );
private: private:
virtual bool lessThan( int column, const Tomahawk::query_ptr& left, const Tomahawk::query_ptr& right ) const; virtual bool lessThan( int column, const Tomahawk::query_ptr& left, const Tomahawk::query_ptr& right ) const;

View File

@@ -426,8 +426,6 @@ TrackView::resizeEvent( QResizeEvent* event )
{ {
m_header->resizeSection( 0, event->size().width() ); m_header->resizeSection( 0, event->size().width() );
} }
} }