aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrial97 <alexandru.tripon97@gmail.com>2023-04-11 20:55:10 +0300
committerTrial97 <alexandru.tripon97@gmail.com>2023-04-11 20:55:10 +0300
commitd524935b6726c1a8d589d01abad4d262a55af149 (patch)
treec0b24ee91815223d0909125aa1d38463134c3942
parent6d5c629b4316fb37b1ca0705c17867d6d9c771bd (diff)
downloadPrismLauncher-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.cpp51
-rw-r--r--launcher/minecraft/mod/tasks/LocalModGetTask.h46
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;
+};