mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-06 22:26:32 +02:00
Keep download states in memory for faster access.
This commit is contained in:
@@ -43,6 +43,12 @@ DownloadManager::DownloadManager()
|
|||||||
{
|
{
|
||||||
tLog() << Q_FUNC_INFO << "Initializing DownloadManager.";
|
tLog() << Q_FUNC_INFO << "Initializing DownloadManager.";
|
||||||
|
|
||||||
|
QVariantList downloads = TomahawkSettings::instance()->downloadStates();
|
||||||
|
foreach ( const QVariant& download, downloads )
|
||||||
|
{
|
||||||
|
m_downloadStates << download.toMap();
|
||||||
|
}
|
||||||
|
|
||||||
QTimer::singleShot( 0, this, SLOT( resumeJobs() ) );
|
QTimer::singleShot( 0, this, SLOT( resumeJobs() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,12 +57,6 @@ DownloadManager::~DownloadManager()
|
|||||||
{
|
{
|
||||||
tLog() << Q_FUNC_INFO << "Shutting down DownloadManager.";
|
tLog() << Q_FUNC_INFO << "Shutting down DownloadManager.";
|
||||||
|
|
||||||
QList< downloadjob_ptr > jl;
|
|
||||||
foreach ( const downloadjob_ptr& job, jobs() )
|
|
||||||
{
|
|
||||||
jl << job;
|
|
||||||
}
|
|
||||||
|
|
||||||
storeJobs( jobs( DownloadJob::Finished ) );
|
storeJobs( jobs( DownloadJob::Finished ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,15 +64,13 @@ DownloadManager::~DownloadManager()
|
|||||||
QString
|
QString
|
||||||
DownloadManager::localFileForDownload( const QString& url ) const
|
DownloadManager::localFileForDownload( const QString& url ) const
|
||||||
{
|
{
|
||||||
QVariantList downloads = TomahawkSettings::instance()->downloadStates();
|
foreach ( const QVariantMap& map, m_downloadStates )
|
||||||
foreach ( const QVariant& download, downloads )
|
|
||||||
{
|
{
|
||||||
QVariantMap map = download.toMap();
|
|
||||||
tDebug() << "Found known download:" << map["url"] << map["localfile"];
|
tDebug() << "Found known download:" << map["url"] << map["localfile"];
|
||||||
tDebug() << "Looking for download:" << url;
|
tDebug() << "Looking for download:" << url;
|
||||||
if ( map[ "url" ].toString() == url )
|
if ( map[ "url" ].toString() == url )
|
||||||
{
|
{
|
||||||
QString localFile = map[ "localfile"].toString();
|
QString localFile = map[ "localfile" ].toString();
|
||||||
QFileInfo fi( localFile );
|
QFileInfo fi( localFile );
|
||||||
if ( fi.exists() )
|
if ( fi.exists() )
|
||||||
return localFile;
|
return localFile;
|
||||||
@@ -89,11 +87,14 @@ DownloadManager::storeJobs( const QList<downloadjob_ptr>& jobs )
|
|||||||
QVariantList downloads = TomahawkSettings::instance()->downloadStates();
|
QVariantList downloads = TomahawkSettings::instance()->downloadStates();
|
||||||
foreach ( const downloadjob_ptr& job, jobs )
|
foreach ( const downloadjob_ptr& job, jobs )
|
||||||
{
|
{
|
||||||
|
if ( job->state() != DownloadJob::Finished )
|
||||||
|
continue;
|
||||||
tDebug() << "Storing job:" << job->format().url << job->localFile();
|
tDebug() << "Storing job:" << job->format().url << job->localFile();
|
||||||
QVariantMap map;
|
QVariantMap map;
|
||||||
map[ "url" ] = job->format().url;
|
map[ "url" ] = job->format().url;
|
||||||
map[ "localfile" ] = job->localFile();
|
map[ "localfile" ] = job->localFile();
|
||||||
|
|
||||||
|
m_downloadStates << map;
|
||||||
downloads << map;
|
downloads << map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -67,6 +67,7 @@ private slots:
|
|||||||
private:
|
private:
|
||||||
QList< downloadjob_ptr > m_jobs;
|
QList< downloadjob_ptr > m_jobs;
|
||||||
bool m_globalState;
|
bool m_globalState;
|
||||||
|
QList<QVariantMap> m_downloadStates;
|
||||||
|
|
||||||
static DownloadManager* s_instance;
|
static DownloadManager* s_instance;
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user