Some checks failed
CodeQL Code Scanning / CodeQL (push) Has been cancelled
Build Application / Build Debug (push) Has been cancelled
Nix / Build (${{ matrix.system }}) (macos-13, x86_64-darwin) (push) Has been cancelled
Nix / Build (${{ matrix.system }}) (macos-14, aarch64-darwin) (push) Has been cancelled
Nix / Build (${{ matrix.system }}) (ubuntu-22.04, x86_64-linux) (push) Has been cancelled
Nix / Build (${{ matrix.system }}) (ubuntu-22.04-arm, aarch64-linux) (push) Has been cancelled
Update Flake Lockfile / update-flake (push) Has been cancelled
64 lines
1.8 KiB
C++
Executable File
64 lines
1.8 KiB
C++
Executable File
#pragma once
|
|
|
|
#include "ModIndex.h"
|
|
|
|
#include "modplatform/helpers/HashUtils.h"
|
|
|
|
#include "tasks/ConcurrentTask.h"
|
|
|
|
#include <QDir>
|
|
|
|
class Mod;
|
|
|
|
class EnsureMetadataTask : public Task {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
EnsureMetadataTask(Mod*, QDir, ModPlatform::ResourceProvider = ModPlatform::ResourceProvider::MODRINTH);
|
|
EnsureMetadataTask(QList<Mod*>&, QDir, ModPlatform::ResourceProvider = ModPlatform::ResourceProvider::MODRINTH);
|
|
EnsureMetadataTask(QHash<QString, Mod*>&, QDir, ModPlatform::ResourceProvider = ModPlatform::ResourceProvider::MODRINTH);
|
|
|
|
~EnsureMetadataTask() = default;
|
|
|
|
Task::Ptr getHashingTask() { return m_hashingTask; }
|
|
|
|
public slots:
|
|
bool abort() override;
|
|
protected slots:
|
|
void executeTask() override;
|
|
|
|
private:
|
|
// FIXME: Move to their own namespace
|
|
auto modrinthVersionsTask() -> Task::Ptr;
|
|
auto modrinthProjectsTask() -> Task::Ptr;
|
|
|
|
auto flameVersionsTask() -> Task::Ptr;
|
|
auto flameProjectsTask() -> Task::Ptr;
|
|
|
|
// Helpers
|
|
enum class RemoveFromList { Yes, No };
|
|
void emitReady(Mod*, QString key = {}, RemoveFromList = RemoveFromList::Yes);
|
|
void emitFail(Mod*, QString key = {}, RemoveFromList = RemoveFromList::Yes);
|
|
|
|
// Hashes and stuff
|
|
auto createNewHash(Mod*) -> Hashing::Hasher::Ptr;
|
|
auto getExistingHash(Mod*) -> QString;
|
|
|
|
private slots:
|
|
void modrinthCallback(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Mod*);
|
|
void flameCallback(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Mod*);
|
|
|
|
signals:
|
|
void metadataReady(Mod*);
|
|
void metadataFailed(Mod*);
|
|
|
|
private:
|
|
QHash<QString, Mod*> m_mods;
|
|
QDir m_index_dir;
|
|
ModPlatform::ResourceProvider m_provider;
|
|
|
|
QHash<QString, ModPlatform::IndexedVersion> m_temp_versions;
|
|
Task::Ptr m_hashingTask;
|
|
Task::Ptr m_current_task;
|
|
};
|