From dfeaa87049dfd8b09106df37c0a24171c00f4746 Mon Sep 17 00:00:00 2001
From: agsantos <aline.gondimsantos@savoirfairelinux.com>
Date: Mon, 24 Aug 2020 21:42:56 -0400
Subject: [PATCH] plugin:add editable preference

Change-Id: I7483021c6e866456638ff4285d2888d30454227e
---
 src/api/pluginmodel.h              | 11 ++++++++++-
 src/pluginmodel.cpp                |  8 ++++++++
 src/qtwrapper/pluginmanager.cpp    | 10 ++++++++++
 src/qtwrapper/pluginmanager_wrap.h |  4 ++++
 4 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/src/api/pluginmodel.h b/src/api/pluginmodel.h
index 8cf5dbd5..f268a36d 100644
--- a/src/api/pluginmodel.h
+++ b/src/api/pluginmodel.h
@@ -157,11 +157,20 @@ public:
     Q_INVOKABLE MapStringString getPluginPreferencesValues(const QString& path);
 
     /**
-     * Reste preferences values of installed plugin to default values
+     * Reset preferences values of installed plugin to default values
      * @return true if preference was succesfully reset
      */
     Q_INVOKABLE bool resetPluginPreferencesValues(const QString& path);
 
+    /**
+    * Add a possible value to a preference that can be edited by the user
+    * the only possibility at the moment is USERLIST option
+    * @return if addition was successfull
+    */
+    Q_INVOKABLE bool addValueToPreference(const QString& pluginId,
+                                          const QString& preferenceKey,
+                                          const QString& value);
+
 };
 
 } // namespace api
diff --git a/src/pluginmodel.cpp b/src/pluginmodel.cpp
index 11bd518a..7bfed841 100644
--- a/src/pluginmodel.cpp
+++ b/src/pluginmodel.cpp
@@ -191,6 +191,14 @@ PluginModel::resetPluginPreferencesValues(const QString& path)
     return PluginManager::instance().resetPluginPreferencesValues(path);
 }
 
+bool
+PluginModel::addValueToPreference(const QString& pluginId,
+    const QString& preferenceKey,
+    const QString& value)
+{
+    return PluginManager::instance().addValueToPreference(pluginId, preferenceKey, value);
+}
+
 } // namespace lrc
 
 #include "api/moc_pluginmodel.cpp"
diff --git a/src/qtwrapper/pluginmanager.cpp b/src/qtwrapper/pluginmanager.cpp
index 51ff960c..51b62084 100644
--- a/src/qtwrapper/pluginmanager.cpp
+++ b/src/qtwrapper/pluginmanager.cpp
@@ -124,3 +124,13 @@ PluginManagerInterface::resetPluginPreferencesValues(const QString& path)
 {
     return DRing::resetPluginPreferencesValues(path.toStdString());
 }
+
+bool
+PluginManagerInterface::addValueToPreference(const QString& pluginId,
+                                           const QString& preferenceKey,
+                                           const QString& value)
+{
+    return DRing::addValueToPreference(pluginId.toStdString(),
+                                       preferenceKey.toStdString(),
+                                       value.toStdString());
+}
diff --git a/src/qtwrapper/pluginmanager_wrap.h b/src/qtwrapper/pluginmanager_wrap.h
index e0a75512..f1ee3b82 100644
--- a/src/qtwrapper/pluginmanager_wrap.h
+++ b/src/qtwrapper/pluginmanager_wrap.h
@@ -79,6 +79,10 @@ public Q_SLOTS: // METHODS
     MapStringString getPluginPreferencesValues(const QString& path);
 
     bool resetPluginPreferencesValues(const QString& path);
+
+    bool addValueToPreference(const QString& pluginId,
+                              const QString& preferenceKey,
+                              const QString& value);
 };
 
 namespace org {
-- 
GitLab