1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-03-21 08:19:42 +01:00

* Made a few of PlayableModel's methods virtual.

This commit is contained in:
Christian Muehlhaeuser 2012-11-28 08:01:21 +01:00
parent 473503d786
commit 2943e13edc
3 changed files with 57 additions and 22 deletions

View File

@ -101,9 +101,9 @@ public:
virtual void ensureResolved();
PlayableItem* itemFromIndex( const QModelIndex& index ) const;
PlayableItem* itemFromQuery( const Tomahawk::query_ptr& query ) const;
PlayableItem* itemFromResult( const Tomahawk::result_ptr& result ) const;
virtual PlayableItem* itemFromIndex( const QModelIndex& index ) const;
virtual PlayableItem* itemFromQuery( const Tomahawk::query_ptr& query ) const;
virtual PlayableItem* itemFromResult( const Tomahawk::result_ptr& result ) const;
/// Returns a flat list of all tracks in this model
QList< Tomahawk::query_ptr > queries() const;

View File

@ -426,27 +426,59 @@ TreeModel::indexFromAlbum( const Tomahawk::album_ptr& album ) const
QModelIndex
TreeModel::indexFromResult( const Tomahawk::result_ptr& result ) const
{
QModelIndex artistIdx = indexFromArtist( result->artist() );
for ( int i = 0; i < rowCount( artistIdx ); i++ )
QModelIndex albumIdx = indexFromAlbum( result->album() );
for ( int i = 0; i < rowCount( albumIdx ); i++ )
{
QModelIndex idx = index( i, 0, artistIdx );
PlayableItem* albumItem = itemFromIndex( idx );
if ( albumItem && albumItem->album() == result->album() )
QModelIndex idx = index( i, 0, albumIdx );
PlayableItem* item = itemFromIndex( idx );
tDebug() << item->result()->toString();
if ( item && item->result() == result )
{
for ( int j = 0; j < rowCount( idx ); j++ )
{
QModelIndex subidx = index( j, 0, idx );
PlayableItem* item = itemFromIndex( subidx );
if ( item && item->result() == result )
{
return subidx;
}
}
break;
return idx;
}
}
tDebug() << "Could not find item for result:" << result->toString();
return QModelIndex();
}
QModelIndex
TreeModel::indexFromQuery( const Tomahawk::query_ptr& query ) const
{
Tomahawk::artist_ptr artist = Artist::get( query->artist(), false );
Tomahawk::album_ptr album = Album::get( artist, query->album(), false );
QModelIndex albumIdx = indexFromAlbum( album );
for ( int i = 0; i < rowCount( albumIdx ); i++ )
{
QModelIndex idx = index( i, 0, albumIdx );
PlayableItem* item = itemFromIndex( idx );
if ( item && item->result() && item->result()->toQuery()->equals( query ) )
{
return idx;
}
}
tDebug() << "Could not find item for query:" << query->toString();
return QModelIndex();
}
PlayableItem*
TreeModel::itemFromResult( const Tomahawk::result_ptr& result ) const
{
QModelIndex albumIdx = indexFromAlbum( result->album() );
for ( int i = 0; i < rowCount( albumIdx ); i++ )
{
QModelIndex idx = index( i, 0, albumIdx );
PlayableItem* item = itemFromIndex( idx );
if ( item && item->result() == result )
{
return item;
}
}
tDebug() << "Could not find item for result:" << result->toString();
return 0;
}

View File

@ -61,9 +61,12 @@ public:
void getCover( const QModelIndex& index );
QModelIndex indexFromArtist( const Tomahawk::artist_ptr& artist ) const;
QModelIndex indexFromAlbum( const Tomahawk::album_ptr& album ) const;
QModelIndex indexFromResult( const Tomahawk::result_ptr& result ) const;
virtual PlayableItem* itemFromResult( const Tomahawk::result_ptr& result ) const;
virtual QModelIndex indexFromArtist( const Tomahawk::artist_ptr& artist ) const;
virtual QModelIndex indexFromAlbum( const Tomahawk::album_ptr& album ) const;
virtual QModelIndex indexFromResult( const Tomahawk::result_ptr& result ) const;
virtual QModelIndex indexFromQuery( const Tomahawk::query_ptr& query ) const;
public slots:
void addAlbums( const QModelIndex& parent, const QList<Tomahawk::album_ptr>& albums );