aboutsummaryrefslogtreecommitdiff
path: root/launcher/modplatform/EnsureMetadataTask.h
blob: 624e253a8234a8efbb2a25bd402f605ff0bd9f99 (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
36
37
38
39
40
41
#pragma once

#include "ModIndex.h"
#include "tasks/SequentialTask.h"

class Mod;
class QDir;
class MultipleOptionsTask;

class EnsureMetadataTask : public Task {
    Q_OBJECT

   public:
    EnsureMetadataTask(Mod&, QDir&, bool try_all, ModPlatform::Provider = ModPlatform::Provider::MODRINTH);

   public slots:
    bool abort() override;
   protected slots:
    void executeTask() override;

   private:
    // FIXME: Move to their own namespace
    void modrinthEnsureMetadata(SequentialTask&, QByteArray&);
    void flameEnsureMetadata(SequentialTask&, QByteArray&);

    // Helpers
    void emitReady();
    void emitFail();

   signals:
    void metadataReady();
    void metadataFailed();

   private:
    Mod& m_mod;
    QDir& m_index_dir;
    ModPlatform::Provider m_provider;
    bool m_try_all;

    MultipleOptionsTask* m_task_handler = nullptr;
};