From e7002b8f285c06cf6c6292701d6ac096b6dd1d43 Mon Sep 17 00:00:00 2001 From: listenerri Date: Thu, 14 Feb 2019 17:20:56 +0800 Subject: [PATCH] feat: update dock plugin version add new interface for remove plugin settings PluginProxyInterface Change-Id: Ib26c879b3b5faa822adbee5bf33c1bae3935b7c1 --- frame/util/abstractpluginscontroller.cpp | 16 ++++++++++++++++ frame/util/abstractpluginscontroller.h | 1 + interfaces/constants.h | 2 +- interfaces/pluginproxyinterface.h | 8 ++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/frame/util/abstractpluginscontroller.cpp b/frame/util/abstractpluginscontroller.cpp index 92206fe7b..433695af7 100644 --- a/frame/util/abstractpluginscontroller.cpp +++ b/frame/util/abstractpluginscontroller.cpp @@ -28,6 +28,7 @@ static const QStringList CompatiblePluginApiList { "1.1.1", + "1.2", DOCK_PLUGIN_API_VERSION }; @@ -69,6 +70,21 @@ const QVariant AbstractPluginsController::getValue(PluginsItemInterface *const i return v; } +void AbstractPluginsController::removeValue(PluginsItemInterface * const itemInter, const QStringList &keyList) +{ + if (keyList.isEmpty()) { + m_pluginSettingsObject.remove(itemInter->pluginName()); + } else { + QJsonObject localObject = m_pluginSettingsObject.value(itemInter->pluginName()).toObject(); + for (auto key : keyList) { + localObject.remove(key); + } + m_pluginSettingsObject.insert(itemInter->pluginName(), localObject); + } + + m_dockDaemonInter->RemovePluginSettings(itemInter->pluginName(), keyList); +} + QMap > &AbstractPluginsController::pluginsMap() { return m_pluginsMap; diff --git a/frame/util/abstractpluginscontroller.h b/frame/util/abstractpluginscontroller.h index 885ecbc4c..ab1a25c58 100644 --- a/frame/util/abstractpluginscontroller.h +++ b/frame/util/abstractpluginscontroller.h @@ -45,6 +45,7 @@ public: // implements PluginProxyInterface void saveValue(PluginsItemInterface *const itemInter, const QString &key, const QVariant &value) Q_DECL_OVERRIDE; const QVariant getValue(PluginsItemInterface *const itemInter, const QString &key, const QVariant& fallback = QVariant()) Q_DECL_OVERRIDE; + void removeValue(PluginsItemInterface * const itemInter, const QStringList &keyList) override; protected: QMap> &pluginsMap(); diff --git a/interfaces/constants.h b/interfaces/constants.h index 38603ff84..bb25f0362 100644 --- a/interfaces/constants.h +++ b/interfaces/constants.h @@ -27,7 +27,7 @@ namespace Dock { #define DOCK_PLUGIN_MIME "dock/plugin" -#define DOCK_PLUGIN_API_VERSION "1.2" +#define DOCK_PLUGIN_API_VERSION "1.2.1" #define PROP_DISPLAY_MODE "DisplayMode" /// diff --git a/interfaces/pluginproxyinterface.h b/interfaces/pluginproxyinterface.h index 2105ee13e..8d59c1409 100644 --- a/interfaces/pluginproxyinterface.h +++ b/interfaces/pluginproxyinterface.h @@ -85,6 +85,14 @@ public: /// return value from .config/deepin/dde-dock.conf /// virtual const QVariant getValue(PluginsItemInterface *const itemInter, const QString &key, const QVariant& fallback = QVariant()) = 0; + + /// + /// \brief removeValue + /// remove the values specified by keyList + /// remove all values of itemInter if keyList is empty + /// SeeAlse: saveValue + /// + virtual void removeValue(PluginsItemInterface *const itemInter, const QStringList &keyList) = 0; }; #endif // PLUGINPROXYINTERFACE_H