diff --git a/src/libtomahawk/PlaylistInterface.cpp b/src/libtomahawk/PlaylistInterface.cpp index c7529fe06..928c19174 100644 --- a/src/libtomahawk/PlaylistInterface.cpp +++ b/src/libtomahawk/PlaylistInterface.cpp @@ -79,6 +79,42 @@ PlaylistInterface::siblingResult( int itemsAway ) const } +int +PlaylistInterface::posOfResult( const Tomahawk::result_ptr& result ) const +{ + const QList< Tomahawk::query_ptr > queries = tracks(); + + int res = 0; + foreach ( const Tomahawk::query_ptr& query, queries ) + { + if ( query && query->numResults() && query->results().contains( result ) ) + return res; + + res++; + } + + return -1; +} + + +int +PlaylistInterface::posOfQuery( const Tomahawk::query_ptr& query ) const +{ + const QList< Tomahawk::query_ptr > queries = tracks(); + + int res = 0; + foreach ( const Tomahawk::query_ptr& q, queries ) + { + if ( query == q ) + return res; + + res++; + } + + return -1; +} + + QList PlaylistInterface::filterTracks( const QList& queries ) { diff --git a/src/libtomahawk/PlaylistInterface.h b/src/libtomahawk/PlaylistInterface.h index b7c69abc4..8475b58c5 100644 --- a/src/libtomahawk/PlaylistInterface.h +++ b/src/libtomahawk/PlaylistInterface.h @@ -38,9 +38,9 @@ public: explicit PlaylistInterface(); virtual ~PlaylistInterface(); - const QString id() { return m_id; } + const QString id() const { return m_id; } - virtual QList< Tomahawk::query_ptr > tracks() = 0; + virtual QList< Tomahawk::query_ptr > tracks() const = 0; virtual bool isFinished() const { return m_finished; } virtual int trackCount() const = 0; @@ -53,7 +53,7 @@ public: virtual Tomahawk::result_ptr nextResult() const; virtual Tomahawk::result_ptr previousResult() const; - virtual qint64 siblingIndex( int itemsAway ) const = 0; + virtual qint64 siblingIndex( int itemsAway, qint64 rootIndex = -1 ) const = 0; virtual Tomahawk::result_ptr siblingResult( int itemsAway ) const; virtual Tomahawk::result_ptr resultAt( qint64 index ) const = 0; @@ -61,6 +61,9 @@ public: virtual qint64 indexOfResult( const Tomahawk::result_ptr& result ) const = 0; virtual qint64 indexOfQuery( const Tomahawk::query_ptr& query ) const = 0; + virtual int posOfResult( const Tomahawk::result_ptr& result ) const; + virtual int posOfQuery( const Tomahawk::query_ptr& query ) const; + virtual PlaylistModes::RepeatMode repeatMode() const = 0; virtual bool shuffled() const = 0;