summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikaël Capelle <capelle.mikael@gmail.com>2020-09-21 23:38:51 +0200
committerMikaël Capelle <capelle.mikael@gmail.com>2020-09-21 23:38:51 +0200
commit92c5b933cca71ce530c149471a1b71298bd8b4cd (patch)
tree9d43610a44368f2a6226075f59560e6ec31e1f9a
parent7563e4a517c93aeb65955985887dd0fbdbe224c7 (diff)
Add IModInterface::clearPluginSettings().
-rw-r--r--src/modinfoforeign.h1
-rw-r--r--src/modinfooverwrite.h1
-rw-r--r--src/modinforegular.cpp12
-rw-r--r--src/modinforegular.h1
4 files changed, 15 insertions, 0 deletions
diff --git a/src/modinfoforeign.h b/src/modinfoforeign.h
index 32484c64..f6c69e8a 100644
--- a/src/modinfoforeign.h
+++ b/src/modinfoforeign.h
@@ -69,6 +69,7 @@ public:
virtual QVariant pluginSetting(const QString& pluginName, const QString& key, const QVariant& defaultValue) const override { return defaultValue; }
virtual std::map<QString, QVariant> pluginSettings(const QString& pluginName) const override { return {}; }
virtual bool setPluginSetting(const QString& pluginName, const QString& key, const QVariant& value) override { return false; }
+ virtual std::map<QString, QVariant> clearPluginSettings(const QString& pluginName) override { return {}; }
ModInfo::EModType modType() const { return m_ModType; }
diff --git a/src/modinfooverwrite.h b/src/modinfooverwrite.h
index 1c14806d..9103252b 100644
--- a/src/modinfooverwrite.h
+++ b/src/modinfooverwrite.h
@@ -70,6 +70,7 @@ public:
virtual QVariant pluginSetting(const QString& pluginName, const QString& key, const QVariant& defaultValue) const override { return defaultValue; }
virtual std::map<QString, QVariant> pluginSettings(const QString& pluginName) const override { return {}; }
virtual bool setPluginSetting(const QString& pluginName, const QString& key, const QVariant& value) override { return false; }
+ virtual std::map<QString, QVariant> clearPluginSettings(const QString& pluginName) override { return {}; }
private:
ModInfoOverwrite(PluginContainer *pluginContainer, const MOBase::IPluginGame* game, MOShared::DirectoryEntry **directoryStructure);
diff --git a/src/modinforegular.cpp b/src/modinforegular.cpp
index bdbf6759..0ea5eae2 100644
--- a/src/modinforegular.cpp
+++ b/src/modinforegular.cpp
@@ -906,3 +906,15 @@ bool ModInfoRegular::setPluginSetting(const QString& pluginName, const QString&
saveMeta();
return true;
}
+
+std::map<QString, QVariant> ModInfoRegular::clearPluginSettings(const QString& pluginName)
+{
+ auto itp = m_PluginSettings.find(pluginName);
+ if (itp == std::end(m_PluginSettings)) {
+ return {};
+ }
+ auto settings = itp->second;
+ m_PluginSettings.erase(itp);
+ saveMeta();
+ return settings;
+}
diff --git a/src/modinforegular.h b/src/modinforegular.h
index 345c4b6e..743f17bd 100644
--- a/src/modinforegular.h
+++ b/src/modinforegular.h
@@ -407,6 +407,7 @@ public: // Plugin operations:
virtual QVariant pluginSetting(const QString& pluginName, const QString& key, const QVariant& defaultValue) const override;
virtual std::map<QString, QVariant> pluginSettings(const QString& pluginName) const override;
virtual bool setPluginSetting(const QString& pluginName, const QString& key, const QVariant& value) override;
+ virtual std::map<QString, QVariant> clearPluginSettings(const QString& pluginName) override;
private: