From 0430a2a38fe3b6a18dc13090c236272fbb85df0b Mon Sep 17 00:00:00 2001 From: Sky Date: Sat, 26 Oct 2013 02:28:50 +0100 Subject: Add assets download status to status bar. --- logic/OneSixAssets.cpp | 6 +++++- logic/OneSixAssets.h | 3 +++ logic/net/DownloadJob.cpp | 3 +++ logic/net/DownloadJob.h | 4 +++- 4 files changed, 14 insertions(+), 2 deletions(-) (limited to 'logic') diff --git a/logic/OneSixAssets.cpp b/logic/OneSixAssets.cpp index 6aa0a207..ff19a86b 100644 --- a/logic/OneSixAssets.cpp +++ b/logic/OneSixAssets.cpp @@ -67,6 +67,8 @@ void OneSixAssets::fetchXMLFinished() QString fprefix ( "assets/" ); nuke_whitelist.clear(); + emit filesStarted(); + auto firstJob = index_job->first(); QByteArray ba = std::dynamic_pointer_cast(firstJob)->m_data; @@ -84,6 +86,7 @@ void OneSixAssets::fetchXMLFinished() DownloadJob *job = new DownloadJob("Assets"); connect ( job, SIGNAL(succeeded()), SLOT(downloadFinished()) ); connect ( job, SIGNAL(failed()), SIGNAL(failed()) ); + connect ( job, SIGNAL(filesProgress(int, int, int)), SIGNAL(filesProgress(int, int, int)) ); auto metacache = MMC->metacache(); @@ -130,14 +133,15 @@ void OneSixAssets::fetchXMLFinished() emit finished(); } } + void OneSixAssets::start() { auto job = new DownloadJob("Assets index"); job->addByteArrayDownload(QUrl ( "http://s3.amazonaws.com/Minecraft.Resources/" )); connect ( job, SIGNAL(succeeded()), SLOT ( fetchXMLFinished() ) ); + emit indexStarted(); index_job.reset ( job ); job->start(); } - #include "OneSixAssets.moc" diff --git a/logic/OneSixAssets.h b/logic/OneSixAssets.h index 58618c88..6c6f2c36 100644 --- a/logic/OneSixAssets.h +++ b/logic/OneSixAssets.h @@ -10,6 +10,9 @@ class OneSixAssets : public QObject signals: void failed(); void finished(); + void indexStarted(); + void filesStarted(); + void filesProgress(int, int, int); public slots: void fetchXMLFinished(); diff --git a/logic/net/DownloadJob.cpp b/logic/net/DownloadJob.cpp index fa3e655e..38716a02 100644 --- a/logic/net/DownloadJob.cpp +++ b/logic/net/DownloadJob.cpp @@ -56,6 +56,8 @@ void DownloadJob::partSucceeded(int index) num_succeeded++; QLOG_INFO() << m_job_name.toLocal8Bit() << "progress:" << num_succeeded << "/" << downloads.size(); + emit filesProgress(num_succeeded, num_failed, downloads.size()); + if (num_failed + num_succeeded == downloads.size()) { if (num_failed) @@ -78,6 +80,7 @@ void DownloadJob::partFailed(int index) { QLOG_ERROR() << "Part" << index << "failed 3 times (" << downloads[index]->m_url << ")"; num_failed++; + emit filesProgress(num_succeeded, num_failed, downloads.size()); if (num_failed + num_succeeded == downloads.size()) { QLOG_ERROR() << m_job_name.toLocal8Bit() << "failed."; diff --git a/logic/net/DownloadJob.h b/logic/net/DownloadJob.h index 91b014ad..cc2a1d59 100644 --- a/logic/net/DownloadJob.h +++ b/logic/net/DownloadJob.h @@ -1,5 +1,6 @@ #pragma once #include +#include #include "Download.h" #include "ByteArrayDownload.h" #include "FileDownload.h" @@ -57,12 +58,13 @@ public: signals: void started(); void progress(qint64 current, qint64 total); + void filesProgress(int, int, int); void succeeded(); void failed(); public slots: virtual void start(); private slots: - void partProgress(int index, qint64 bytesReceived, qint64 bytesTotal);; + void partProgress(int index, qint64 bytesReceived, qint64 bytesTotal); void partSucceeded(int index); void partFailed(int index); private: -- cgit v1.2.3