From 84549ed8078bdbd029aa5a89facc0412b8b5e753 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sun, 26 Apr 2015 13:47:14 +0200 Subject: [PATCH] GH-849 Further NetJob related fixes --- application/MainWindow.cpp | 4 ++-- application/dialogs/UpdateDialog.cpp | 4 ++-- application/dialogs/UpdateDialog.h | 8 ++++---- logic/minecraft/LegacyUpdate.cpp | 28 +++++++++++++--------------- logic/minecraft/LegacyUpdate.h | 6 +++--- logic/net/NetJob.cpp | 6 +++--- logic/net/NetJob.h | 8 ++++---- logic/updater/DownloadTask.cpp | 7 +++---- logic/updater/DownloadTask.h | 2 +- logic/updater/UpdateChecker.cpp | 6 +++--- logic/updater/UpdateChecker.h | 2 +- 11 files changed, 39 insertions(+), 42 deletions(-) diff --git a/application/MainWindow.cpp b/application/MainWindow.cpp index 8084f361d..4c9a53a61 100644 --- a/application/MainWindow.cpp +++ b/application/MainWindow.cpp @@ -584,8 +584,8 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi if (!skin_dls.isEmpty()) { auto job = new NetJob("Startup player skins download"); - connect(job, SIGNAL(succeeded()), SLOT(skinJobFinished())); - connect(job, SIGNAL(failed()), SLOT(skinJobFinished())); + connect(job, &NetJob::succeeded, this, &MainWindow::skinJobFinished); + connect(job, &NetJob::failed, this, &MainWindow::skinJobFinished); for (auto action : skin_dls) { job->addNetAction(action); diff --git a/application/dialogs/UpdateDialog.cpp b/application/dialogs/UpdateDialog.cpp index f7e0bcd68..31f2de29e 100644 --- a/application/dialogs/UpdateDialog.cpp +++ b/application/dialogs/UpdateDialog.cpp @@ -165,9 +165,9 @@ void UpdateDialog::changelogLoaded() ui->changelogBrowser->setHtml(html); } -void UpdateDialog::changelogFailed() +void UpdateDialog::changelogFailed(QString reason) { - ui->changelogBrowser->setHtml(tr("

Failed to fetch changelog...

")); + ui->changelogBrowser->setHtml(tr("

Failed to fetch changelog... Error: %1

").arg(reason)); } void UpdateDialog::on_btnUpdateLater_clicked() diff --git a/application/dialogs/UpdateDialog.h b/application/dialogs/UpdateDialog.h index 2ab2ff7c5..b92c74739 100644 --- a/application/dialogs/UpdateDialog.h +++ b/application/dialogs/UpdateDialog.h @@ -48,13 +48,13 @@ public slots: /// Starts loading the changelog void loadChangelog(); - + /// Slot for when the chengelog loads successfully. void changelogLoaded(); - + /// Slot for when the chengelog fails to load... - void changelogFailed(); - + void changelogFailed(QString reason); + private: ByteArrayDownloadPtr changelogDownload; NetJobPtr dljob; diff --git a/logic/minecraft/LegacyUpdate.cpp b/logic/minecraft/LegacyUpdate.cpp index 6c0a4cdf6..78f2f5b74 100644 --- a/logic/minecraft/LegacyUpdate.cpp +++ b/logic/minecraft/LegacyUpdate.cpp @@ -116,9 +116,9 @@ void LegacyUpdate::fmllibsStart() dljob->addNetAction(CacheDownload::make(QUrl(urlString), entry)); } - connect(dljob, SIGNAL(succeeded()), SLOT(fmllibsFinished())); - connect(dljob, SIGNAL(failed()), SLOT(fmllibsFailed())); - connect(dljob, SIGNAL(progress(qint64, qint64)), SIGNAL(progress(qint64, qint64))); + connect(dljob, &NetJob::succeeded, this, &LegacyUpdate::fmllibsFinished); + connect(dljob, &NetJob::failed, this, &LegacyUpdate::fmllibsFailed); + connect(dljob, &NetJob::progress, this, &LegacyUpdate::progress); legacyDownloadJob.reset(dljob); legacyDownloadJob->start(); } @@ -154,9 +154,9 @@ void LegacyUpdate::fmllibsFinished() lwjglStart(); } -void LegacyUpdate::fmllibsFailed() +void LegacyUpdate::fmllibsFailed(QString reason) { - emitFailed("Game update failed: it was impossible to fetch the required FML libraries."); + emitFailed(tr("Game update failed: it was impossible to fetch the required FML libraries. Reason: %1").arg(reason)); return; } @@ -201,9 +201,8 @@ void LegacyUpdate::lwjglStart() QNetworkReply *rep = worker->get(req); m_reply = std::shared_ptr(rep); - connect(rep, SIGNAL(downloadProgress(qint64, qint64)), SIGNAL(progress(qint64, qint64))); - connect(worker.get(), SIGNAL(finished(QNetworkReply *)), - SLOT(lwjglFinished(QNetworkReply *))); + connect(rep, &QNetworkReply::downloadProgress, this, &LegacyUpdate::progress); + connect(worker.get(), &QNetworkAccessManager::finished, this, &LegacyUpdate::lwjglFinished); } void LegacyUpdate::lwjglFinished(QNetworkReply *reply) @@ -240,8 +239,7 @@ void LegacyUpdate::lwjglFinished(QNetworkReply *reply) req.setRawHeader("Host", hostname.toLatin1()); req.setHeader(QNetworkRequest::UserAgentHeader, "MultiMC/5.0 (Cached)"); QNetworkReply *rep = worker->get(req); - connect(rep, SIGNAL(downloadProgress(qint64, qint64)), - SIGNAL(progress(qint64, qint64))); + connect(rep, &QNetworkReply::downloadProgress, this, &LegacyUpdate::progress); m_reply = std::shared_ptr(rep); return; } @@ -341,9 +339,9 @@ void LegacyUpdate::extractLwjgl() doneFile.close(); } -void LegacyUpdate::lwjglFailed() +void LegacyUpdate::lwjglFailed(QString reason) { - emitFailed("Bad stuff happened while trying to get the lwjgl libs..."); + emitFailed(tr("Bad stuff happened while trying to get the lwjgl libs: %1").arg(reason)); } void LegacyUpdate::jarStart() @@ -377,7 +375,7 @@ void LegacyUpdate::jarStart() auto entry = metacache->resolveEntry("versions", localPath); dljob->addNetAction(CacheDownload::make(QUrl(urlstr), entry)); connect(dljob, SIGNAL(succeeded()), SLOT(jarFinished())); - connect(dljob, SIGNAL(failed()), SLOT(jarFailed())); + connect(dljob, SIGNAL(failed(QString)), SLOT(jarFailed(QString))); connect(dljob, SIGNAL(progress(qint64, qint64)), SIGNAL(progress(qint64, qint64))); legacyDownloadJob.reset(dljob); legacyDownloadJob->start(); @@ -389,10 +387,10 @@ void LegacyUpdate::jarFinished() ModTheJar(); } -void LegacyUpdate::jarFailed() +void LegacyUpdate::jarFailed(QString reason) { // bad, bad - emitFailed("Failed to download the minecraft jar. Try again later."); + emitFailed(tr("Failed to download the minecraft jar: %1.").arg(reason)); } void LegacyUpdate::ModTheJar() diff --git a/logic/minecraft/LegacyUpdate.h b/logic/minecraft/LegacyUpdate.h index 61de75d3e..fc389ae17 100644 --- a/logic/minecraft/LegacyUpdate.h +++ b/logic/minecraft/LegacyUpdate.h @@ -39,15 +39,15 @@ private slots: void lwjglStart(); void lwjglFinished(QNetworkReply *); - void lwjglFailed(); + void lwjglFailed(QString reason); void jarStart(); void jarFinished(); - void jarFailed(); + void jarFailed(QString reason); void fmllibsStart(); void fmllibsFinished(); - void fmllibsFailed(); + void fmllibsFailed(QString reason); void extractLwjgl(); diff --git a/logic/net/NetJob.cpp b/logic/net/NetJob.cpp index b5503daf0..40d2d1c9c 100644 --- a/logic/net/NetJob.cpp +++ b/logic/net/NetJob.cpp @@ -64,7 +64,7 @@ void NetJob::partProgress(int index, qint64 bytesReceived, qint64 bytesTotal) emit progress(current_progress, total_progress); } -void NetJob::start() +void NetJob::executeTask() { qDebug() << m_job_name.toLocal8Bit() << " started."; m_running = true; @@ -86,12 +86,12 @@ void NetJob::startMoreParts() if(!m_failed.size()) { qDebug() << m_job_name << "succeeded."; - emit succeeded(); + emitSucceeded(); } else { qCritical() << m_job_name << "failed."; - emit failed(tr("%1 failed").arg(m_job_name)); + emitFailed(tr("Job '%1' failed to process:\n%2").arg(m_job_name).arg(getFailedFiles().join("\n"))); } } return; diff --git a/logic/net/NetJob.h b/logic/net/NetJob.h index 912a74b39..c0172beac 100644 --- a/logic/net/NetJob.h +++ b/logic/net/NetJob.h @@ -21,17 +21,17 @@ #include "MD5EtagDownload.h" #include "CacheDownload.h" #include "HttpMetaCache.h" -#include "tasks/ProgressProvider.h" +#include "tasks/Task.h" #include "QObjectPtr.h" class NetJob; typedef QObjectPtr NetJobPtr; -class NetJob : public ProgressProvider +class NetJob : public Task { Q_OBJECT public: - explicit NetJob(QString job_name) : ProgressProvider(), m_job_name(job_name) {} + explicit NetJob(QString job_name) : Task(), m_job_name(job_name) {} virtual ~NetJob() {} template bool addNetAction(T action) { @@ -87,7 +87,7 @@ private slots: void startMoreParts(); public slots: - virtual void start(); + virtual void executeTask(); // FIXME: implement virtual void abort() {}; diff --git a/logic/updater/DownloadTask.cpp b/logic/updater/DownloadTask.cpp index 65d894f9a..f19607a5b 100644 --- a/logic/updater/DownloadTask.cpp +++ b/logic/updater/DownloadTask.cpp @@ -159,11 +159,10 @@ void DownloadTask::fileDownloadFinished() emitSucceeded(); } -void DownloadTask::fileDownloadFailed() +void DownloadTask::fileDownloadFailed(QString reason) { - // TODO: Give more info about the failure. - qCritical() << "Failed to download update files."; - emitFailed(tr("Failed to download update files.")); + qCritical() << "Failed to download update files:" << reason; + emitFailed(tr("Failed to download update files: %1").arg(reason)); } void DownloadTask::fileDownloadProgressChanged(qint64 current, qint64 total) diff --git a/logic/updater/DownloadTask.h b/logic/updater/DownloadTask.h index 24e39415b..182e76d63 100644 --- a/logic/updater/DownloadTask.h +++ b/logic/updater/DownloadTask.h @@ -78,7 +78,7 @@ protected slots: void vinfoDownloadFailed(); void fileDownloadFinished(); - void fileDownloadFailed(); + void fileDownloadFailed(QString reason); void fileDownloadProgressChanged(qint64 current, qint64 total); }; diff --git a/logic/updater/UpdateChecker.cpp b/logic/updater/UpdateChecker.cpp index 7d214ed49..1cdac916b 100644 --- a/logic/updater/UpdateChecker.cpp +++ b/logic/updater/UpdateChecker.cpp @@ -96,7 +96,7 @@ void UpdateChecker::checkForUpdate(QString updateChannel, bool notifyNoUpdate) job->addNetAction(ByteArrayDownload::make(indexUrl)); connect(job, &NetJob::succeeded, [this, notifyNoUpdate]() { updateCheckFinished(notifyNoUpdate); }); - connect(job, SIGNAL(failed()), SLOT(updateCheckFailed())); + connect(job, &NetJob::failed, this, &UpdateChecker::updateCheckFailed); indexJob.reset(job); job->start(); } @@ -260,10 +260,10 @@ void UpdateChecker::chanListDownloadFinished(bool notifyNoUpdate) emit channelListLoaded(); } -void UpdateChecker::chanListDownloadFailed() +void UpdateChecker::chanListDownloadFailed(QString reason) { m_chanListLoading = false; - qCritical() << "Failed to download channel list."; + qCritical() << QString("Failed to download channel list: %1").arg(reason); emit channelListLoaded(); } diff --git a/logic/updater/UpdateChecker.h b/logic/updater/UpdateChecker.h index 760245cdd..39ccd1385 100644 --- a/logic/updater/UpdateChecker.h +++ b/logic/updater/UpdateChecker.h @@ -70,7 +70,7 @@ private slots: void updateCheckFailed(); void chanListDownloadFinished(bool notifyNoUpdate); - void chanListDownloadFailed(); + void chanListDownloadFailed(QString reason); private: friend class UpdateCheckerTest;