From c51ca312db4c993a5aecbe50dec85fdd61ac38f7 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser <muesli@gmail.com> Date: Sat, 22 Dec 2012 14:37:47 +0100 Subject: [PATCH] * Properly implemented SingleTrackPlaylistInterface. --- src/libtomahawk/CMakeLists.txt | 2 +- .../playlist/SingleTrackPlaylistInterface.cpp | 95 +++++++++++++++++++ .../playlist/SingleTrackPlaylistInterface.h | 18 ++-- 3 files changed, 103 insertions(+), 12 deletions(-) create mode 100644 src/libtomahawk/playlist/SingleTrackPlaylistInterface.cpp diff --git a/src/libtomahawk/CMakeLists.txt b/src/libtomahawk/CMakeLists.txt index 6c0109518..4322ea769 100644 --- a/src/libtomahawk/CMakeLists.txt +++ b/src/libtomahawk/CMakeLists.txt @@ -81,7 +81,7 @@ set( libGuiSources playlist/PlaylistLargeItemDelegate.cpp playlist/PlaylistChartItemDelegate.cpp playlist/PlayableItem.cpp - playlist/SingleTrackPlaylistInterface.h + playlist/SingleTrackPlaylistInterface.cpp playlist/dynamic/DynamicPlaylist.cpp playlist/dynamic/DynamicView.cpp diff --git a/src/libtomahawk/playlist/SingleTrackPlaylistInterface.cpp b/src/libtomahawk/playlist/SingleTrackPlaylistInterface.cpp new file mode 100644 index 000000000..54e9bf821 --- /dev/null +++ b/src/libtomahawk/playlist/SingleTrackPlaylistInterface.cpp @@ -0,0 +1,95 @@ +/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> === + * + * Copyright 2012 Leo Franchi <lfranchi@kde.org> + * Copyright 2012, Christian Muehlhaeuser <muesli@tomahawk-player.org> + * + * Tomahawk is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Tomahawk is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Tomahawk. If not, see <http://www.gnu.org/licenses/>. + */ + + +#include "SingleTrackPlaylistInterface.h" + +namespace Tomahawk +{ + +SingleTrackPlaylistInterface::SingleTrackPlaylistInterface( const Tomahawk::query_ptr& query ) + : PlaylistInterface() + , m_track( query ) +{ +} + + +Tomahawk::result_ptr +SingleTrackPlaylistInterface::currentItem() const +{ + if ( m_track && m_track->numResults() ) + return m_track->results().first(); + + return result_ptr(); +} + + +Tomahawk::result_ptr +SingleTrackPlaylistInterface::resultAt( qint64 index ) const +{ + if ( index == 0 && m_track && m_track->numResults() ) + return m_track->results().first(); + + return result_ptr(); +} + + +Tomahawk::query_ptr +SingleTrackPlaylistInterface::queryAt( qint64 index ) const +{ + if ( index == 0 ) + return m_track; + + return query_ptr(); +} + + +qint64 +SingleTrackPlaylistInterface::indexOfResult( const Tomahawk::result_ptr& result ) const +{ + if ( m_track && m_track->results().contains( result ) ) + return 0; + + return -1; +} + + +qint64 +SingleTrackPlaylistInterface::indexOfQuery( const Tomahawk::query_ptr& query ) const +{ + if ( m_track == query ) + return 0; + + return -1; +} + + +QList< Tomahawk::query_ptr > +SingleTrackPlaylistInterface::tracks() const +{ + QList< query_ptr > ql; + + if ( m_track ) + ql << m_track; + + return ql; +} + +} + diff --git a/src/libtomahawk/playlist/SingleTrackPlaylistInterface.h b/src/libtomahawk/playlist/SingleTrackPlaylistInterface.h index f692e7457..494714b43 100644 --- a/src/libtomahawk/playlist/SingleTrackPlaylistInterface.h +++ b/src/libtomahawk/playlist/SingleTrackPlaylistInterface.h @@ -32,22 +32,18 @@ class DLLEXPORT SingleTrackPlaylistInterface : public PlaylistInterface { Q_OBJECT public: - explicit SingleTrackPlaylistInterface( const query_ptr& query ) - : PlaylistInterface() - , m_track( query ) - { - } + explicit SingleTrackPlaylistInterface( const query_ptr& query ); query_ptr track() const { return m_track; } void setQuery( const query_ptr& track ) { m_track = track; } virtual void setCurrentIndex( qint64 index ) { Q_UNUSED( index ); } - virtual result_ptr currentItem() const { return result_ptr(); } + virtual result_ptr currentItem() const; - virtual Tomahawk::result_ptr resultAt( qint64 index ) const { Q_UNUSED( index ); Q_ASSERT( false ); return Tomahawk::result_ptr(); } - virtual Tomahawk::query_ptr queryAt( qint64 index ) const { Q_UNUSED( index ); Q_ASSERT( false ); return Tomahawk::query_ptr(); } - virtual qint64 indexOfResult( const Tomahawk::result_ptr& result ) const { Q_UNUSED( result ); Q_ASSERT( false ); return -1; } - virtual qint64 indexOfQuery( const Tomahawk::query_ptr& query ) const { Q_UNUSED( query ); Q_ASSERT( false ); return -1; } + virtual Tomahawk::result_ptr resultAt( qint64 index ) const; + virtual Tomahawk::query_ptr queryAt( qint64 index ) const; + virtual qint64 indexOfResult( const Tomahawk::result_ptr& result ) const; + virtual qint64 indexOfQuery( const Tomahawk::query_ptr& query ) const; virtual PlaylistModes::RepeatMode repeatMode() const { return PlaylistModes::NoRepeat; } virtual void setRepeatMode( PlaylistModes::RepeatMode ) {} @@ -57,7 +53,7 @@ public: virtual qint64 siblingIndex( int, qint64 rootIndex = -1 ) const { Q_UNUSED( rootIndex ); return -1; } virtual int trackCount() const { return 1; } - virtual QList< query_ptr > tracks() const { return QList< query_ptr >(); } + virtual QList< query_ptr > tracks() const; private: query_ptr m_track;