diff options
| author | Mikaël Capelle <capelle.mikael@gmail.com> | 2020-09-20 15:13:56 +0200 |
|---|---|---|
| committer | Mikaël Capelle <capelle.mikael@gmail.com> | 2020-09-20 15:13:56 +0200 |
| commit | 89c93c3d327d096cc35465b1557353861bbf76ca (patch) | |
| tree | 12a7431dfd888cbb5f7da2790d539d3c583010b2 /src/modinforegular.cpp | |
| parent | 4d9456dcf98a76a1af7f1287db67b4ba41c02b6b (diff) | |
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; +} |
