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;