1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-22 13:43:11 +02:00

* Handle top loved tracks in LovedTracksItem.

This commit is contained in:
Christian Muehlhaeuser
2012-07-14 11:15:15 +02:00
parent 124d31c542
commit 6a4bbb7ec1
2 changed files with 43 additions and 11 deletions

View File

@@ -24,7 +24,9 @@
#include "DropJob.h" #include "DropJob.h"
#include "ViewManager.h" #include "ViewManager.h"
#include "playlist/CustomPlaylistView.h" #include "playlist/FlexibleView.h"
#include "playlist/TrackView.h"
#include "playlist/LovedTracksModel.h"
#include "playlist/PlaylistLargeItemDelegate.h" #include "playlist/PlaylistLargeItemDelegate.h"
using namespace Tomahawk; using namespace Tomahawk;
@@ -33,6 +35,7 @@ using namespace Tomahawk;
LovedTracksItem::LovedTracksItem( SourcesModel* mdl, SourceTreeItem* parent ) LovedTracksItem::LovedTracksItem( SourcesModel* mdl, SourceTreeItem* parent )
: SourceTreeItem( mdl, parent, SourcesModel::LovedTracksPage ) : SourceTreeItem( mdl, parent, SourcesModel::LovedTracksPage )
, m_lovedTracksPage( 0 ) , 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 void
LovedTracksItem::activate() LovedTracksItem::activate()
{ {
if ( !m_lovedTracksPage ) if ( !m_lovedTracksPage )
{ {
SourceItem* par = dynamic_cast< SourceItem* >( parent() ); 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 ) 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 : pv->setPlayableModel( raModel );
CustomPlaylistView::SourceLovedTracks, par->source(), ViewManager::instance()->widget() ); raModel->setSource( !par ? source_ptr() : par->source() );
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!" ) );
m_lovedTracksPage = view; m_lovedTracksPage = pv;
} }
ViewManager::instance()->show( m_lovedTracksPage ); ViewManager::instance()->show( m_lovedTracksPage );

View File

@@ -33,20 +33,23 @@ public:
LovedTracksItem( SourcesModel* model, SourceTreeItem* parent ); LovedTracksItem( SourcesModel* model, SourceTreeItem* parent );
virtual ~LovedTracksItem(); 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 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 void activate();
virtual bool willAcceptDrag( const QMimeData* data ) const; virtual bool willAcceptDrag( const QMimeData* data ) const;
virtual DropTypes supportedDropTypes( const QMimeData* data ) const; virtual DropTypes supportedDropTypes( const QMimeData* data ) const;
virtual bool dropMimeData( const QMimeData* data, Qt::DropAction action ); virtual bool dropMimeData( const QMimeData* data, Qt::DropAction action );
void setSortValue( int value ) { m_sortValue = value; }
private slots: private slots:
void loveDroppedTracks( QList< Tomahawk::query_ptr > qrys ); void loveDroppedTracks( QList< Tomahawk::query_ptr > qrys );
private: private:
Tomahawk::ViewPage* m_lovedTracksPage; Tomahawk::ViewPage* m_lovedTracksPage;
int m_sortValue;
}; };
#endif #endif