diff options
| author | Al <26797547+Al12rs@users.noreply.github.com> | 2020-09-20 12:53:00 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-09-20 12:53:00 -0700 |
| commit | 35500736ab60ed1b30d5592e6edb5d38b57c66a0 (patch) | |
| tree | 1e3f97579507cec906bdbe2988aeeff8cc85b451 /src/modinforegular.cpp | |
| parent | 80ea74c70c196489c0e694f57e0b6de82f3e90f1 (diff) | |
| parent | 89c93c3d327d096cc35465b1557353861bbf76ca (diff) | |
Merge pull request #1237 from Holt59/mod-specific-plugin-settings
Add pluginSetting[s]() and setPluginSetting() to IModInterface.
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; +} |
