diff options
author | Trial97 <alexandru.tripon97@gmail.com> | 2023-04-11 20:55:10 +0300 |
---|---|---|
committer | Trial97 <alexandru.tripon97@gmail.com> | 2023-04-11 20:55:10 +0300 |
commit | d524935b6726c1a8d589d01abad4d262a55af149 (patch) | |
tree | c0b24ee91815223d0909125aa1d38463134c3942 | |
parent | 6d5c629b4316fb37b1ca0705c17867d6d9c771bd (diff) | |
download | PrismLauncher-d524935b6726c1a8d589d01abad4d262a55af149.tar.gz PrismLauncher-d524935b6726c1a8d589d01abad4d262a55af149.tar.bz2 PrismLauncher-d524935b6726c1a8d589d01abad4d262a55af149.zip |
Added task to load local mod information
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
-rw-r--r-- | launcher/minecraft/mod/tasks/LocalModGetTask.cpp | 51 | ||||
-rw-r--r-- | launcher/minecraft/mod/tasks/LocalModGetTask.h | 46 |
2 files changed, 97 insertions, 0 deletions
diff --git a/launcher/minecraft/mod/tasks/LocalModGetTask.cpp b/launcher/minecraft/mod/tasks/LocalModGetTask.cpp new file mode 100644 index 00000000..9c056d02 --- /dev/null +++ b/launcher/minecraft/mod/tasks/LocalModGetTask.cpp @@ -0,0 +1,51 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * PolyMC - Minecraft Launcher + * Copyright (c) 2022 flowln <flowlnlnln@gmail.com> + * Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net> + * + * 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/>. + */ + +#include "LocalModGetTask.h" + +#include "FileSystem.h" +#include "minecraft/mod/MetadataHandler.h" + +#ifdef Q_OS_WIN32 +#include <windows.h> +#endif + +LocalModGetTask::LocalModGetTask(QDir index_dir, QVariant addonId) : m_index_dir(index_dir), m_addonId(addonId) +{ + // Ensure a '.index' folder exists in the mods folder, and create it if it does not + if (!FS::ensureFolderPathExists(index_dir.path())) { + emitFailed(QString("Unable to create index for modId %1!").arg(m_addonId.toString())); + } + +#ifdef Q_OS_WIN32 + SetFileAttributesW(index_dir.path().toStdWString().c_str(), FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_NOT_CONTENT_INDEXED); +#endif +} + +void LocalModGetTask::executeTask() +{ + setStatus(tr("Updating index for modId:\n%1").arg(m_addonId.toString())); + emit getMod(Metadata::get(m_index_dir, m_addonId)); +} + +auto LocalModGetTask::abort() -> bool +{ + emitAborted(); + return true; +} diff --git a/launcher/minecraft/mod/tasks/LocalModGetTask.h b/launcher/minecraft/mod/tasks/LocalModGetTask.h new file mode 100644 index 00000000..5b741122 --- /dev/null +++ b/launcher/minecraft/mod/tasks/LocalModGetTask.h @@ -0,0 +1,46 @@ +// 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 "minecraft/mod/MetadataHandler.h" +#include "tasks/Task.h" + +class LocalModGetTask : public Task { + Q_OBJECT + public: + using Ptr = shared_qobject_ptr<LocalModGetTask>; + + explicit LocalModGetTask(QDir index_dir, QVariant addonId); + + auto canAbort() const -> bool override { return true; } + auto abort() -> bool override; + + protected slots: + //! Entry point for tasks. + void executeTask() override; + + signals: + void getMod(Metadata::ModStruct); + + private: + QDir m_index_dir; + QVariant m_addonId; +}; |