From 1d836ad2de568d14796a6e22b12a0205af35e403 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 25 Mar 2015 08:25:40 +0100 Subject: [PATCH] Show a 'Download All' button in the collection view's header. To be disabled for local collections. --- .../viewpages/CollectionViewPage.cpp | 25 ++++++++++++++++--- .../viewpages/CollectionViewPage.h | 2 ++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/libtomahawk/viewpages/CollectionViewPage.cpp b/src/libtomahawk/viewpages/CollectionViewPage.cpp index 69916f607..0d39f9b65 100644 --- a/src/libtomahawk/viewpages/CollectionViewPage.cpp +++ b/src/libtomahawk/viewpages/CollectionViewPage.cpp @@ -32,6 +32,7 @@ #include "playlist/GridView.h" #include "playlist/PlayableProxyModelPlaylistInterface.h" #include "resolvers/ScriptCollection.h" +#include "DownloadManager.h" #include "TomahawkSettings.h" #include "utils/ImageRegistry.h" #include "utils/TomahawkStyle.h" @@ -89,13 +90,13 @@ CollectionViewPage::CollectionViewPage( const Tomahawk::collection_ptr& collecti m_header->ui->anchor2Label->setText( tr( "Albums" ) ); m_header->ui->anchor3Label->setText( tr( "Songs" ) ); - if( collection->browseCapabilities().contains( Collection::CapabilityBrowseArtists ) ) + if ( collection->browseCapabilities().contains( Collection::CapabilityBrowseArtists ) ) m_header->ui->anchor1Label->show(); - if( collection->browseCapabilities().contains( Collection::CapabilityBrowseAlbums ) ) + if ( collection->browseCapabilities().contains( Collection::CapabilityBrowseAlbums ) ) m_header->ui->anchor2Label->show(); - if( collection->browseCapabilities().contains( Collection::CapabilityBrowseTracks ) ) + if ( collection->browseCapabilities().contains( Collection::CapabilityBrowseTracks ) ) m_header->ui->anchor3Label->show(); const float lowOpacity = 0.8; @@ -113,6 +114,9 @@ CollectionViewPage::CollectionViewPage( const Tomahawk::collection_ptr& collecti NewClosure( m_header->ui->anchor3Label, SIGNAL( clicked() ), const_cast< CollectionViewPage* >( this ), SLOT( setCurrentMode( CollectionViewPageMode ) ), CollectionViewPage::Flat )->setAutoDelete( false ); } + QAbstractButton* downloadButton = m_header->addButton( tr( "Download All" ) ); + connect( downloadButton, SIGNAL( clicked() ), SLOT( onDownloadAll() ) ); + layout()->addWidget( m_header ); layout()->addWidget( m_stack ); @@ -418,6 +422,21 @@ CollectionViewPage::onCollectionChanged() } +void +CollectionViewPage::onDownloadAll() +{ + for ( int i = 0; i < m_flatModel->rowCount( QModelIndex() ); i++ ) + { + PlayableItem* item = m_flatModel->itemFromIndex( m_flatModel->index( i, 0, QModelIndex() ) ); + if ( !item ) + continue; + + if ( !item->result()->downloadFormats().isEmpty() ) + DownloadManager::instance()->addJob( item->result()->toDownloadJob( item->result()->downloadFormats().first() ) ); + } +} + + bool CollectionViewPage::isTemporaryPage() const { diff --git a/src/libtomahawk/viewpages/CollectionViewPage.h b/src/libtomahawk/viewpages/CollectionViewPage.h index 5c108b571..f424fdcf6 100644 --- a/src/libtomahawk/viewpages/CollectionViewPage.h +++ b/src/libtomahawk/viewpages/CollectionViewPage.h @@ -82,6 +82,8 @@ private slots: void onModelChanged(); void onCollectionChanged(); + void onDownloadAll(); + private: FilterHeader* m_header; QPixmap m_pixmap;