From 40d3b87af56d56bd9d76dfe8d79e4630fb7a6348 Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Mon, 2 May 2011 18:22:16 -0400 Subject: [PATCH] make welcomewidget and recently played playlist behave --- src/libtomahawk/viewmanager.cpp | 23 ++++++++++++++++++++--- src/libtomahawk/viewmanager.h | 2 ++ src/libtomahawk/widgets/welcomewidget.cpp | 6 +++++- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/src/libtomahawk/viewmanager.cpp b/src/libtomahawk/viewmanager.cpp index fa55d13d8..e6abf3250 100644 --- a/src/libtomahawk/viewmanager.cpp +++ b/src/libtomahawk/viewmanager.cpp @@ -121,6 +121,8 @@ ViewManager::ViewManager( QObject* parent ) m_widget->layout()->setMargin( 0 ); m_widget->layout()->setSpacing( 0 ); + connect( AudioEngine::instance(), SIGNAL( playlistChanged( PlaylistInterface* ) ), this, SLOT( playlistInterfaceChanged( PlaylistInterface* ) ) ); + connect( &m_filterTimer, SIGNAL( timeout() ), SLOT( applyFilter() ) ); connect( m_topbar, SIGNAL( filterTextChanged( QString ) ), @@ -180,7 +182,7 @@ ViewManager::show( const Tomahawk::playlist_ptr& playlist ) } setPage( view ); - TomahawkSettings::instance()->appendRecentlyPlayedPlaylist( playlist ); + emit numSourcesChanged( SourceList::instance()->count() ); return view; @@ -206,7 +208,6 @@ ViewManager::show( const Tomahawk::dynplaylist_ptr& playlist ) else m_queueView->show(); - TomahawkSettings::instance()->appendRecentlyPlayedPlaylist( playlist ); emit numSourcesChanged( SourceList::instance()->count() ); return m_dynamicWidgets.value( playlist ); @@ -421,6 +422,22 @@ ViewManager::showSuperCollection() return shown; } +void +ViewManager::playlistInterfaceChanged( PlaylistInterface* interface ) +{ + playlist_ptr pl = playlistForInterface( interface ); + if ( !pl.isNull() ) + { + TomahawkSettings::instance()->appendRecentlyPlayedPlaylist( pl ); + } else + { + pl = dynamicPlaylistForInterface( interface ); + if ( !pl.isNull() ) + TomahawkSettings::instance()->appendRecentlyPlayedPlaylist( pl ); + } +} + + Tomahawk::ViewPage* ViewManager::showWelcomePage() { @@ -599,7 +616,7 @@ ViewManager::setPage( ViewPage* page, bool trackHistory ) qDebug() << "View page shown:" << page->title(); emit viewPageActivated( page ); - if ( !AudioEngine::instance()->isPlaying() ) + if ( !AudioEngine::instance()->playlist() ) AudioEngine::instance()->setPlaylist( currentPlaylistInterface() ); // UGH! diff --git a/src/libtomahawk/viewmanager.h b/src/libtomahawk/viewmanager.h index 65b4f6fa3..9ac8bc63d 100644 --- a/src/libtomahawk/viewmanager.h +++ b/src/libtomahawk/viewmanager.h @@ -145,6 +145,8 @@ public slots: void setRepeatMode( PlaylistInterface::RepeatMode mode ); void setShuffled( bool enabled ); + void playlistInterfaceChanged( PlaylistInterface* ); + // called by the playlist creation dbcmds void createPlaylist( const Tomahawk::source_ptr& src, const QVariant& contents ); void createDynamicPlaylist( const Tomahawk::source_ptr& src, const QVariant& contents ); diff --git a/src/libtomahawk/widgets/welcomewidget.cpp b/src/libtomahawk/widgets/welcomewidget.cpp index 1c9cbe8c9..e2b8012eb 100644 --- a/src/libtomahawk/widgets/welcomewidget.cpp +++ b/src/libtomahawk/widgets/welcomewidget.cpp @@ -45,10 +45,14 @@ WelcomeWidget::WelcomeWidget( QWidget* parent ) ui->setupUi( this ); ui->playlistWidget->setItemDelegate( new PlaylistDelegate() ); - ui->playlistWidget->setModel( new WelcomePlaylistModel( this ) ); + WelcomePlaylistModel* model = new WelcomePlaylistModel( this ); + ui->playlistWidget->setModel( model ); ui->playlistWidget->overlay()->resize( 380, 86 ); ui->tracksView->overlay()->setEnabled( false ); + connect( model,SIGNAL( emptinessChanged( bool) ), this, SLOT( updatePlaylists() ) ); + + m_tracksModel = new PlaylistModel( ui->tracksView ); ui->tracksView->setPlaylistModel( m_tracksModel ); m_tracksModel->loadHistory( Tomahawk::source_ptr(), HISTORY_TRACK_ITEMS );