9c6727e27f
Previously, we used a unique_ptr to a ModDownloadTask to keep track of the selected mod to download when we accepted the dialog. In order to allow multiple mods to be selected at once for download, this has been changed to a QHash where the key is the mods name (since it doesn't seem right to allow for multiple versions of the same mod to be downloaded at once), and the value is a pointer to the corresponding ModDownloadTask.
36 lines
784 B
C++
36 lines
784 B
C++
#pragma once
|
|
#include "QObjectPtr.h"
|
|
#include "tasks/Task.h"
|
|
#include "minecraft/mod/ModFolderModel.h"
|
|
#include "net/NetJob.h"
|
|
#include <QUrl>
|
|
|
|
|
|
class ModDownloadTask : public Task {
|
|
Q_OBJECT
|
|
public:
|
|
explicit ModDownloadTask(const QUrl sourceUrl, const QString filename, const std::shared_ptr<ModFolderModel> mods);
|
|
const QString& getFilename() const { return filename; }
|
|
|
|
public slots:
|
|
bool abort() override;
|
|
protected:
|
|
//! Entry point for tasks.
|
|
void executeTask() override;
|
|
|
|
private:
|
|
QUrl m_sourceUrl;
|
|
NetJob::Ptr m_filesNetJob;
|
|
const std::shared_ptr<ModFolderModel> mods;
|
|
const QString filename;
|
|
|
|
void downloadProgressChanged(qint64 current, qint64 total);
|
|
|
|
void downloadFailed(QString reason);
|
|
|
|
void downloadSucceeded();
|
|
};
|
|
|
|
|
|
|