diff options
author | Trial97 <alexandru.tripon97@gmail.com> | 2023-04-12 00:45:44 +0300 |
---|---|---|
committer | Trial97 <alexandru.tripon97@gmail.com> | 2023-04-12 00:45:44 +0300 |
commit | 4fbd5abe41ac10ecd28974ff857e9bce35c7d264 (patch) | |
tree | 38be9f3454f31e6515d075573e23c061e5fb2946 /launcher/minecraft/mod/tasks/GetModDependenciesTask.h | |
parent | d524935b6726c1a8d589d01abad4d262a55af149 (diff) | |
download | PrismLauncher-4fbd5abe41ac10ecd28974ff857e9bce35c7d264.tar.gz PrismLauncher-4fbd5abe41ac10ecd28974ff857e9bce35c7d264.tar.bz2 PrismLauncher-4fbd5abe41ac10ecd28974ff857e9bce35c7d264.zip |
Added task to load dependencies
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
Diffstat (limited to 'launcher/minecraft/mod/tasks/GetModDependenciesTask.h')
-rw-r--r-- | launcher/minecraft/mod/tasks/GetModDependenciesTask.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/launcher/minecraft/mod/tasks/GetModDependenciesTask.h b/launcher/minecraft/mod/tasks/GetModDependenciesTask.h new file mode 100644 index 00000000..28112bba --- /dev/null +++ b/launcher/minecraft/mod/tasks/GetModDependenciesTask.h @@ -0,0 +1,63 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * PolyMC - Minecraft Launcher + * Copyright (c) 2022 flowln <flowlnlnln@gmail.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + */ + +#pragma once + +#include <QDir> +#include <functional> + +#include "minecraft/mod/MetadataHandler.h" +#include "minecraft/mod/tasks/LocalModGetAllTask.h" +#include "modplatform/ModIndex.h" +#include "tasks/SequentialTask.h" +#include "tasks/Task.h" + +class GetModDependenciesTask : public Task { + Q_OBJECT + public: + using Ptr = shared_qobject_ptr<GetModDependenciesTask>; + using LocalModGetAllTaskPtr = shared_qobject_ptr<LocalModGetAllTask>; + + using NewDependecyVersionAPITask = + std::function<Task::Ptr(ModPlatform::Dependency, int, std::function<void(QList<ModPlatform::IndexedVersion>, int)>)>; + + explicit GetModDependenciesTask(QDir index_dir, QList<ModPlatform::IndexedVersion> selected, NewDependecyVersionAPITask& api); + + auto canAbort() const -> bool override { return true; } + auto abort() -> bool override; + + protected slots: + //! Entry point for tasks. + void executeTask() override; + + void prepareDependecies(); + void addDependecies(QList<ModPlatform::IndexedVersion>, int); + QList<ModPlatform::Dependency> getDependenciesForVersions(QList<ModPlatform::IndexedVersion>); + + signals: + void getAllMod(QList<Metadata::ModStruct>); + + private: + QList<ModPlatform::IndexedVersion> m_selected; + QList<ModPlatform::IndexedVersion> m_dependencies; + QList<Metadata::ModStruct> m_mods; + + LocalModGetAllTaskPtr m_getAllMods = nullptr; + NewDependecyVersionAPITask m_getDependenciesVersionAPI; + SequentialTask::Ptr m_getNetworkDep; +}; |