aboutsummaryrefslogtreecommitdiff
path: root/launcher/ModDownloadTask.h
blob: ddada5a2192441ab78435ca53dc4efbd9dcb532b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#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();
};