Added curseforge export

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
Trial97
2023-06-22 20:03:44 +03:00
parent 4e07f9574a
commit 58321f3491
8 changed files with 341 additions and 10 deletions

View File

@ -18,6 +18,8 @@
#include "ExportMrPackDialog.h"
#include "minecraft/mod/ModFolderModel.h"
#include "modplatform/ModIndex.h"
#include "modplatform/flame/FlamePackExportTask.h"
#include "ui/dialogs/CustomMessageBox.h"
#include "ui/dialogs/ProgressDialog.h"
#include "ui_ExportMrPackDialog.h"
@ -32,12 +34,15 @@
#include "MMCZip.h"
#include "modplatform/modrinth/ModrinthPackExportTask.h"
ExportMrPackDialog::ExportMrPackDialog(InstancePtr instance, QWidget* parent)
: QDialog(parent), instance(instance), ui(new Ui::ExportMrPackDialog)
ExportMrPackDialog::ExportMrPackDialog(InstancePtr instance, QWidget* parent, ModPlatform::ResourceProvider provider)
: QDialog(parent), instance(instance), ui(new Ui::ExportMrPackDialog), m_provider(provider)
{
ui->setupUi(this);
ui->name->setText(instance->name());
ui->summary->setText(instance->notes().split(QRegularExpression("\\r?\\n"))[0]);
if (m_provider == ModPlatform::ResourceProvider::MODRINTH)
ui->summary->setText(instance->notes().split(QRegularExpression("\\r?\\n"))[0]);
else
ui->summaryLabel->setText("ProjectID");
// ensure a valid pack is generated
// the name and version fields mustn't be empty
@ -97,20 +102,25 @@ void ExportMrPackDialog::done(int result)
if (output.isEmpty())
return;
Task* task;
if (m_provider == ModPlatform::ResourceProvider::MODRINTH)
task = new ModrinthPackExportTask(ui->name->text(), ui->version->text(), ui->summary->text(), instance, output,
[this](const QString& path) { return proxy->blockedPaths().covers(path); });
else
task = new FlamePackExportTask(ui->name->text(), ui->version->text(), ui->summary->text(), instance, output,
[this](const QString& path) { return proxy->blockedPaths().covers(path); });
ModrinthPackExportTask task(ui->name->text(), ui->version->text(), ui->summary->text(), instance, output,
[this](const QString& path) { return proxy->blockedPaths().covers(path); });
connect(&task, &Task::failed,
connect(task, &Task::failed,
[this](const QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); });
connect(&task, &Task::aborted, [this] {
connect(task, &Task::aborted, [this] {
CustomMessageBox::selectable(this, tr("Task aborted"), tr("The task has been aborted by the user."), QMessageBox::Information)
->show();
});
connect(task, &Task::finished, [task] { task->deleteLater(); });
ProgressDialog progress(this);
progress.setSkipButton(true, tr("Abort"));
if (progress.execWithTask(&task) != QDialog::Accepted)
if (progress.execWithTask(task) != QDialog::Accepted)
return;
}

View File

@ -22,6 +22,7 @@
#include "BaseInstance.h"
#include "FastFileIconProvider.h"
#include "FileIgnoreProxy.h"
#include "modplatform/ModIndex.h"
namespace Ui {
class ExportMrPackDialog;
@ -31,7 +32,9 @@ class ExportMrPackDialog : public QDialog {
Q_OBJECT
public:
explicit ExportMrPackDialog(InstancePtr instance, QWidget* parent = nullptr);
explicit ExportMrPackDialog(InstancePtr instance,
QWidget* parent = nullptr,
ModPlatform::ResourceProvider provider = ModPlatform::ResourceProvider::MODRINTH);
~ExportMrPackDialog();
void done(int result) override;
@ -42,4 +45,5 @@ class ExportMrPackDialog : public QDialog {
Ui::ExportMrPackDialog* ui;
FileIgnoreProxy* proxy;
FastFileIconProvider icons;
const ModPlatform::ResourceProvider m_provider;
};