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:
@@ -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 );
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user