ATLauncher: Display install messages if applicable

This commit is contained in:
Jamie Mansfield 2022-05-05 20:14:19 +01:00
parent 7c251efc47
commit 305973c0e7
No known key found for this signature in database
GPG Key ID: 36F61598F39F67B0
6 changed files with 126 additions and 36 deletions

View File

@ -95,14 +95,13 @@ void PackInstallTask::onDownloadSucceeded()
qDebug() << "PackInstallTask::onDownloadSucceeded: " << QThread::currentThreadId(); qDebug() << "PackInstallTask::onDownloadSucceeded: " << QThread::currentThreadId();
jobPtr.reset(); jobPtr.reset();
QJsonParseError parse_error; QJsonParseError parse_error {};
QJsonDocument doc = QJsonDocument::fromJson(response, &parse_error); QJsonDocument doc = QJsonDocument::fromJson(response, &parse_error);
if(parse_error.error != QJsonParseError::NoError) { if(parse_error.error != QJsonParseError::NoError) {
qWarning() << "Error while parsing JSON response from FTB at " << parse_error.offset << " reason: " << parse_error.errorString(); qWarning() << "Error while parsing JSON response from FTB at " << parse_error.offset << " reason: " << parse_error.errorString();
qWarning() << response; qWarning() << response;
return; return;
} }
auto obj = doc.object(); auto obj = doc.object();
ATLauncher::PackVersion version; ATLauncher::PackVersion version;
@ -117,6 +116,10 @@ void PackInstallTask::onDownloadSucceeded()
} }
m_version = version; m_version = version;
// Display install message if one exists
if (!m_version.messages.install.isEmpty())
m_support->displayMessage(m_version.messages.install);
auto ver = getComponentVersion("net.minecraft", m_version.minecraft); auto ver = getComponentVersion("net.minecraft", m_version.minecraft);
if (!ver) { if (!ver) {
emitFailed(tr("Failed to get local metadata index for '%1' v%2").arg("net.minecraft", m_version.minecraft)); emitFailed(tr("Failed to get local metadata index for '%1' v%2").arg("net.minecraft", m_version.minecraft));

View File

@ -1,4 +1,23 @@
// SPDX-License-Identifier: GPL-3.0-only
/* /*
* PolyMC - Minecraft Launcher
* Copyright (c) 2022 Jamie Mansfield <jmansfield@cadixdev.org>
*
* 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/>.
*
* This file incorporates work covered by the following copyright and
* permission notice:
*
* Copyright 2020-2021 Jamie Mansfield <jmansfield@cadixdev.org> * Copyright 2020-2021 Jamie Mansfield <jmansfield@cadixdev.org>
* Copyright 2021 Petr Mrazek <peterix@gmail.com> * Copyright 2021 Petr Mrazek <peterix@gmail.com>
* *
@ -45,6 +64,10 @@ public:
*/ */
virtual QString chooseVersion(Meta::VersionListPtr vlist, QString minecraftVersion) = 0; virtual QString chooseVersion(Meta::VersionListPtr vlist, QString minecraftVersion) = 0;
/**
* Requests a user interaction to display a message.
*/
virtual void displayMessage(QString message) = 0;
}; };
class PackInstallTask : public InstanceTask class PackInstallTask : public InstanceTask

View File

@ -1,4 +1,23 @@
// SPDX-License-Identifier: GPL-3.0-only
/* /*
* PolyMC - Minecraft Launcher
* Copyright (c) 2022 Jamie Mansfield <jmansfield@cadixdev.org>
*
* 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/>.
*
* This file incorporates work covered by the following copyright and
* permission notice:
*
* Copyright 2020-2021 Jamie Mansfield <jmansfield@cadixdev.org> * Copyright 2020-2021 Jamie Mansfield <jmansfield@cadixdev.org>
* Copyright 2021 Petr Mrazek <peterix@gmail.com> * Copyright 2021 Petr Mrazek <peterix@gmail.com>
* *
@ -186,6 +205,12 @@ static void loadVersionMod(ATLauncher::VersionMod & p, QJsonObject & obj) {
p.effectively_hidden = p.hidden || p.library; p.effectively_hidden = p.hidden || p.library;
} }
static void loadVersionMessages(ATLauncher::VersionMessages& m, QJsonObject& obj)
{
m.install = Json::ensureString(obj, "install", "");
m.update = Json::ensureString(obj, "update", "");
}
void ATLauncher::loadVersion(PackVersion & v, QJsonObject & obj) void ATLauncher::loadVersion(PackVersion & v, QJsonObject & obj)
{ {
v.version = Json::requireString(obj, "version"); v.version = Json::requireString(obj, "version");
@ -238,4 +263,7 @@ void ATLauncher::loadVersion(PackVersion & v, QJsonObject & obj)
for (const auto &key : colourObj.keys()) { for (const auto &key : colourObj.keys()) {
v.colours[key] = Json::requireString(colourObj.value(key), "colour"); v.colours[key] = Json::requireString(colourObj.value(key), "colour");
} }
auto messages = Json::ensureObject(obj, "messages");
loadVersionMessages(v.messages, messages);
} }

View File

@ -1,4 +1,23 @@
// SPDX-License-Identifier: GPL-3.0-only
/* /*
* PolyMC - Minecraft Launcher
* Copyright (c) 2022 Jamie Mansfield <jmansfield@cadixdev.org>
*
* 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/>.
*
* This file incorporates work covered by the following copyright and
* permission notice:
*
* Copyright 2020 Jamie Mansfield <jmansfield@cadixdev.org> * Copyright 2020 Jamie Mansfield <jmansfield@cadixdev.org>
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
@ -124,6 +143,12 @@ struct VersionConfigs
QString sha1; QString sha1;
}; };
struct VersionMessages
{
QString install;
QString update;
};
struct PackVersion struct PackVersion
{ {
QString version; QString version;
@ -138,6 +163,7 @@ struct PackVersion
VersionConfigs configs; VersionConfigs configs;
QMap<QString, QString> colours; QMap<QString, QString> colours;
VersionMessages messages;
}; };
void loadVersion(PackVersion & v, QJsonObject & obj); void loadVersion(PackVersion & v, QJsonObject & obj);

View File

@ -45,8 +45,12 @@
#include <BuildConfig.h> #include <BuildConfig.h>
#include <QMessageBox>
AtlPage::AtlPage(NewInstanceDialog* dialog, QWidget* parent) AtlPage::AtlPage(NewInstanceDialog* dialog, QWidget* parent)
: QWidget(parent), ui(new Ui::AtlPage), dialog(dialog) : QWidget(parent)
, ui(new Ui::AtlPage)
, dialog(dialog)
{ {
ui->setupUi(this); ui->setupUi(this);
@ -211,3 +215,8 @@ QString AtlPage::chooseVersion(Meta::VersionListPtr vlist, QString minecraftVers
vselect.exec(); vselect.exec();
return vselect.selectedVersion()->descriptor(); return vselect.selectedVersion()->descriptor();
} }
void AtlPage::displayMessage(QString message)
{
QMessageBox::information(this, tr("Installing"), message);
}

View File

@ -85,6 +85,7 @@ private:
QString chooseVersion(Meta::VersionListPtr vlist, QString minecraftVersion) override; QString chooseVersion(Meta::VersionListPtr vlist, QString minecraftVersion) override;
QVector<QString> chooseOptionalMods(ATLauncher::PackVersion version, QVector<ATLauncher::VersionMod> mods) override; QVector<QString> chooseOptionalMods(ATLauncher::PackVersion version, QVector<ATLauncher::VersionMod> mods) override;
void displayMessage(QString message) override;
private slots: private slots:
void triggerSearch(); void triggerSearch();