diff --git a/frame/util/abstractpluginscontroller.cpp b/frame/util/abstractpluginscontroller.cpp index cc585bb04..3eab4ab11 100644 --- a/frame/util/abstractpluginscontroller.cpp +++ b/frame/util/abstractpluginscontroller.cpp @@ -26,6 +26,11 @@ #include #include +static const QStringList CompatiblePluginApiList { + "1.1.1", + DOCK_PLUGIN_API_VERSION +}; + AbstractPluginsController::AbstractPluginsController(QObject *parent) : QObject(parent) , m_dbusDaemonInterface(QDBusConnection::sessionBus().interface()) @@ -134,10 +139,14 @@ void AbstractPluginsController::positionChanged() void AbstractPluginsController::loadPlugin(const QString &pluginFile) { QPluginLoader *pluginLoader = new QPluginLoader(pluginFile); - const auto meta = pluginLoader->metaData().value("MetaData").toObject(); - if (!meta.contains("api") || meta["api"].toString() != DOCK_PLUGIN_API_VERSION) + const QJsonObject &meta = pluginLoader->metaData().value("MetaData").toObject(); + const QString &pluginApi = meta.value("api").toString(); + if (pluginApi.isEmpty() || !CompatiblePluginApiList.contains(pluginApi)) { - qWarning() << objectName() << "plugin api version not matched! expect version:" << DOCK_PLUGIN_API_VERSION << pluginFile; + qWarning() << objectName() + << "plugin api version not matched! expect versions:" << CompatiblePluginApiList + << ", got version:" << pluginApi + << ", the plugin file is:" << pluginFile; return; } @@ -204,7 +213,10 @@ void AbstractPluginsController::refreshPluginSettings() return; } - // TODO: notify all plugins to reload plugin settings + // notify all plugins to reload plugin settings + for (PluginsItemInterface *pluginInter : m_pluginsMap.keys()) { + pluginInter->pluginSettingsChanged(); + } } bool AbstractPluginsController::eventFilter(QObject *o, QEvent *e) diff --git a/interfaces/constants.h b/interfaces/constants.h index 91314af54..38603ff84 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.1.1" +#define DOCK_PLUGIN_API_VERSION "1.2" #define PROP_DISPLAY_MODE "DisplayMode" /// diff --git a/interfaces/pluginsiteminterface.h b/interfaces/pluginsiteminterface.h index d290ab428..ebdfbfbab 100644 --- a/interfaces/pluginsiteminterface.h +++ b/interfaces/pluginsiteminterface.h @@ -211,6 +211,12 @@ public: return qApp->property(PROP_POSITION).value(); } + /// + /// \brief settingsChanged + /// override this function to receive plugin settings changed signal(DeepinSync) + /// + virtual void pluginSettingsChanged() {} + protected: /// /// \brief m_proxyInter