1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-06 22:26:32 +02:00

only keep one playlistview and playlist model in memory at once

This commit is contained in:
Leo Franchi
2010-12-09 21:52:47 -05:00
parent 6faaf5343b
commit f4be2b5067
3 changed files with 26 additions and 43 deletions

View File

@@ -63,7 +63,11 @@ PlaylistManager::PlaylistManager( QObject* parent )
m_stack->addWidget( m_superCollectionView ); m_stack->addWidget( m_superCollectionView );
m_stack->addWidget( m_superAlbumView ); m_stack->addWidget( m_superAlbumView );
m_currentInterface = m_superCollectionView->proxyModel(); m_currentInterface = m_superCollectionView->proxyModel();
m_playlistView = new PlaylistView();
m_stack->addWidget( m_playlistView );
m_playlistModel = new PlaylistModel();
connect( &m_filterTimer, SIGNAL( timeout() ), SLOT( applyFilter() ) ); connect( &m_filterTimer, SIGNAL( timeout() ), SLOT( applyFilter() ) );
} }
@@ -85,29 +89,23 @@ bool
PlaylistManager::show( const Tomahawk::playlist_ptr& playlist ) PlaylistManager::show( const Tomahawk::playlist_ptr& playlist )
{ {
unlinkPlaylist(); unlinkPlaylist();
if ( !m_playlistViews.contains( playlist ) ) m_playlistModel->loadPlaylist( playlist );
m_playlistView->setModel( m_playlistModel );
if ( !m_loadedPlaylists.contains( playlist ) )
{ {
PlaylistView* view = new PlaylistView();
PlaylistModel* model = new PlaylistModel();
view->setModel( model );
model->loadPlaylist( playlist );
playlist->resolve(); playlist->resolve();
m_currentInterface = view->proxyModel();
m_playlistViews.insert( playlist, view );
m_stack->addWidget( view );
m_stack->setCurrentWidget( view );
} }
else else
{ {
PlaylistView* view = m_playlistViews.value( playlist ); m_loadedPlaylists << playlist;
m_stack->setCurrentWidget( view );
m_currentInterface = view->proxyModel();
} }
m_currentInterface = m_playlistView->proxyModel();
m_stack->setCurrentWidget( m_playlistView );
m_superCollectionVisible = false; m_superCollectionVisible = false;
m_statsAvailable = true; m_statsAvailable = true;
m_modesAvailable = false; m_modesAvailable = false;
@@ -124,26 +122,11 @@ PlaylistManager::show( const Tomahawk::album_ptr& album )
qDebug() << Q_FUNC_INFO << &album << album.data(); qDebug() << Q_FUNC_INFO << &album << album.data();
unlinkPlaylist(); unlinkPlaylist();
if ( !m_albumViews.contains( album ) ) m_playlistModel->loadAlbum( album );
{ m_stack->setCurrentWidget( m_playlistView );
PlaylistView* view = new PlaylistView();
PlaylistModel* model = new PlaylistModel(); m_currentInterface = m_playlistView->proxyModel();
view->setModel( model );
model->loadAlbum( album );
m_currentInterface = view->proxyModel();
m_albumViews.insert( album, view );
m_stack->addWidget( view );
m_stack->setCurrentWidget( view );
}
else
{
PlaylistView* view = m_albumViews.value( album );
m_stack->setCurrentWidget( view );
m_currentInterface = view->proxyModel();
}
m_superCollectionVisible = false; m_superCollectionVisible = false;
m_statsAvailable = false; m_statsAvailable = false;
m_modesAvailable = false; m_modesAvailable = false;

View File

@@ -85,15 +85,15 @@ private:
AlbumModel* m_superAlbumModel; AlbumModel* m_superAlbumModel;
AlbumView* m_superAlbumView; AlbumView* m_superAlbumView;
CollectionFlatModel* m_superCollectionFlatModel; CollectionFlatModel* m_superCollectionFlatModel;
CollectionView* m_superCollectionView; CollectionView* m_superCollectionView;
PlaylistView* m_playlistView;
QList<Tomahawk::playlist_ptr> m_loadedPlaylists;
QList< Tomahawk::collection_ptr > m_superCollections; QList< Tomahawk::collection_ptr > m_superCollections;
PlaylistModel* m_playlistModel;
QHash< Tomahawk::collection_ptr, CollectionView* > m_collectionViews; QHash< Tomahawk::collection_ptr, CollectionView* > m_collectionViews;
QHash< Tomahawk::collection_ptr, AlbumView* > m_collectionAlbumViews; QHash< Tomahawk::collection_ptr, AlbumView* > m_collectionAlbumViews;
QHash< Tomahawk::playlist_ptr, PlaylistView* > m_playlistViews;
QHash< Tomahawk::album_ptr, PlaylistView* > m_albumViews;
QHash< Tomahawk::source_ptr, SourceInfoWidget* > m_sourceViews; QHash< Tomahawk::source_ptr, SourceInfoWidget* > m_sourceViews;
PlaylistInterface* m_currentInterface; PlaylistInterface* m_currentInterface;

View File

@@ -96,7 +96,7 @@ PlaylistModel::loadAlbum( const Tomahawk::album_ptr& album )
{ {
if ( album.isNull() ) if ( album.isNull() )
return; return;
if ( rowCount( QModelIndex() ) ) if ( rowCount( QModelIndex() ) )
{ {
emit beginRemoveRows( QModelIndex(), 0, rowCount( QModelIndex() ) - 1 ); emit beginRemoveRows( QModelIndex(), 0, rowCount( QModelIndex() ) - 1 );