From e94363ba4faedc552bb37cf1ac3c9103eb541811 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 25 Mar 2015 10:00:36 +0100 Subject: [PATCH] Use a hashmap for state tracking. --- src/libtomahawk/DownloadManager.cpp | 26 ++++++++++++++------------ src/libtomahawk/DownloadManager.h | 2 +- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/libtomahawk/DownloadManager.cpp b/src/libtomahawk/DownloadManager.cpp index 24d6e4856..1a9c6a0ca 100644 --- a/src/libtomahawk/DownloadManager.cpp +++ b/src/libtomahawk/DownloadManager.cpp @@ -46,7 +46,11 @@ DownloadManager::DownloadManager() QVariantList downloads = TomahawkSettings::instance()->downloadStates(); foreach ( const QVariant& download, downloads ) { - m_downloadStates << download.toMap(); + QVariantMap map = download.toMap(); + QString localFile = map[ "localfile" ].toString(); + QFileInfo fi( localFile ); + if ( fi.exists() ) + m_downloadStates[ map[ "url" ].toString() ] = map; } QTimer::singleShot( 0, this, SLOT( resumeJobs() ) ); @@ -64,17 +68,15 @@ DownloadManager::~DownloadManager() QString DownloadManager::localFileForDownload( const QString& url ) const { - foreach ( const QVariantMap& map, m_downloadStates ) + if ( m_downloadStates.contains( url ) ) { - tDebug() << "Found known download:" << map["url"] << map["localfile"]; - tDebug() << "Looking for download:" << url; - if ( map[ "url" ].toString() == url ) - { - QString localFile = map[ "localfile" ].toString(); - QFileInfo fi( localFile ); - if ( fi.exists() ) - return localFile; - } + QVariantMap map = m_downloadStates[ url ]; +// tDebug() << "Found known download:" << map["url"] << map["localfile"]; +// tDebug() << "Looking for download:" << url; + QString localFile = map[ "localfile" ].toString(); + QFileInfo fi( localFile ); + if ( fi.exists() ) + return localFile; } return QString(); @@ -94,7 +96,7 @@ DownloadManager::storeJobs( const QList& jobs ) map[ "url" ] = job->format().url; map[ "localfile" ] = job->localFile(); - m_downloadStates << map; + m_downloadStates[ map[ "url" ].toString() ] = map; downloads << map; } diff --git a/src/libtomahawk/DownloadManager.h b/src/libtomahawk/DownloadManager.h index 21cf009c8..f4ca5287d 100644 --- a/src/libtomahawk/DownloadManager.h +++ b/src/libtomahawk/DownloadManager.h @@ -67,7 +67,7 @@ private slots: private: QList< downloadjob_ptr > m_jobs; bool m_globalState; - QList m_downloadStates; + QHash m_downloadStates; static DownloadManager* s_instance; };