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

* Playlists are now displayed as FlexibleViews.

This commit is contained in:
Christian Muehlhaeuser
2012-07-02 23:11:11 +02:00
parent 01fb91ac59
commit 1761f7af0c
2 changed files with 30 additions and 18 deletions

View File

@@ -27,6 +27,7 @@
#include "infobar/InfoBar.h"
#include "topbar/TopBar.h"
#include "FlexibleView.h"
#include "TreeModel.h"
#include "PlaylistModel.h"
#include "PlaylistView.h"
@@ -94,6 +95,7 @@ ViewManager::ViewManager( QObject* parent )
m_widget->layout()->addWidget( m_contextWidget );
m_superCollectionView = new TreeView();
m_superCollectionView->proxyModel()->setStyle( PlayableProxyModel::Collection );
m_superCollectionModel = new TreeModel( m_superCollectionView );
m_superCollectionView->setTreeModel( m_superCollectionModel );
m_superCollectionView->setShowModes( false );
@@ -137,16 +139,20 @@ ViewManager::~ViewManager()
}
PlaylistView*
ViewManager::createPageForPlaylist( const playlist_ptr& pl )
FlexibleView*
ViewManager::createPageForPlaylist( const playlist_ptr& playlist )
{
PlaylistView* view = new PlaylistView();
FlexibleView* view = new FlexibleView();
PlaylistModel* model = new PlaylistModel();
view->setPlaylistModel( model );
model->loadPlaylist( pl );
pl->resolve();
view->setPlayableModel( model );
PlaylistView* pv = new PlaylistView();
pv->setPlaylistModel( model );
view->setDetailedView( pv );
model->loadPlaylist( playlist );
playlist->resolve();
m_playlistViews.insert( pl, view );
return view;
}
@@ -170,11 +176,12 @@ ViewManager::playlistForPage( ViewPage* page ) const
Tomahawk::ViewPage*
ViewManager::show( const Tomahawk::playlist_ptr& playlist )
{
PlaylistView* view;
FlexibleView* view;
if ( !m_playlistViews.contains( playlist ) || m_playlistViews.value( playlist ).isNull() )
{
view = createPageForPlaylist( playlist );
m_playlistViews.insert( playlist, view );
}
else
{
@@ -182,7 +189,6 @@ ViewManager::show( const Tomahawk::playlist_ptr& playlist )
}
setPage( view );
emit numSourcesChanged( SourceList::instance()->count() );
return view;
@@ -303,6 +309,7 @@ ViewManager::show( const Tomahawk::collection_ptr& collection )
if ( !m_treeViews.contains( collection ) || m_treeViews.value( collection ).isNull() )
{
view = new TreeView();
view->proxyModel()->setStyle( PlayableProxyModel::Collection );
TreeModel* model = new TreeModel();
view->setTreeModel( model );
@@ -486,7 +493,7 @@ ViewManager::showRecentPlaysPage()
RecentlyPlayedModel* raModel = new RecentlyPlayedModel( pv );
raModel->setTitle( tr( "Recently Played Tracks" ) );
raModel->setDescription( tr( "Recently played tracks from all your friends" ) );
raModel->setStyle( PlayableModel::Large );
pv->proxyModel()->setStyle( PlayableProxyModel::Large );
PlaylistLargeItemDelegate* del = new PlaylistLargeItemDelegate( PlaylistLargeItemDelegate::RecentlyPlayed, pv, pv->proxyModel() );
connect( del, SIGNAL( updateIndex( QModelIndex ) ), pv, SLOT( update( QModelIndex ) ) );
@@ -737,12 +744,16 @@ ViewManager::saveCurrentPlaylistSettings()
TomahawkSettings* s = TomahawkSettings::instance();
Tomahawk::playlist_ptr pl = playlistForInterface( currentPlaylistInterface() );
if ( !pl.isNull() ) {
if ( !pl.isNull() )
{
s->setShuffleState( pl->guid(), currentPlaylistInterface()->shuffled() );
s->setRepeatMode( pl->guid(), currentPlaylistInterface()->repeatMode() );
} else {
}
else
{
Tomahawk::dynplaylist_ptr dynPl = dynamicPlaylistForInterface( currentPlaylistInterface() );
if ( !dynPl.isNull() ) {
if ( !dynPl.isNull() )
{
s->setShuffleState( dynPl->guid(), currentPlaylistInterface()->shuffled() );
s->setRepeatMode( dynPl->guid(), currentPlaylistInterface()->repeatMode() );
}
@@ -977,7 +988,7 @@ ViewManager::currentPage() const
Tomahawk::playlist_ptr
ViewManager::playlistForInterface( Tomahawk::playlistinterface_ptr interface ) const
{
foreach ( QWeakPointer<PlaylistView> view, m_playlistViews.values() )
foreach ( QWeakPointer<FlexibleView> view, m_playlistViews.values() )
{
if ( !view.isNull() && view.data()->playlistInterface() == interface )
{

View File

@@ -40,6 +40,7 @@ class ArtistInfoWidget;
class TreeView;
class CollectionModel;
class ContextWidget;
class FlexibleView;
class PlaylistModel;
class PlaylistView;
class TrackProxyModel;
@@ -104,7 +105,7 @@ public:
// only use this is you need to create a playlist and show it directly and want it to be
// linked to the sidebar. call it right after creating the playlist
PlaylistView* createPageForPlaylist( const Tomahawk::playlist_ptr& pl );
FlexibleView* createPageForPlaylist( const Tomahawk::playlist_ptr& playlist );
bool isTomahawkLoaded() const { return m_loaded; }
@@ -132,7 +133,7 @@ signals:
void hideQueueRequested();
void tomahawkLoaded();
void historyBackAvailable( bool avail );
void historyForwardAvailable( bool avail );
@@ -156,7 +157,7 @@ public slots:
void historyBack();
void historyForward();
QList< Tomahawk::ViewPage* > historyPages() const;
void destroyPage( Tomahawk::ViewPage* page );
@@ -220,7 +221,7 @@ private:
QHash< Tomahawk::artist_ptr, QWeakPointer<ArtistInfoWidget> > m_artistViews;
QHash< Tomahawk::album_ptr, QWeakPointer<AlbumInfoWidget> > m_albumViews;
QHash< Tomahawk::query_ptr, QWeakPointer<TrackInfoWidget> > m_trackViews;
QHash< Tomahawk::playlist_ptr, QWeakPointer<PlaylistView> > m_playlistViews;
QHash< Tomahawk::playlist_ptr, QWeakPointer<FlexibleView> > m_playlistViews;
QHash< Tomahawk::source_ptr, QWeakPointer<SourceInfoWidget> > m_sourceViews;
QList<Tomahawk::ViewPage*> m_pageHistoryBack;