1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-09 15:47:38 +02:00

* Adjust inheriting models to new PlayableModel API.

This commit is contained in:
Christian Muehlhaeuser
2012-06-29 03:13:31 +02:00
parent 0c00cccc1f
commit d907a9fbc8
5 changed files with 57 additions and 73 deletions

View File

@@ -93,10 +93,10 @@ PlaylistModel::loadPlaylist( const Tomahawk::playlist_ptr& playlist, bool loadEn
} }
QList<plentry_ptr> entries = playlist->entries(); QList<plentry_ptr> entries = playlist->entries();
foreach( const plentry_ptr& p, entries ) /* foreach ( const plentry_ptr& p, entries )
qDebug() << p->guid() << p->query()->track() << p->query()->artist(); qDebug() << p->guid() << p->query()->track() << p->query()->artist();*/
append( entries ); appendEntries( entries );
m_isLoading = false; m_isLoading = false;
} }
@@ -112,78 +112,67 @@ PlaylistModel::clear()
void void
PlaylistModel::append( const QList< plentry_ptr >& entries ) PlaylistModel::appendEntries( const QList< plentry_ptr >& entries )
{ {
insert( entries, rowCount( QModelIndex() ) ); insertEntries( entries, rowCount( QModelIndex() ) );
} }
void void
PlaylistModel::append( const QList< query_ptr >& queries ) PlaylistModel::insertAlbums( const QList< Tomahawk::album_ptr >& albums, int row )
{ {
insert( queries, rowCount( QModelIndex() ) ); // FIXME: This currently appends, not inserts!
}
foreach ( const album_ptr& album, albums )
void
PlaylistModel::append( const Tomahawk::query_ptr& query )
{
insert( query, rowCount( QModelIndex() ) );
}
void
PlaylistModel::append( const Tomahawk::album_ptr& album )
{
if ( album.isNull() )
return;
connect( album.data(), SIGNAL( tracksAdded( QList<Tomahawk::query_ptr>, Tomahawk::ModelMode, Tomahawk::collection_ptr ) ),
SLOT( append( QList<Tomahawk::query_ptr> ) ) );
if ( rowCount( QModelIndex() ) == 0 )
{ {
setTitle( album->name() ); if ( album.isNull() )
setDescription( tr( "All tracks by %1 on album %2" ).arg( album->artist()->name() ).arg( album->name() ) ); return;
m_isTemporary = true;
connect( album.data(), SIGNAL( tracksAdded( QList<Tomahawk::query_ptr>, Tomahawk::ModelMode, Tomahawk::collection_ptr ) ),
SLOT( appendQueries( QList<Tomahawk::query_ptr> ) ) );
appendQueries( album->playlistInterface( Mixed )->tracks() );
} }
append( album->playlistInterface( Mixed )->tracks() ); if ( rowCount( QModelIndex() ) == 0 && albums.count() == 1 )
}
void
PlaylistModel::append( const Tomahawk::artist_ptr& artist )
{
if ( artist.isNull() )
return;
connect( artist.data(), SIGNAL( tracksAdded( QList<Tomahawk::query_ptr>, Tomahawk::ModelMode, Tomahawk::collection_ptr ) ),
SLOT( append( QList<Tomahawk::query_ptr> ) ) );
if ( rowCount( QModelIndex() ) == 0 )
{ {
setTitle( artist->name() ); setTitle( albums.first()->name() );
setDescription( tr( "All tracks by %1" ).arg( artist->name() ) ); setDescription( tr( "All tracks by %1 on album %2" ).arg( albums.first()->artist()->name() ).arg( albums.first()->name() ) );
m_isTemporary = true; m_isTemporary = true;
} }
append( artist->playlistInterface( Mixed )->tracks() );
} }
void void
PlaylistModel::insert( const Tomahawk::query_ptr& query, int row ) PlaylistModel::insertArtists( const QList< Tomahawk::artist_ptr >& artists, int row )
{ {
PlayableModel::insert( query, row ); // FIXME: This currently appends, not inserts!
foreach ( const artist_ptr& artist, artists )
{
if ( artist.isNull() )
return;
connect( artist.data(), SIGNAL( tracksAdded( QList<Tomahawk::query_ptr>, Tomahawk::ModelMode, Tomahawk::collection_ptr ) ),
SLOT( appendQueries( QList<Tomahawk::query_ptr> ) ) );
appendQueries( artist->playlistInterface( Mixed )->tracks() );
}
if ( rowCount( QModelIndex() ) == 0 && artists.count() == 1 )
{
setTitle( artists.first()->name() );
setDescription( tr( "All tracks by %1" ).arg( artists.first()->name() ) );
m_isTemporary = true;
}
} }
void void
PlaylistModel::insert( const QList< Tomahawk::query_ptr >& queries, int row ) PlaylistModel::insertQueries( const QList< Tomahawk::query_ptr >& queries, int row )
{ {
QList< Tomahawk::plentry_ptr > entries; QList< Tomahawk::plentry_ptr > entries;
foreach( const query_ptr& query, queries ) foreach ( const query_ptr& query, queries )
{ {
plentry_ptr entry = plentry_ptr( new PlaylistEntry() ); plentry_ptr entry = plentry_ptr( new PlaylistEntry() );
@@ -200,12 +189,12 @@ PlaylistModel::insert( const QList< Tomahawk::query_ptr >& queries, int row )
entries << entry; entries << entry;
} }
insert( entries, row ); insertEntries( entries, row );
} }
void void
PlaylistModel::insert( const QList< Tomahawk::plentry_ptr >& entries, int row ) PlaylistModel::insertEntries( const QList< Tomahawk::plentry_ptr >& entries, int row )
{ {
if ( !entries.count() ) if ( !entries.count() )
{ {
@@ -368,7 +357,7 @@ PlaylistModel::parsedDroppedTracks( QList< query_ptr > tracks )
if ( update ) if ( update )
beginPlaylistChanges(); beginPlaylistChanges();
insert( tracks, beginRow ); insertQueries( tracks, beginRow );
if ( update && m_dropStorage.action & Qt::CopyAction ) if ( update && m_dropStorage.action & Qt::CopyAction )
endPlaylistChanges(); endPlaylistChanges();

View File

@@ -58,15 +58,12 @@ public:
public slots: public slots:
virtual void clear(); virtual void clear();
virtual void append( const Tomahawk::query_ptr& query ); virtual void appendEntries( const QList< Tomahawk::plentry_ptr >& entries );
virtual void append( const Tomahawk::album_ptr& album );
virtual void append( const Tomahawk::artist_ptr& artist );
virtual void append( const QList< Tomahawk::query_ptr >& queries );
virtual void append( const QList< Tomahawk::plentry_ptr >& entries );
virtual void insert( const Tomahawk::query_ptr& query, int row = 0 ); virtual void insertAlbums( const QList< Tomahawk::album_ptr >& album, int row = 0 );
virtual void insert( const QList< Tomahawk::query_ptr >& queries, int row = 0 ); virtual void insertArtists( const QList< Tomahawk::artist_ptr >& artist, int row = 0 );
virtual void insert( const QList< Tomahawk::plentry_ptr >& entries, int row = 0 ); virtual void insertQueries( const QList< Tomahawk::query_ptr >& queries, int row = 0 );
virtual void insertEntries( const QList< Tomahawk::plentry_ptr >& entries, int row = 0 );
virtual void removeIndex( const QModelIndex& index, bool moreToCome = false ); virtual void removeIndex( const QModelIndex& index, bool moreToCome = false );

View File

@@ -60,7 +60,7 @@ RecentlyAddedModel::loadHistory()
cmd->setSortDescending( true ); cmd->setSortDescending( true );
connect( cmd, SIGNAL( tracks( QList<Tomahawk::query_ptr>, QVariant ) ), connect( cmd, SIGNAL( tracks( QList<Tomahawk::query_ptr>, QVariant ) ),
SLOT( append( QList<Tomahawk::query_ptr> ) ), Qt::QueuedConnection ); SLOT( appendQueries( QList<Tomahawk::query_ptr> ) ), Qt::QueuedConnection );
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>( cmd ) ); Database::instance()->enqueue( QSharedPointer<DatabaseCommand>( cmd ) );
} }

View File

@@ -59,7 +59,7 @@ RecentlyPlayedModel::loadHistory()
cmd->setLimit( m_limit ); cmd->setLimit( m_limit );
connect( cmd, SIGNAL( tracks( QList<Tomahawk::query_ptr> ) ), connect( cmd, SIGNAL( tracks( QList<Tomahawk::query_ptr> ) ),
SLOT( append( QList<Tomahawk::query_ptr> ) ), Qt::QueuedConnection ); SLOT( appendQueries( QList<Tomahawk::query_ptr> ) ), Qt::QueuedConnection );
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>( cmd ) ); Database::instance()->enqueue( QSharedPointer<DatabaseCommand>( cmd ) );
} }
@@ -119,7 +119,7 @@ RecentlyPlayedModel::onPlaybackFinished( const Tomahawk::query_ptr& query )
PlayableItem* youngestItem = itemFromIndex( index( 0, 0, QModelIndex() ) ); PlayableItem* youngestItem = itemFromIndex( index( 0, 0, QModelIndex() ) );
if ( youngestItem->query()->playedBy().second <= playtime ) if ( youngestItem->query()->playedBy().second <= playtime )
insert( query, 0 ); insertQuery( query, 0 );
else else
{ {
for ( int i = 0; i < count - 1; i++ ) for ( int i = 0; i < count - 1; i++ )
@@ -129,14 +129,14 @@ RecentlyPlayedModel::onPlaybackFinished( const Tomahawk::query_ptr& query )
if ( item1->query()->playedBy().second >= playtime && item2->query()->playedBy().second <= playtime ) if ( item1->query()->playedBy().second >= playtime && item2->query()->playedBy().second <= playtime )
{ {
insert( query, i + 1 ); insertQuery( query, i + 1 );
break; break;
} }
} }
} }
} }
else else
insert( query, 0 ); insertQuery( query, 0 );
if ( trackCount() > (int)m_limit ) if ( trackCount() > (int)m_limit )
remove( m_limit ); remove( m_limit );

View File

@@ -121,7 +121,7 @@ DynamicModel::newTrackGenerated( const Tomahawk::query_ptr& query )
connect( query.data(), SIGNAL( resolvingFinished( bool ) ), this, SLOT( trackResolveFinished( bool ) ) ); connect( query.data(), SIGNAL( resolvingFinished( bool ) ), this, SLOT( trackResolveFinished( bool ) ) );
m_waitingFor << query.data(); m_waitingFor << query.data();
append( query ); appendQuery( query );
} }
} }
@@ -316,11 +316,9 @@ DynamicModel::addToPlaylist( const QList< query_ptr >& entries, bool clearFirst
m_playlist->addEntries( entries, m_playlist->currentrevision() ); m_playlist->addEntries( entries, m_playlist->currentrevision() );
} }
else else
{ // read-only, so add tracks only in the GUI, not to the playlist itself {
foreach ( const query_ptr& query, entries ) // read-only, so add tracks only in the GUI, not to the playlist itself
{ appendQueries( entries );
append( query );
}
} }
emit tracksAdded(); emit tracksAdded();