From 5d6da03dd67e3271ebfbcc3b3066e0a54d84d231 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Thu, 10 Mar 2016 01:32:50 +0100 Subject: [PATCH] Show View In Folder button if album is already completely downloaded --- src/libtomahawk/playlist/TrackDetailView.cpp | 80 +++++++++++++++++--- src/libtomahawk/playlist/TrackDetailView.h | 1 + 2 files changed, 72 insertions(+), 9 deletions(-) diff --git a/src/libtomahawk/playlist/TrackDetailView.cpp b/src/libtomahawk/playlist/TrackDetailView.cpp index da3c490a2..9142a6a78 100644 --- a/src/libtomahawk/playlist/TrackDetailView.cpp +++ b/src/libtomahawk/playlist/TrackDetailView.cpp @@ -18,12 +18,6 @@ #include "TrackDetailView.h" -#include -#include -#include -#include -#include - #include "Album.h" #include "Track.h" #include "audio/AudioEngine.h" @@ -39,6 +33,13 @@ #include "utils/WebPopup.h" #include "utils/Logger.h" +#include +#include +#include +#include +#include +#include + using namespace Tomahawk; TrackDetailView::TrackDetailView( QWidget* parent ) @@ -219,8 +220,44 @@ TrackDetailView::onAlbumUpdated() { if ( m_query->track()->albumPtr()->purchased() ) { - m_buyButton->setText( tr( "Download Album" ) ); - m_buyButton->setVisible( true ); + m_allTracksAvailableLocally = true; + foreach( const query_ptr& currentQuery, m_playlistInterface->tracks() ) + { + if ( currentQuery->results().isEmpty() ) + { + m_allTracksAvailableLocally = false; + break; + } + else + { + m_allTracksAvailableLocally = false; + foreach ( const result_ptr& currentResult, currentQuery->results() ) + { + QList< DownloadFormat > formats = currentResult->downloadFormats(); + bool isDownloaded = formats.isEmpty() ? false : !DownloadManager::instance()->localFileForDownload( currentResult->downloadFormats().first().url.toString() ).isEmpty(); + if ( currentResult->isLocal() || isDownloaded ) + { + m_allTracksAvailableLocally = true; + break; + } + } + if ( !m_allTracksAvailableLocally ) + { + break; + } + } + } + + if ( m_allTracksAvailableLocally ) + { + m_buyButton->setText( tr( "View in Folder" ) ); + m_buyButton->setVisible( true ); + } + else + { + m_buyButton->setText( tr( "Download Album" ) ); + m_buyButton->setVisible( true ); + } } else { @@ -251,7 +288,32 @@ TrackDetailView::onBuyButtonClicked() { if ( m_query->track()->albumPtr()->purchased() ) { - emit downloadAll(); + if ( m_allTracksAvailableLocally ) + { + QString path; + foreach( const result_ptr& currentResult, m_query->results() ) { + if ( !currentResult->downloadFormats().isEmpty() ) + { + path = DownloadManager::instance()->localFileForDownload( currentResult->downloadFormats().first().url.toString() ); + + } + + if ( path.isEmpty() && currentResult->isLocal() ) + { + path = currentResult->url(); + } + + if ( !path.isEmpty() ) + { + QDesktopServices::openUrl( QFileInfo( path ).dir().path() ); + break; + } + } + } + else + { + emit downloadAll(); + } } else { diff --git a/src/libtomahawk/playlist/TrackDetailView.h b/src/libtomahawk/playlist/TrackDetailView.h index 77c189bff..cb633d3d4 100644 --- a/src/libtomahawk/playlist/TrackDetailView.h +++ b/src/libtomahawk/playlist/TrackDetailView.h @@ -77,6 +77,7 @@ private: CaptionLabel* m_resultsBoxLabel; QPushButton* m_buyButton; bool m_buyButtonVisible; + bool m_allTracksAvailableLocally; QWidget* m_infoBox; QWidget* m_resultsBox;