From 6a4bbb7ec105b50819b4b5d9231547938faede2f Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 14 Jul 2012 11:15:15 +0200 Subject: [PATCH] * Handle top loved tracks in LovedTracksItem. --- src/sourcetree/items/LovedTracksItem.cpp | 47 +++++++++++++++++++----- src/sourcetree/items/LovedTracksItem.h | 7 +++- 2 files changed, 43 insertions(+), 11 deletions(-) diff --git a/src/sourcetree/items/LovedTracksItem.cpp b/src/sourcetree/items/LovedTracksItem.cpp index 8b468b99c..4623b3437 100644 --- a/src/sourcetree/items/LovedTracksItem.cpp +++ b/src/sourcetree/items/LovedTracksItem.cpp @@ -24,7 +24,9 @@ #include "DropJob.h" #include "ViewManager.h" -#include "playlist/CustomPlaylistView.h" +#include "playlist/FlexibleView.h" +#include "playlist/TrackView.h" +#include "playlist/LovedTracksModel.h" #include "playlist/PlaylistLargeItemDelegate.h" using namespace Tomahawk; @@ -33,6 +35,7 @@ using namespace Tomahawk; LovedTracksItem::LovedTracksItem( SourcesModel* mdl, SourceTreeItem* parent ) : SourceTreeItem( mdl, parent, SourcesModel::LovedTracksPage ) , m_lovedTracksPage( 0 ) + , m_sortValue( -150 ) { } @@ -42,23 +45,49 @@ LovedTracksItem::~LovedTracksItem() } +QString +LovedTracksItem::text() const +{ + SourceItem* par = dynamic_cast< SourceItem* >( parent() ); + + if ( !par ) + return QString( tr( "Top Loved Tracks" ) ); + else + return QString( tr( "Loved Tracks" ) ); +} + + void LovedTracksItem::activate() { if ( !m_lovedTracksPage ) { SourceItem* par = dynamic_cast< SourceItem* >( parent() ); + FlexibleView* pv = new FlexibleView( ViewManager::instance()->widget() ); + pv->setPixmap( QPixmap( RESPATH "images/loved_playlist.png" ) ); + + LovedTracksModel* raModel = new LovedTracksModel( pv ); + raModel->setTitle( text() ); + + PlaylistLargeItemDelegate* del = new PlaylistLargeItemDelegate( PlaylistLargeItemDelegate::LovedTracks, pv->trackView(), pv->trackView()->proxyModel() ); + connect( del, SIGNAL( updateIndex( QModelIndex ) ), pv->trackView(), SLOT( update( QModelIndex ) ) ); + pv->trackView()->setItemDelegate( del ); + + pv->setEmptyTip( tr( "Sorry, we could not find any loved tracks!" ) ); if ( !par ) - return; + raModel->setDescription( tr( "The most loved tracks from all your friends" ) ); + else + { + if ( par->source()->isLocal() ) + raModel->setDescription( tr( "All of your loved tracks" ) ); + else + raModel->setDescription( tr( "All of %1's loved tracks" ).arg( par->source()->friendlyName() ) ); + } - CustomPlaylistView* view = new CustomPlaylistView( par->source().isNull() ? CustomPlaylistView::TopLovedTracks : - CustomPlaylistView::SourceLovedTracks, par->source(), ViewManager::instance()->widget() ); - PlaylistLargeItemDelegate* del = new PlaylistLargeItemDelegate(PlaylistLargeItemDelegate::LovedTracks, view, view->proxyModel() ); - connect( del, SIGNAL( updateIndex( QModelIndex ) ), view, SLOT( update( QModelIndex ) ) ); - view->setItemDelegate( del ); - view->setEmptyTip( tr( "Sorry, we could not find any loved tracks!" ) ); + pv->setPlayableModel( raModel ); + raModel->setSource( !par ? source_ptr() : par->source() ); - m_lovedTracksPage = view; + m_lovedTracksPage = pv; } ViewManager::instance()->show( m_lovedTracksPage ); diff --git a/src/sourcetree/items/LovedTracksItem.h b/src/sourcetree/items/LovedTracksItem.h index e2bec4ce1..81dae6016 100644 --- a/src/sourcetree/items/LovedTracksItem.h +++ b/src/sourcetree/items/LovedTracksItem.h @@ -33,20 +33,23 @@ public: LovedTracksItem( SourcesModel* model, SourceTreeItem* parent ); virtual ~LovedTracksItem(); - virtual QString text() const { return QString( tr( "Loved Tracks" ) ); } + virtual QString text() const; virtual QIcon icon() const { return QIcon( RESPATH "images/loved_playlist.png" ); } - virtual int peerSortValue() const { return -150; } + virtual int peerSortValue() const { return m_sortValue; } virtual void activate(); virtual bool willAcceptDrag( const QMimeData* data ) const; virtual DropTypes supportedDropTypes( const QMimeData* data ) const; virtual bool dropMimeData( const QMimeData* data, Qt::DropAction action ); + void setSortValue( int value ) { m_sortValue = value; } + private slots: void loveDroppedTracks( QList< Tomahawk::query_ptr > qrys ); private: Tomahawk::ViewPage* m_lovedTracksPage; + int m_sortValue; }; #endif