From c0f87542b779e44ae7a39f2f60b5c0ba78e041ef Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Mon, 17 Jan 2011 07:52:04 +0100 Subject: [PATCH] * Little PlaylistModel cleanup. --- src/infowidgets/sourceinfowidget.cpp | 2 +- src/playlist/collectionflatmodel.h | 2 +- src/playlist/playlistmanager.cpp | 45 ++++++++++++++++++++-- src/playlist/playlistmanager.h | 2 + src/playlist/playlistmodel.cpp | 56 ++++++++++++++-------------- src/playlist/playlistmodel.h | 8 ++-- src/playlist/trackmodel.h | 2 +- src/playlist/trackview.cpp | 2 +- src/tomahawkwindow.cpp | 10 ++--- src/tomahawkwindow.ui | 7 +++- src/widgets/newplaylistwidget.cpp | 2 +- src/widgets/welcomewidget.cpp | 2 +- 12 files changed, 89 insertions(+), 51 deletions(-) diff --git a/src/infowidgets/sourceinfowidget.cpp b/src/infowidgets/sourceinfowidget.cpp index 8ab452ef7..f2845b697 100644 --- a/src/infowidgets/sourceinfowidget.cpp +++ b/src/infowidgets/sourceinfowidget.cpp @@ -54,7 +54,7 @@ SourceInfoWidget::~SourceInfoWidget() void SourceInfoWidget::onPlaybackFinished( const Tomahawk::query_ptr& query ) { - m_historyModel->insertTrack( 0, query ); + m_historyModel->insert( 0, query ); } diff --git a/src/playlist/collectionflatmodel.h b/src/playlist/collectionflatmodel.h index 25cb62f23..529631e4f 100644 --- a/src/playlist/collectionflatmodel.h +++ b/src/playlist/collectionflatmodel.h @@ -35,7 +35,7 @@ public: void addFilteredCollection( const Tomahawk::collection_ptr& collection, unsigned int amount, DatabaseCommand_AllTracks::SortOrder order ); - virtual void appendTrack( const Tomahawk::query_ptr& query ) {} + virtual void append( const Tomahawk::query_ptr& query ) {} signals: void repeatModeChanged( PlaylistInterface::RepeatMode mode ); diff --git a/src/playlist/playlistmanager.cpp b/src/playlist/playlistmanager.cpp index d40e873d9..257410a8d 100644 --- a/src/playlist/playlistmanager.cpp +++ b/src/playlist/playlistmanager.cpp @@ -21,8 +21,6 @@ #include "infowidgets/sourceinfowidget.h" -#include "widgets/welcomewidget.h" - #define FILTER_TIMEOUT 280 @@ -67,7 +65,10 @@ PlaylistManager::PlaylistManager( QObject* parent ) m_stack->addWidget( m_superCollectionView ); m_stack->addWidget( m_superAlbumView ); - show( new WelcomeWidget() ); + m_stack->setContentsMargins( 0, 0, 0, 0 ); + m_widget->setContentsMargins( 0, 0, 0, 0 ); + m_widget->layout()->setContentsMargins( 0, 0, 0, 0 ); + m_widget->layout()->setMargin( 0 ); connect( &m_filterTimer, SIGNAL( timeout() ), SLOT( applyFilter() ) ); } @@ -125,6 +126,42 @@ PlaylistManager::show( const Tomahawk::playlist_ptr& playlist ) } +bool +PlaylistManager::show( const Tomahawk::artist_ptr& artist ) +{ + qDebug() << Q_FUNC_INFO << &artist << artist.data(); + unlinkPlaylist(); + + if ( !m_artistViews.contains( artist ) ) + { + PlaylistView* view = new PlaylistView(); + PlaylistModel* model = new PlaylistModel(); + view->setModel( model ); + model->append( artist ); + + m_currentInterface = view->proxyModel(); + m_artistViews.insert( artist, view ); + + m_stack->addWidget( view ); + m_stack->setCurrentWidget( view ); + } + else + { + PlaylistView* view = m_artistViews.value( artist ); + m_stack->setCurrentWidget( view ); + m_currentInterface = view->proxyModel(); + } + + m_superCollectionVisible = false; + m_statsAvailable = false; + m_modesAvailable = false; + linkPlaylist(); + + emit numSourcesChanged( 1 ); + return true; +} + + bool PlaylistManager::show( const Tomahawk::album_ptr& album ) { @@ -136,7 +173,7 @@ PlaylistManager::show( const Tomahawk::album_ptr& album ) PlaylistView* view = new PlaylistView(); PlaylistModel* model = new PlaylistModel(); view->setModel( model ); - model->appendAlbum( album ); + model->append( album ); m_currentInterface = view->proxyModel(); m_albumViews.insert( album, view ); diff --git a/src/playlist/playlistmanager.h b/src/playlist/playlistmanager.h index 15ae57653..729472bbc 100644 --- a/src/playlist/playlistmanager.h +++ b/src/playlist/playlistmanager.h @@ -36,6 +36,7 @@ public: bool isSuperCollectionVisible() const { return true; } bool show( const Tomahawk::playlist_ptr& playlist ); + bool show( const Tomahawk::artist_ptr& artist ); bool show( const Tomahawk::album_ptr& album ); bool show( const Tomahawk::collection_ptr& collection ); bool show( const Tomahawk::source_ptr& source ); @@ -97,6 +98,7 @@ private: QHash< Tomahawk::collection_ptr, AlbumView* > m_collectionAlbumViews; QHash< Tomahawk::playlist_ptr, PlaylistView* > m_playlistViews; + QHash< Tomahawk::artist_ptr, PlaylistView* > m_artistViews; QHash< Tomahawk::album_ptr, PlaylistView* > m_albumViews; QHash< Tomahawk::source_ptr, SourceInfoWidget* > m_sourceViews; diff --git a/src/playlist/playlistmodel.cpp b/src/playlist/playlistmodel.cpp index 8fef56fa4..fc0e92f6d 100644 --- a/src/playlist/playlistmodel.cpp +++ b/src/playlist/playlistmodel.cpp @@ -94,32 +94,6 @@ PlaylistModel::loadPlaylist( const Tomahawk::playlist_ptr& playlist ) } -void -PlaylistModel::appendAlbum( const Tomahawk::album_ptr& album ) -{ - if ( album.isNull() ) - return; - - connect( album.data(), SIGNAL( tracksAdded( QList, Tomahawk::collection_ptr ) ), - SLOT( onTracksAdded( QList, Tomahawk::collection_ptr ) ) ); - - onTracksAdded( album->tracks(), album->collection() ); -} - - -void -PlaylistModel::appendArtist( const Tomahawk::artist_ptr& artist ) -{ - if ( artist.isNull() ) - return; - - connect( artist.data(), SIGNAL( tracksAdded( QList, Tomahawk::collection_ptr ) ), - SLOT( onTracksAdded( QList, Tomahawk::collection_ptr ) ) ); - - onTracksAdded( artist->tracks(), artist->collection() ); -} - - void PlaylistModel::loadHistory( const Tomahawk::source_ptr& source, unsigned int amount ) { @@ -145,7 +119,7 @@ PlaylistModel::loadHistory( const Tomahawk::source_ptr& source, unsigned int amo void -PlaylistModel::appendTrack( const Tomahawk::query_ptr& query ) +PlaylistModel::append( const Tomahawk::query_ptr& query ) { if ( query.isNull() ) return; @@ -158,7 +132,33 @@ PlaylistModel::appendTrack( const Tomahawk::query_ptr& query ) void -PlaylistModel::insertTrack( unsigned int row, const Tomahawk::query_ptr& query ) +PlaylistModel::append( const Tomahawk::album_ptr& album ) +{ + if ( album.isNull() ) + return; + + connect( album.data(), SIGNAL( tracksAdded( QList, Tomahawk::collection_ptr ) ), + SLOT( onTracksAdded( QList, Tomahawk::collection_ptr ) ) ); + + onTracksAdded( album->tracks(), album->collection() ); +} + + +void +PlaylistModel::append( const Tomahawk::artist_ptr& artist ) +{ + if ( artist.isNull() ) + return; + + connect( artist.data(), SIGNAL( tracksAdded( QList, Tomahawk::collection_ptr ) ), + SLOT( onTracksAdded( QList, Tomahawk::collection_ptr ) ) ); + + onTracksAdded( artist->tracks(), artist->collection() ); +} + + +void +PlaylistModel::insert( unsigned int row, const Tomahawk::query_ptr& query ) { if ( query.isNull() ) return; diff --git a/src/playlist/playlistmodel.h b/src/playlist/playlistmodel.h index b29bb4d21..3f68ef30b 100644 --- a/src/playlist/playlistmodel.h +++ b/src/playlist/playlistmodel.h @@ -33,11 +33,11 @@ public: void loadPlaylist( const Tomahawk::playlist_ptr& playlist ); void loadHistory( const Tomahawk::source_ptr& source, unsigned int amount = 100 ); - void appendTrack( const Tomahawk::query_ptr& query ); - void appendAlbum( const Tomahawk::album_ptr& album ); - void appendArtist( const Tomahawk::artist_ptr& artist ); + void append( const Tomahawk::query_ptr& query ); + void append( const Tomahawk::album_ptr& album ); + void append( const Tomahawk::artist_ptr& artist ); - void insertTrack( unsigned int row, const Tomahawk::query_ptr& query ); + void insert( unsigned int row, const Tomahawk::query_ptr& query ); virtual void removeIndex( const QModelIndex& index, bool moreToCome = false ); diff --git a/src/playlist/trackmodel.h b/src/playlist/trackmodel.h index 7bb11f93a..8c5094de2 100644 --- a/src/playlist/trackmodel.h +++ b/src/playlist/trackmodel.h @@ -51,7 +51,7 @@ public: virtual PlaylistInterface::RepeatMode repeatMode() const { return PlaylistInterface::NoRepeat; } virtual bool shuffled() const { return false; } - virtual void appendTrack( const Tomahawk::query_ptr& query ) = 0; + virtual void append( const Tomahawk::query_ptr& query ) = 0; PlItem* itemFromIndex( const QModelIndex& index ) const; diff --git a/src/playlist/trackview.cpp b/src/playlist/trackview.cpp index 5e769039f..0bc0ab27d 100644 --- a/src/playlist/trackview.cpp +++ b/src/playlist/trackview.cpp @@ -141,7 +141,7 @@ TrackView::addItemsToQueue() PlItem* item = model()->itemFromIndex( proxyModel()->mapToSource( idx ) ); if ( item && item->query()->numResults() ) { - APP->playlistManager()->queue()->model()->appendTrack( item->query() ); + APP->playlistManager()->queue()->model()->append( item->query() ); APP->playlistManager()->showQueue(); } } diff --git a/src/tomahawkwindow.cpp b/src/tomahawkwindow.cpp index 622c35795..2ad525efd 100644 --- a/src/tomahawkwindow.cpp +++ b/src/tomahawkwindow.cpp @@ -22,6 +22,7 @@ #include "sip/SipHandler.h" #include "widgets/newplaylistwidget.h" +#include "widgets/welcomewidget.h" #include "audiocontrols.h" #include "network/controlconnection.h" @@ -56,13 +57,6 @@ TomahawkWindow::TomahawkWindow( QWidget* parent ) ui->setupUi( this ); -#ifndef Q_WS_MAC - ui->centralWidget->layout()->setContentsMargins( 4, 4, 4, 2 ); -#else -// ui->playlistView->setAttribute( Qt::WA_MacShowFocusRect, 0 ); - ui->sourceTreeView->setAttribute( Qt::WA_MacShowFocusRect, 0 ); -#endif - delete ui->playlistWidget; ui->splitter->addWidget( m_playlistManager->widget() ); ui->splitter->setStretchFactor( 0, 1 ); @@ -86,6 +80,8 @@ TomahawkWindow::TomahawkWindow( QWidget* parent ) loadSettings(); setupSignals(); + + m_playlistManager->show( new WelcomeWidget() ); } diff --git a/src/tomahawkwindow.ui b/src/tomahawkwindow.ui index bbd71a4ae..d2b1bbad0 100644 --- a/src/tomahawkwindow.ui +++ b/src/tomahawkwindow.ui @@ -15,17 +15,20 @@ + + 0 + Qt::Horizontal - + - + diff --git a/src/widgets/newplaylistwidget.cpp b/src/widgets/newplaylistwidget.cpp index c7af50674..94bcd7ac9 100644 --- a/src/widgets/newplaylistwidget.cpp +++ b/src/widgets/newplaylistwidget.cpp @@ -100,7 +100,7 @@ NewPlaylistWidget::suggestionsFound() QList ql; foreach( const Tomahawk::plentry_ptr& entry, m_entries ) { - m_suggestionsModel->appendTrack( entry->query() ); + m_suggestionsModel->append( entry->query() ); ql.append( entry->query() ); } diff --git a/src/widgets/welcomewidget.cpp b/src/widgets/welcomewidget.cpp index bb49e2b2f..7e0b12de3 100644 --- a/src/widgets/welcomewidget.cpp +++ b/src/widgets/welcomewidget.cpp @@ -69,7 +69,7 @@ WelcomeWidget::onSourceAdded( const Tomahawk::source_ptr& source ) void WelcomeWidget::onPlaybackFinished( const Tomahawk::query_ptr& query ) { - m_tracksModel->insertTrack( 0, query ); + m_tracksModel->insert( 0, query ); }