From 7658f813f69b96f8ba79b546208d0a7da3a27ff4 Mon Sep 17 00:00:00 2001 From: donghualin Date: Tue, 8 Nov 2022 02:27:01 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=A0=8F=E5=8A=A0=E8=BD=BD=E8=80=81=E7=89=88=E6=9C=AC=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E7=9A=84=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 老版本插件的加载通过插件的版本号进行判断,若插件版本不在版本列表中,则无需加载 Log: 优化任务栏加载老版本插件的方式 Influence: 任务栏启动的时候,观察老版本的插件(例如U盘插件等其他v20插件)是否正常加载 Task: https://pms.uniontech.com/task-view-112073.html Change-Id: I57b56276ee0cef14b59ff4b8bb8e223e0177f3bd --- frame/util/abstractpluginscontroller.cpp | 11 ++++++++--- interfaces/pluginsiteminterface.h | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/frame/util/abstractpluginscontroller.cpp b/frame/util/abstractpluginscontroller.cpp index 82e39a555..297fca71f 100644 --- a/frame/util/abstractpluginscontroller.cpp +++ b/frame/util/abstractpluginscontroller.cpp @@ -274,9 +274,12 @@ void AbstractPluginsController::loadPlugin(const QString &pluginFile) pluginIsValid = false; } - PluginsItemInterface *interface = qobject_cast(pluginLoader->instance()); - if (!interface) { - // 如果识别当前插件失败,就认为这个插件是v20的插件,将其转换为v20插件接口 + PluginsItemInterface *interface = nullptr; + // 如果版本是2.0.0,则认为是最新的插件,此时需要转换成v23的插件接口 + if (pluginApi == "2.0.0") { + interface = qobject_cast(pluginLoader->instance()); + } else if (pluginApi < "2.0.0") { + // 如果版本号小于2.0.0的,就认为这个插件是v20的插件,将其转换为v20插件接口 PluginsItemInterface_V20 *interface_v20 = qobject_cast(pluginLoader->instance()); if (interface_v20) { // 将v20插件接口通过适配器转换成v23的接口,方便在后面识别 @@ -286,6 +289,8 @@ void AbstractPluginsController::loadPlugin(const QString &pluginFile) m_pluginAdapterMap[(qulonglong)(interface_v20)] = pluginAdapter; interface = pluginAdapter; } + } else { + qWarning() << "the plugin is not valid " << pluginFile; } if (!interface) { diff --git a/interfaces/pluginsiteminterface.h b/interfaces/pluginsiteminterface.h index 0e148d599..ab0a98450 100644 --- a/interfaces/pluginsiteminterface.h +++ b/interfaces/pluginsiteminterface.h @@ -287,7 +287,7 @@ protected: QT_BEGIN_NAMESPACE -#define ModuleInterface_iid "com.deepin.dock.PluginsItemInterface_2_0_0" +#define ModuleInterface_iid "com.deepin.dock.PluginsItemInterface" Q_DECLARE_INTERFACE(PluginsItemInterface, ModuleInterface_iid) QT_END_NAMESPACE