From 9fd43e1c4d88446c99b81813229f9ee299886f84 Mon Sep 17 00:00:00 2001 From: yexin Date: Wed, 29 Jul 2020 16:12:17 +0800 Subject: [PATCH] =?UTF-8?q?feat(multitaskingplugin):=20=E5=A4=9A=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=A7=86=E5=9B=BE=E4=BC=98=E5=8C=96=E9=9C=80=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 当前设备不支持特效就不显示多任务视图和右键插件 Log: 当前设备不支持特效就不显示多任务视图和右键插件 Task: https://pms.uniontech.com/zentao/task-view-30901.html Change-Id: Ief4b654831d20056072a160759b08a0c7af30f5c Reviewed-on: http://gerrit.uniontech.com/c/dde-dock/+/875 Reviewed-by: Reviewed-by: wangwei Reviewed-by: niecheng Tested-by: --- frame/util/docksettings.cpp | 6 ++++++ plugins/multitasking/CMakeLists.txt | 1 + plugins/multitasking/multitaskingplugin.cpp | 19 +++++++++++++++++-- plugins/multitasking/multitaskingplugin.h | 1 + 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/frame/util/docksettings.cpp b/frame/util/docksettings.cpp index 7de277e47..05ab87f54 100644 --- a/frame/util/docksettings.cpp +++ b/frame/util/docksettings.cpp @@ -305,6 +305,8 @@ void DockSettings::showDockSettingsMenu() m_autoHide = false; + bool hasComposite = DWindowManagerHelper::instance()->hasComposite(); + // create actions QList actions; for (auto *p : m_itemManager->pluginList()) { @@ -319,6 +321,10 @@ void DockSettings::showDockSettingsMenu() continue; } + if (name == "multitasking" && !hasComposite) { + continue; + } + QAction *act = new QAction(display, this); act->setCheckable(true); act->setChecked(enable); diff --git a/plugins/multitasking/CMakeLists.txt b/plugins/multitasking/CMakeLists.txt index ec7405847..618ddcd0f 100644 --- a/plugins/multitasking/CMakeLists.txt +++ b/plugins/multitasking/CMakeLists.txt @@ -16,6 +16,7 @@ add_definitions("${QT_DEFINITIONS} -DQT_PLUGIN") add_library(${PLUGIN_NAME} SHARED ${SRCS} resource.qrc) set_target_properties(${PLUGIN_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ../) target_include_directories(${PLUGIN_NAME} PUBLIC ${DtkWidget_INCLUDE_DIRS} ../../interfaces) + target_link_libraries(${PLUGIN_NAME} PRIVATE ${Qt5DBus_LIBRARIES} ${DtkWidget_LIBRARIES} diff --git a/plugins/multitasking/multitaskingplugin.cpp b/plugins/multitasking/multitaskingplugin.cpp index fc4273585..455314353 100644 --- a/plugins/multitasking/multitaskingplugin.cpp +++ b/plugins/multitasking/multitaskingplugin.cpp @@ -22,9 +22,12 @@ #include "multitaskingplugin.h" #include "../widgets/tipswidget.h" +#include + #include #define PLUGIN_STATE_KEY "enable" +DGUI_USE_NAMESPACE using namespace Dock; MultitaskingPlugin::MultitaskingPlugin(QObject *parent) @@ -34,6 +37,17 @@ MultitaskingPlugin::MultitaskingPlugin(QObject *parent) { m_tipsLabel->setVisible(false); m_tipsLabel->setObjectName("multitasking"); + + connect(DWindowManagerHelper::instance(), &DWindowManagerHelper::hasCompositeChanged, this, [ = ] { + if (!m_proxyInter) + return; + + if (DWindowManagerHelper::instance()->hasComposite()) { + m_proxyInter->itemAdded(this, PLUGIN_KEY); + } else { + m_proxyInter->itemRemoved(this, PLUGIN_KEY); + } + }); } const QString MultitaskingPlugin::pluginName() const @@ -165,10 +179,11 @@ PluginsItemInterface::PluginType MultitaskingPlugin::type() void MultitaskingPlugin::updateVisible() { - if (pluginIsDisable()) + if (pluginIsDisable() || !DWindowManagerHelper::instance()->hasComposite()) { m_proxyInter->itemRemoved(this, PLUGIN_KEY); - else + } else { m_proxyInter->itemAdded(this, PLUGIN_KEY); + } } void MultitaskingPlugin::loadPlugin() diff --git a/plugins/multitasking/multitaskingplugin.h b/plugins/multitasking/multitaskingplugin.h index a9c362e12..20c29c97a 100644 --- a/plugins/multitasking/multitaskingplugin.h +++ b/plugins/multitasking/multitaskingplugin.h @@ -26,6 +26,7 @@ #include "multitaskingwidget.h" #include + namespace Dock { class TipsWidget; }