GH-1949 Allow Technic pack downloads to be aborted
This supports both 'single zip' modpacks and Solder packs, through the Technic mod platform page.
This commit is contained in:
parent
db392b4994
commit
d5c4489313
@ -28,6 +28,14 @@ Technic::SingleZipPackInstallTask::SingleZipPackInstallTask(const QUrl &sourceUr
|
|||||||
m_minecraftVersion = minecraftVersion;
|
m_minecraftVersion = minecraftVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Technic::SingleZipPackInstallTask::abort() {
|
||||||
|
if(m_abortable)
|
||||||
|
{
|
||||||
|
return m_filesNetJob->abort();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void Technic::SingleZipPackInstallTask::executeTask()
|
void Technic::SingleZipPackInstallTask::executeTask()
|
||||||
{
|
{
|
||||||
setStatus(tr("Downloading modpack:\n%1").arg(m_sourceUrl.toString()));
|
setStatus(tr("Downloading modpack:\n%1").arg(m_sourceUrl.toString()));
|
||||||
@ -47,6 +55,8 @@ void Technic::SingleZipPackInstallTask::executeTask()
|
|||||||
|
|
||||||
void Technic::SingleZipPackInstallTask::downloadSucceeded()
|
void Technic::SingleZipPackInstallTask::downloadSucceeded()
|
||||||
{
|
{
|
||||||
|
m_abortable = false;
|
||||||
|
|
||||||
setStatus(tr("Extracting modpack"));
|
setStatus(tr("Extracting modpack"));
|
||||||
QDir extractDir(FS::PathCombine(m_stagingPath, ".minecraft"));
|
QDir extractDir(FS::PathCombine(m_stagingPath, ".minecraft"));
|
||||||
qDebug() << "Attempting to create instance from" << m_archivePath;
|
qDebug() << "Attempting to create instance from" << m_archivePath;
|
||||||
@ -67,12 +77,14 @@ void Technic::SingleZipPackInstallTask::downloadSucceeded()
|
|||||||
|
|
||||||
void Technic::SingleZipPackInstallTask::downloadFailed(QString reason)
|
void Technic::SingleZipPackInstallTask::downloadFailed(QString reason)
|
||||||
{
|
{
|
||||||
|
m_abortable = false;
|
||||||
emitFailed(reason);
|
emitFailed(reason);
|
||||||
m_filesNetJob.reset();
|
m_filesNetJob.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Technic::SingleZipPackInstallTask::downloadProgressChanged(qint64 current, qint64 total)
|
void Technic::SingleZipPackInstallTask::downloadProgressChanged(qint64 current, qint64 total)
|
||||||
{
|
{
|
||||||
|
m_abortable = true;
|
||||||
setProgress(current / 2, total);
|
setProgress(current / 2, total);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,6 +36,9 @@ class MULTIMC_LOGIC_EXPORT SingleZipPackInstallTask : public InstanceTask
|
|||||||
public:
|
public:
|
||||||
SingleZipPackInstallTask(const QUrl &sourceUrl, const QString &minecraftVersion);
|
SingleZipPackInstallTask(const QUrl &sourceUrl, const QString &minecraftVersion);
|
||||||
|
|
||||||
|
bool canAbort() const override { return true; }
|
||||||
|
bool abort() override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void executeTask() override;
|
void executeTask() override;
|
||||||
|
|
||||||
@ -48,6 +51,8 @@ private slots:
|
|||||||
void extractAborted();
|
void extractAborted();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
bool m_abortable = false;
|
||||||
|
|
||||||
QUrl m_sourceUrl;
|
QUrl m_sourceUrl;
|
||||||
QString m_minecraftVersion;
|
QString m_minecraftVersion;
|
||||||
QString m_archivePath;
|
QString m_archivePath;
|
||||||
|
@ -27,6 +27,14 @@ Technic::SolderPackInstallTask::SolderPackInstallTask(const QUrl &sourceUrl, con
|
|||||||
m_minecraftVersion = minecraftVersion;
|
m_minecraftVersion = minecraftVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Technic::SolderPackInstallTask::abort() {
|
||||||
|
if(m_abortable)
|
||||||
|
{
|
||||||
|
return m_filesNetJob->abort();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void Technic::SolderPackInstallTask::executeTask()
|
void Technic::SolderPackInstallTask::executeTask()
|
||||||
{
|
{
|
||||||
setStatus(tr("Finding recommended version:\n%1").arg(m_sourceUrl.toString()));
|
setStatus(tr("Finding recommended version:\n%1").arg(m_sourceUrl.toString()));
|
||||||
@ -106,6 +114,8 @@ void Technic::SolderPackInstallTask::fileListSucceeded()
|
|||||||
|
|
||||||
void Technic::SolderPackInstallTask::downloadSucceeded()
|
void Technic::SolderPackInstallTask::downloadSucceeded()
|
||||||
{
|
{
|
||||||
|
m_abortable = false;
|
||||||
|
|
||||||
setStatus(tr("Extracting modpack"));
|
setStatus(tr("Extracting modpack"));
|
||||||
m_filesNetJob.reset();
|
m_filesNetJob.reset();
|
||||||
m_extractFuture = QtConcurrent::run([this]()
|
m_extractFuture = QtConcurrent::run([this]()
|
||||||
@ -132,12 +142,14 @@ void Technic::SolderPackInstallTask::downloadSucceeded()
|
|||||||
|
|
||||||
void Technic::SolderPackInstallTask::downloadFailed(QString reason)
|
void Technic::SolderPackInstallTask::downloadFailed(QString reason)
|
||||||
{
|
{
|
||||||
|
m_abortable = false;
|
||||||
emitFailed(reason);
|
emitFailed(reason);
|
||||||
m_filesNetJob.reset();
|
m_filesNetJob.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Technic::SolderPackInstallTask::downloadProgressChanged(qint64 current, qint64 total)
|
void Technic::SolderPackInstallTask::downloadProgressChanged(qint64 current, qint64 total)
|
||||||
{
|
{
|
||||||
|
m_abortable = true;
|
||||||
setProgress(current / 2, total);
|
setProgress(current / 2, total);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,6 +29,9 @@ namespace Technic
|
|||||||
public:
|
public:
|
||||||
explicit SolderPackInstallTask(const QUrl &sourceUrl, const QString &minecraftVersion);
|
explicit SolderPackInstallTask(const QUrl &sourceUrl, const QString &minecraftVersion);
|
||||||
|
|
||||||
|
bool canAbort() const override { return true; }
|
||||||
|
bool abort() override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
//! Entry point for tasks.
|
//! Entry point for tasks.
|
||||||
virtual void executeTask() override;
|
virtual void executeTask() override;
|
||||||
@ -43,6 +46,8 @@ namespace Technic
|
|||||||
void extractAborted();
|
void extractAborted();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
bool m_abortable = false;
|
||||||
|
|
||||||
NetJobPtr m_filesNetJob;
|
NetJobPtr m_filesNetJob;
|
||||||
QUrl m_sourceUrl;
|
QUrl m_sourceUrl;
|
||||||
QString m_minecraftVersion;
|
QString m_minecraftVersion;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user