aboutsummaryrefslogtreecommitdiff
path: root/launcher/modplatform/modpacksch/FTBPackInstallTask.h
diff options
context:
space:
mode:
Diffstat (limited to 'launcher/modplatform/modpacksch/FTBPackInstallTask.h')
-rw-r--r--launcher/modplatform/modpacksch/FTBPackInstallTask.h80
1 files changed, 58 insertions, 22 deletions
diff --git a/launcher/modplatform/modpacksch/FTBPackInstallTask.h b/launcher/modplatform/modpacksch/FTBPackInstallTask.h
index ff59b695..e63ca0df 100644
--- a/launcher/modplatform/modpacksch/FTBPackInstallTask.h
+++ b/launcher/modplatform/modpacksch/FTBPackInstallTask.h
@@ -1,18 +1,38 @@
+// SPDX-License-Identifier: GPL-3.0-only
/*
- * Copyright 2020-2021 Jamie Mansfield <jmansfield@cadixdev.org>
- * Copyright 2020-2021 Petr Mrazek <peterix@gmail.com>
+ * PolyMC - Minecraft Launcher
+ * Copyright (C) 2022 flowln <flowlnlnln@gmail.com>
+ * Copyright (C) 2022 Sefa Eyeoglu <contact@scrumplex.net>
*
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * 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.
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * 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.
*
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ *
+ * This file incorporates work covered by the following copyright and
+ * permission notice:
+ *
+ * Copyright 2020-2021 Jamie Mansfield <jmansfield@cadixdev.org>
+ * Copyright 2020-2021 Petr Mrazek <peterix@gmail.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*/
#pragma once
@@ -20,44 +40,60 @@
#include "FTBPackManifest.h"
#include "InstanceTask.h"
+#include "QObjectPtr.h"
+#include "modplatform/flame/FileResolvingTask.h"
#include "net/NetJob.h"
+#include <QWidget>
+
namespace ModpacksCH {
-class PackInstallTask : public InstanceTask
+class PackInstallTask final : public InstanceTask
{
Q_OBJECT
public:
- explicit PackInstallTask(Modpack pack, QString version);
- virtual ~PackInstallTask(){}
+ explicit PackInstallTask(Modpack pack, QString version, QWidget* parent = nullptr);
+ ~PackInstallTask() override = default;
- bool canAbort() const override { return true; }
+ bool canAbort() const override { return m_abortable; }
bool abort() override;
protected:
- virtual void executeTask() override;
+ void executeTask() override;
private slots:
- void onDownloadSucceeded();
- void onDownloadFailed(QString reason);
+ void onManifestDownloadSucceeded();
+ void onResolveModsSucceeded();
+ void onModDownloadSucceeded();
+
+ void onManifestDownloadFailed(QString reason);
+ void onResolveModsFailed(QString reason);
+ void onModDownloadFailed(QString reason);
private:
+ void resolveMods();
void downloadPack();
void install();
private:
- bool abortable = false;
+ bool m_abortable = true;
+
+ NetJob::Ptr m_net_job = nullptr;
+ shared_qobject_ptr<Flame::FileResolvingTask> m_mod_id_resolver_task = nullptr;
+
+ QList<int> m_file_id_map;
- NetJob::Ptr jobPtr;
- QByteArray response;
+ QByteArray m_response;
Modpack m_pack;
QString m_version_name;
Version m_version;
- QMap<QString, QString> filesToCopy;
+ QMap<QString, QString> m_files_to_copy;
+ //FIXME: nuke
+ QWidget* m_parent;
};
}