diff --git a/src/libtomahawk/playlist/PlayableModel.cpp b/src/libtomahawk/playlist/PlayableModel.cpp index bdb95f0eb..c5b5ce415 100644 --- a/src/libtomahawk/playlist/PlayableModel.cpp +++ b/src/libtomahawk/playlist/PlayableModel.cpp @@ -844,3 +844,21 @@ PlayableModel::setIcon( const QPixmap& pixmap ) m_icon = pixmap; emit changed(); } + + +PlayableItem* +PlayableModel::itemFromQuery( const Tomahawk::query_ptr& query ) const +{ + for ( int i = 0; i < rowCount( QModelIndex() ); i++ ) + { + QModelIndex idx = index( i, 0, QModelIndex() ); + PlayableItem* item = itemFromIndex( idx ); + if ( item && item->query() == query ) + { + return item; + } + } + + tDebug() << "Could not find item for query:" << query->toString(); + return 0; +} diff --git a/src/libtomahawk/playlist/PlayableModel.h b/src/libtomahawk/playlist/PlayableModel.h index e276b07dd..950448b28 100644 --- a/src/libtomahawk/playlist/PlayableModel.h +++ b/src/libtomahawk/playlist/PlayableModel.h @@ -101,6 +101,8 @@ public: virtual void ensureResolved(); PlayableItem* itemFromIndex( const QModelIndex& index ) const; + PlayableItem* itemFromQuery( const Tomahawk::query_ptr& query ) const; + /// Returns a flat list of all tracks in this model QList< Tomahawk::query_ptr > queries() const; diff --git a/src/libtomahawk/playlist/PlayableProxyModel.h b/src/libtomahawk/playlist/PlayableProxyModel.h index f2df0a433..36e21cf31 100644 --- a/src/libtomahawk/playlist/PlayableProxyModel.h +++ b/src/libtomahawk/playlist/PlayableProxyModel.h @@ -69,6 +69,7 @@ public: virtual void setMaxVisibleItems( int items ); virtual PlayableItem* itemFromIndex( const QModelIndex& index ) const { return sourceModel()->itemFromIndex( index ); } + virtual PlayableItem* itemFromQuery( const Tomahawk::query_ptr& query ) const { return sourceModel()->itemFromQuery( query ); } virtual Tomahawk::playlistinterface_ptr playlistInterface();