playlist_ptr ViewManager::playlistForPage( ViewPage* page ) const { playlist_ptr p; PlaylistViewPage* fv = dynamic_cast< PlaylistViewPage* >( page ); if ( fv && fv->view()->trackView()->model() ) { PlaylistModel* m = dynamic_cast< PlaylistModel* >( fv->view()->trackView()->model() ); if ( m && m->playlist() ) { p = m->playlist(); } } else if ( dynamic_cast< DynamicWidget* >( page ) ) p = dynamic_cast< DynamicWidget* >( page )->playlist(); return p; }
void LovedTracksItem::activate() { if ( !m_lovedTracksPage ) { SourceItem* par = dynamic_cast< SourceItem* >( parent() ); PlaylistViewPage* pv = new PlaylistViewPage( ViewManager::instance()->widget() ); pv->setPixmap( TomahawkUtils::defaultPixmap( TomahawkUtils::LovedPlaylist, TomahawkUtils::Original, QSize( 128, 128 ) ) ); TopLovedTracksModel* raModel = new TopLovedTracksModel( pv ); raModel->setTitle( text() ); TrackItemDelegate* del = new TrackItemDelegate( TrackItemDelegate::LovedTracks, pv->view()->trackView(), pv->view()->trackView()->proxyModel() ); pv->view()->trackView()->setPlaylistItemDelegate( del ); pv->view()->trackView()->setEmptyTip( tr( "Sorry, we could not find any of your Favorites!" ) ); if ( !par ) { raModel->setDescription( tr( "The most loved tracks from all your friends" ) ); pv->view()->setGuid( QString( "lovedtracks" ) ); } 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() ) ); pv->view()->setGuid( QString( "lovedtracks/%1" ).arg( par->source()->nodeId() ) ); } pv->view()->trackView()->setPlayableModel( raModel ); raModel->setSource( !par ? source_ptr() : par->source() ); m_lovedTracksPage = pv; } ViewManager::instance()->show( m_lovedTracksPage ); model()->linkSourceItemToPage( this, m_lovedTracksPage ); }
PlaylistViewPage* ViewManager::createPageForPlaylist( const playlist_ptr& playlist ) { PlaylistViewPage* view = new PlaylistViewPage(); PlaylistModel* model = new PlaylistModel(); // We need to set the model on the view before loading the playlist, so spinners & co are connected view->view()->trackView()->setPlayableModel( model ); model->loadPlaylist( playlist ); playlist->resolve(); return view; }
PlaylistViewPage* ViewManager::createPageForList( const QString& title, const QList< query_ptr >& queries ) { PlaylistViewPage* view = new PlaylistViewPage(); PlaylistModel* model = new PlaylistModel(); view->setTemporaryPage( true ); // We need to set the model on the view before loading the playlist, so spinners & co are connected view->view()->trackView()->setPlayableModel( model ); model->setTitle( title ); model->appendQueries( queries ); return view; }