mirror of
https://github.com/MultiMC/MultiMC5.git
synced 2025-03-28 16:21:01 +00:00
NOISSUE Display warnings when selecting optional mods
This commit is contained in:
parent
41f728b22f
commit
c24a89f3af
@ -178,6 +178,7 @@ static void loadVersionMod(ATLauncher::VersionMod & p, QJsonObject & obj) {
|
|||||||
p.depends.append(Json::requireValueString(depends));
|
p.depends.append(Json::requireValueString(depends));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
p.warning = Json::ensureString(obj, QString("warning"), "");
|
||||||
|
|
||||||
p.client = Json::ensureBoolean(obj, QString("client"), false);
|
p.client = Json::ensureBoolean(obj, QString("client"), false);
|
||||||
|
|
||||||
@ -251,6 +252,14 @@ void ATLauncher::loadVersion(PackVersion & v, QJsonObject & obj)
|
|||||||
loadVersionConfigs(v.configs, configsObj);
|
loadVersionConfigs(v.configs, configsObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(obj.contains("warnings")) {
|
||||||
|
auto warningsObj = Json::requireObject(obj, "warnings");
|
||||||
|
|
||||||
|
for (const auto &key : warningsObj.keys()) {
|
||||||
|
v.warnings[key] = Json::requireValueString(warningsObj.value(key), "warning");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(obj.contains("messages")) {
|
if(obj.contains("messages")) {
|
||||||
auto messages = Json::requireObject(obj, "messages");
|
auto messages = Json::requireObject(obj, "messages");
|
||||||
loadVersionMessages(v.messages, messages);
|
loadVersionMessages(v.messages, messages);
|
||||||
|
@ -109,6 +109,7 @@ struct VersionMod
|
|||||||
bool library;
|
bool library;
|
||||||
QString group;
|
QString group;
|
||||||
QVector<QString> depends;
|
QVector<QString> depends;
|
||||||
|
QString warning;
|
||||||
|
|
||||||
bool client;
|
bool client;
|
||||||
|
|
||||||
@ -153,6 +154,7 @@ struct PackVersion
|
|||||||
QVector<VersionMod> mods;
|
QVector<VersionMod> mods;
|
||||||
VersionConfigs configs;
|
VersionConfigs configs;
|
||||||
|
|
||||||
|
QMap<QString, QString> warnings;
|
||||||
VersionMessages messages;
|
VersionMessages messages;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -17,6 +17,8 @@
|
|||||||
#include "AtlOptionalModDialog.h"
|
#include "AtlOptionalModDialog.h"
|
||||||
#include "ui_AtlOptionalModDialog.h"
|
#include "ui_AtlOptionalModDialog.h"
|
||||||
|
|
||||||
|
#include <QMessageBox>
|
||||||
|
|
||||||
AtlOptionalModListModel::AtlOptionalModListModel(QWidget *parent, ATLauncher::PackVersion version, QVector<ATLauncher::VersionMod> mods)
|
AtlOptionalModListModel::AtlOptionalModListModel(QWidget *parent, ATLauncher::PackVersion version, QVector<ATLauncher::VersionMod> mods)
|
||||||
: QAbstractListModel(parent), m_version(version), m_mods(mods) {
|
: QAbstractListModel(parent), m_version(version), m_mods(mods) {
|
||||||
|
|
||||||
@ -134,7 +136,21 @@ void AtlOptionalModListModel::clearAll() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void AtlOptionalModListModel::toggleMod(ATLauncher::VersionMod mod, int index) {
|
void AtlOptionalModListModel::toggleMod(ATLauncher::VersionMod mod, int index) {
|
||||||
setMod(mod, index, !m_selection[mod.name]);
|
auto enable = !m_selection[mod.name];
|
||||||
|
|
||||||
|
// If there is a warning for the mod, display that first (if we would be enabling the mod)
|
||||||
|
if (enable && !mod.warning.isEmpty() && m_version.warnings.contains(mod.warning)) {
|
||||||
|
auto message = QString("%1<br><br>%2")
|
||||||
|
.arg(m_version.warnings[mod.warning], tr("Are you sure that you want to enable this mod?"));
|
||||||
|
|
||||||
|
// fixme: avoid casting here
|
||||||
|
auto result = QMessageBox::warning((QWidget*) this->parent(), tr("Warning"), message, QMessageBox::Yes | QMessageBox::No);
|
||||||
|
if (result != QMessageBox::Yes) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setMod(mod, index, enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AtlOptionalModListModel::setMod(ATLauncher::VersionMod mod, int index, bool enable, bool shouldEmit) {
|
void AtlOptionalModListModel::setMod(ATLauncher::VersionMod mod, int index, bool enable, bool shouldEmit) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user