diff options
| author | Jeremy Rimpo <jeremy.rimpo@servermonkey.com> | 2020-09-20 19:06:10 -0500 |
|---|---|---|
| committer | Jeremy Rimpo <jeremy.rimpo@servermonkey.com> | 2020-09-20 19:06:10 -0500 |
| commit | dbe27903f406d269e94631d142d5f1b636289e79 (patch) | |
| tree | a39ddaed682be62999ceff909d5d1380c221e9b2 /src/modinforegular.cpp | |
| parent | 4d6f43926b5e37ed97d2c4066c21e609f5ceb537 (diff) | |
| parent | 35500736ab60ed1b30d5592e6edb5d38b57c66a0 (diff) | |
Merge remote-tracking branch 'origin/master' into master
Diffstat (limited to 'src/modinforegular.cpp')
| -rw-r--r-- | src/modinforegular.cpp | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/modinforegular.cpp b/src/modinforegular.cpp index 8ef8e007..bdbf6759 100644 --- a/src/modinforegular.cpp +++ b/src/modinforegular.cpp @@ -205,6 +205,17 @@ void ModInfoRegular::readMeta() } metaFile.endArray(); + // Plugin settings: + metaFile.beginGroup("Plugins"); + for (auto pluginName: metaFile.childGroups()) { + metaFile.beginGroup(pluginName); + for (auto settingKey : metaFile.childKeys()) { + m_PluginSettings[pluginName][settingKey] = metaFile.value(settingKey); + } + metaFile.endGroup(); + } + metaFile.endGroup(); + m_MetaInfoChanged = false; } @@ -251,6 +262,18 @@ void ModInfoRegular::saveMeta() } metaFile.endArray(); + // Plugin settings: + metaFile.remove("Plugins"); + metaFile.beginGroup("Plugins"); + for (const auto& [pluginName, pluginSettings]: m_PluginSettings) { + metaFile.beginGroup(pluginName); + for (const auto& [settingName, settingValue]: pluginSettings) { + metaFile.setValue(settingName, settingValue); + } + metaFile.endGroup(); + } + metaFile.endGroup(); + metaFile.sync(); // sync needs to be called to ensure the file is created if (metaFile.status() == QSettings::NoError) { @@ -850,3 +873,36 @@ std::vector<QString> ModInfoRegular::getIniTweaks() const metaFile.endArray(); return result; } + + +std::map<QString, QVariant> ModInfoRegular::pluginSettings(const QString& pluginName) const +{ + auto itp = m_PluginSettings.find(pluginName); + if (itp == std::end(m_PluginSettings)) { + return {}; + } + return itp->second; +} + +QVariant ModInfoRegular::pluginSetting(const QString& pluginName, const QString& key, const QVariant& defaultValue) const +{ + auto itp = m_PluginSettings.find(pluginName); + if (itp == std::end(m_PluginSettings)) { + return defaultValue; + } + + auto its = itp->second.find(key); + if (its == std::end(itp->second)) { + return defaultValue; + } + + return its->second; +} + +bool ModInfoRegular::setPluginSetting(const QString& pluginName, const QString& key, const QVariant& value) +{ + m_PluginSettings[pluginName][key] = value; + m_MetaInfoChanged = true; + saveMeta(); + return true; +} |
