NOISSUE Display mod colours in optional mod dialog

This commit is contained in:
Jamie Mansfield 2022-05-02 20:27:20 +01:00
parent b433882ac1
commit dbe7d9ea2e
No known key found for this signature in database
GPG Key ID: 36F61598F39F67B0
3 changed files with 16 additions and 0 deletions

View File

@ -178,6 +178,7 @@ static void loadVersionMod(ATLauncher::VersionMod & p, QJsonObject & obj) {
p.depends.append(Json::requireValueString(depends));
}
}
p.colour = Json::ensureString(obj, QString("colour"), "");
p.warning = Json::ensureString(obj, QString("warning"), "");
p.client = Json::ensureBoolean(obj, QString("client"), false);
@ -252,6 +253,14 @@ void ATLauncher::loadVersion(PackVersion & v, QJsonObject & obj)
loadVersionConfigs(v.configs, configsObj);
}
if(obj.contains("colours")) {
auto colourObj = Json::requireObject(obj, "colours");
for (const auto &key : colourObj.keys()) {
v.colours[key] = Json::requireValueString(colourObj.value(key), "colour");
}
}
if(obj.contains("warnings")) {
auto warningsObj = Json::requireObject(obj, "warnings");

View File

@ -110,6 +110,7 @@ struct VersionMod
bool library;
QString group;
QVector<QString> depends;
QString colour;
QString warning;
bool client;
@ -155,6 +156,7 @@ struct PackVersion
QVector<VersionMod> mods;
VersionConfigs configs;
QMap<QString, QString> colours;
QMap<QString, QString> warnings;
VersionMessages messages;
};

View File

@ -73,6 +73,11 @@ QVariant AtlOptionalModListModel::data(const QModelIndex &index, int role) const
return mod.description;
}
}
else if (role == Qt::ForegroundRole) {
if (!mod.colour.isEmpty() && m_version.colours.contains(mod.colour)) {
return QColor(QString("#%1").arg(m_version.colours[mod.colour]));
}
}
else if (role == Qt::CheckStateRole) {
if (index.column() == EnabledColumn) {
return m_selection[mod.name] ? Qt::Checked : Qt::Unchecked;