From 7f24e2dd4c89fe78629d3c750ecbecbc226c1967 Mon Sep 17 00:00:00 2001 From: justforlxz Date: Tue, 23 Apr 2024 15:52:10 +0800 Subject: [PATCH 1/2] chore: add open workspace item add open workspace item Log: --- panels/dock/CMakeLists.txt | 1 + panels/dock/multitaskview/CMakeLists.txt | 15 ++++++ panels/dock/multitaskview/multitaskview.cpp | 53 +++++++++++++++++++ panels/dock/multitaskview/multitaskview.h | 32 +++++++++++ .../dock/multitaskview/package/metadata.json | 8 +++ .../multitaskview/package/multitaskview.qml | 48 +++++++++++++++++ .../org.deepin.ds.dock.multitaskview.ts | 12 +++++ .../org.deepin.ds.dock.multitaskview_az.ts | 12 +++++ .../org.deepin.ds.dock.multitaskview_bo.ts | 12 +++++ .../org.deepin.ds.dock.multitaskview_ca.ts | 12 +++++ .../org.deepin.ds.dock.multitaskview_es.ts | 12 +++++ .../org.deepin.ds.dock.multitaskview_fi.ts | 12 +++++ .../org.deepin.ds.dock.multitaskview_fr.ts | 12 +++++ .../org.deepin.ds.dock.multitaskview_hu.ts | 12 +++++ .../org.deepin.ds.dock.multitaskview_it.ts | 12 +++++ .../org.deepin.ds.dock.multitaskview_ja.ts | 12 +++++ .../org.deepin.ds.dock.multitaskview_ko.ts | 12 +++++ .../org.deepin.ds.dock.multitaskview_nb_NO.ts | 12 +++++ .../org.deepin.ds.dock.multitaskview_pl.ts | 12 +++++ .../org.deepin.ds.dock.multitaskview_pt_BR.ts | 12 +++++ .../org.deepin.ds.dock.multitaskview_ru.ts | 12 +++++ .../org.deepin.ds.dock.multitaskview_uk.ts | 12 +++++ .../org.deepin.ds.dock.multitaskview_zh_CN.ts | 12 +++++ .../org.deepin.ds.dock.multitaskview_zh_HK.ts | 12 +++++ .../org.deepin.ds.dock.multitaskview_zh_TW.ts | 12 +++++ 25 files changed, 385 insertions(+) create mode 100644 panels/dock/multitaskview/CMakeLists.txt create mode 100644 panels/dock/multitaskview/multitaskview.cpp create mode 100644 panels/dock/multitaskview/multitaskview.h create mode 100644 panels/dock/multitaskview/package/metadata.json create mode 100644 panels/dock/multitaskview/package/multitaskview.qml create mode 100644 panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview.ts create mode 100644 panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_az.ts create mode 100644 panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_bo.ts create mode 100644 panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_ca.ts create mode 100644 panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_es.ts create mode 100644 panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_fi.ts create mode 100644 panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_fr.ts create mode 100644 panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_hu.ts create mode 100644 panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_it.ts create mode 100644 panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_ja.ts create mode 100644 panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_ko.ts create mode 100644 panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_nb_NO.ts create mode 100644 panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_pl.ts create mode 100644 panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_pt_BR.ts create mode 100644 panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_ru.ts create mode 100644 panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_uk.ts create mode 100644 panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_zh_CN.ts create mode 100644 panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_zh_HK.ts create mode 100644 panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_zh_TW.ts diff --git a/panels/dock/CMakeLists.txt b/panels/dock/CMakeLists.txt index 3324b6c48..9b6cb35d6 100644 --- a/panels/dock/CMakeLists.txt +++ b/panels/dock/CMakeLists.txt @@ -86,6 +86,7 @@ add_subdirectory(launcherItem) add_subdirectory(showdesktop) add_subdirectory(taskmanager) add_subdirectory(tray) +add_subdirectory(multitaskview) # dock plugin load program add_subdirectory(dockplugin) diff --git a/panels/dock/multitaskview/CMakeLists.txt b/panels/dock/multitaskview/CMakeLists.txt new file mode 100644 index 000000000..da86f3a38 --- /dev/null +++ b/panels/dock/multitaskview/CMakeLists.txt @@ -0,0 +1,15 @@ +# SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +# +# SPDX-License-Identifier: GPL-3.0-or-later + +add_library(dock-multitaskview SHARED + multitaskview.cpp + multitaskview.h +) + +target_link_libraries(dock-multitaskview PRIVATE + dde-shell-frame +) + +ds_install_package(PACKAGE org.deepin.ds.dock.multitaskview TARGET dock-multitaskview) +ds_handle_package_translation(PACKAGE org.deepin.ds.dock.multitaskview) diff --git a/panels/dock/multitaskview/multitaskview.cpp b/panels/dock/multitaskview/multitaskview.cpp new file mode 100644 index 000000000..407e7ec2b --- /dev/null +++ b/panels/dock/multitaskview/multitaskview.cpp @@ -0,0 +1,53 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "applet.h" +#include "multitaskview.h" +#include "pluginfactory.h" + +#include + +namespace dock { + +MultiTaskView::MultiTaskView(QObject *parent) + : DApplet(parent) + , m_iconName("deepin-multitasking-view") +{ + +} + +bool MultiTaskView::init() +{ + DApplet::init(); + return true; +} + +void MultiTaskView::openWorkspace() +{ + DDBusSender() + .service("com.deepin.wm") + .path("/com/deepin/wm") + .interface("com.deepin.wm") + .method("ShowWorkspace") + .call(); +} + +QString MultiTaskView::iconName() const +{ + return m_iconName; +} + +void MultiTaskView::setIconName(const QString& iconName) +{ + if (iconName != m_iconName) { + m_iconName = iconName; + Q_EMIT iconNameChanged(); + } +} + +D_APPLET_CLASS(MultiTaskView) +} + + +#include "multitaskview.moc" diff --git a/panels/dock/multitaskview/multitaskview.h b/panels/dock/multitaskview/multitaskview.h new file mode 100644 index 000000000..85e40b589 --- /dev/null +++ b/panels/dock/multitaskview/multitaskview.h @@ -0,0 +1,32 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#pragma once + +#include "applet.h" +#include "dsglobal.h" + +namespace dock { + +class MultiTaskView : public DS_NAMESPACE::DApplet +{ + Q_OBJECT + Q_PROPERTY(QString iconName READ iconName WRITE setIconName NOTIFY iconNameChanged FINAL) +public: + explicit MultiTaskView(QObject *parent = nullptr); + virtual bool init() override; + + QString iconName() const; + void setIconName(const QString& iconName); + + Q_INVOKABLE void openWorkspace(); + +Q_SIGNALS: + void iconNameChanged(); + +private: + QString m_iconName; +}; + +} diff --git a/panels/dock/multitaskview/package/metadata.json b/panels/dock/multitaskview/package/metadata.json new file mode 100644 index 000000000..51c517023 --- /dev/null +++ b/panels/dock/multitaskview/package/metadata.json @@ -0,0 +1,8 @@ +{ + "Plugin": { + "Version": "1.0", + "Id": "org.deepin.ds.dock.multitaskview", + "Url": "multitaskview.qml", + "Parent": "org.deepin.ds.dock" + } +} diff --git a/panels/dock/multitaskview/package/multitaskview.qml b/panels/dock/multitaskview/package/multitaskview.qml new file mode 100644 index 000000000..12f5d19b6 --- /dev/null +++ b/panels/dock/multitaskview/package/multitaskview.qml @@ -0,0 +1,48 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +import QtQuick 2.15 +import QtQuick.Controls 2.15 + +import org.deepin.ds 1.0 +import org.deepin.dtk 1.0 as D +import org.deepin.ds.dock 1.0 + +AppletItem { + id: toggleworkspace + property bool useColumnLayout: Panel.position % 2 + property int dockOrder: 13 + // 1:4 the distance between app : dock height; get width/height≈0.8 + implicitWidth: useColumnLayout ? Panel.rootObject.dockSize : Panel.rootObject.dockItemMaxSize * 0.8 + implicitHeight: useColumnLayout ? Panel.rootObject.dockItemMaxSize * 0.8 : Panel.rootObject.dockSize + + PanelToolTip { + id: toolTip + text: qsTr("Open Workspace") + } + + D.ActionButton { + id: action + anchors.centerIn: parent + icon.name: Applet.iconName + scale: Panel.rootObject.itemScale + // 9:14 (iconSize/dockHeight) + icon.height: Panel.rootObject.itemIconSizeBase * 0.643 + icon.width: Panel.rootObject.itemIconSizeBase * 0.643 + onClicked: { + Applet.openWorkspace() + toolTip.close() + } + onHoveredChanged: { + if (hovered) { + var point = Applet.rootObject.mapToItem(null, Applet.rootObject.width / 2, 0) + toolTip.toolTipX = point.x + toolTip.toolTipY = point.y + toolTip.open() + } else { + toolTip.close() + } + } + } +} diff --git a/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview.ts b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview.ts new file mode 100644 index 000000000..a07377a42 --- /dev/null +++ b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview.ts @@ -0,0 +1,12 @@ + + + + + multitaskview + + + Open Workspace + + + + diff --git a/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_az.ts b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_az.ts new file mode 100644 index 000000000..a07377a42 --- /dev/null +++ b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_az.ts @@ -0,0 +1,12 @@ + + + + + multitaskview + + + Open Workspace + + + + diff --git a/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_bo.ts b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_bo.ts new file mode 100644 index 000000000..a07377a42 --- /dev/null +++ b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_bo.ts @@ -0,0 +1,12 @@ + + + + + multitaskview + + + Open Workspace + + + + diff --git a/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_ca.ts b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_ca.ts new file mode 100644 index 000000000..a07377a42 --- /dev/null +++ b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_ca.ts @@ -0,0 +1,12 @@ + + + + + multitaskview + + + Open Workspace + + + + diff --git a/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_es.ts b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_es.ts new file mode 100644 index 000000000..a07377a42 --- /dev/null +++ b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_es.ts @@ -0,0 +1,12 @@ + + + + + multitaskview + + + Open Workspace + + + + diff --git a/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_fi.ts b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_fi.ts new file mode 100644 index 000000000..a07377a42 --- /dev/null +++ b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_fi.ts @@ -0,0 +1,12 @@ + + + + + multitaskview + + + Open Workspace + + + + diff --git a/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_fr.ts b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_fr.ts new file mode 100644 index 000000000..a07377a42 --- /dev/null +++ b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_fr.ts @@ -0,0 +1,12 @@ + + + + + multitaskview + + + Open Workspace + + + + diff --git a/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_hu.ts b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_hu.ts new file mode 100644 index 000000000..a07377a42 --- /dev/null +++ b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_hu.ts @@ -0,0 +1,12 @@ + + + + + multitaskview + + + Open Workspace + + + + diff --git a/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_it.ts b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_it.ts new file mode 100644 index 000000000..a07377a42 --- /dev/null +++ b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_it.ts @@ -0,0 +1,12 @@ + + + + + multitaskview + + + Open Workspace + + + + diff --git a/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_ja.ts b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_ja.ts new file mode 100644 index 000000000..a07377a42 --- /dev/null +++ b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_ja.ts @@ -0,0 +1,12 @@ + + + + + multitaskview + + + Open Workspace + + + + diff --git a/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_ko.ts b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_ko.ts new file mode 100644 index 000000000..a07377a42 --- /dev/null +++ b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_ko.ts @@ -0,0 +1,12 @@ + + + + + multitaskview + + + Open Workspace + + + + diff --git a/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_nb_NO.ts b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_nb_NO.ts new file mode 100644 index 000000000..a07377a42 --- /dev/null +++ b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_nb_NO.ts @@ -0,0 +1,12 @@ + + + + + multitaskview + + + Open Workspace + + + + diff --git a/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_pl.ts b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_pl.ts new file mode 100644 index 000000000..a07377a42 --- /dev/null +++ b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_pl.ts @@ -0,0 +1,12 @@ + + + + + multitaskview + + + Open Workspace + + + + diff --git a/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_pt_BR.ts b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_pt_BR.ts new file mode 100644 index 000000000..a07377a42 --- /dev/null +++ b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_pt_BR.ts @@ -0,0 +1,12 @@ + + + + + multitaskview + + + Open Workspace + + + + diff --git a/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_ru.ts b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_ru.ts new file mode 100644 index 000000000..a07377a42 --- /dev/null +++ b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_ru.ts @@ -0,0 +1,12 @@ + + + + + multitaskview + + + Open Workspace + + + + diff --git a/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_uk.ts b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_uk.ts new file mode 100644 index 000000000..a07377a42 --- /dev/null +++ b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_uk.ts @@ -0,0 +1,12 @@ + + + + + multitaskview + + + Open Workspace + + + + diff --git a/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_zh_CN.ts b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_zh_CN.ts new file mode 100644 index 000000000..27704f49f --- /dev/null +++ b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_zh_CN.ts @@ -0,0 +1,12 @@ + + + + + multitaskview + + + Open Workspace + 打开工作区 + + + diff --git a/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_zh_HK.ts b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_zh_HK.ts new file mode 100644 index 000000000..a07377a42 --- /dev/null +++ b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_zh_HK.ts @@ -0,0 +1,12 @@ + + + + + multitaskview + + + Open Workspace + + + + diff --git a/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_zh_TW.ts b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_zh_TW.ts new file mode 100644 index 000000000..a07377a42 --- /dev/null +++ b/panels/dock/multitaskview/translations/org.deepin.ds.dock.multitaskview_zh_TW.ts @@ -0,0 +1,12 @@ + + + + + multitaskview + + + Open Workspace + + + + From 1ce85789f95f9c4bd8785932d4c368c62efb9a23 Mon Sep 17 00:00:00 2001 From: justforlxz Date: Wed, 24 Apr 2024 13:26:00 +0800 Subject: [PATCH 2/2] fix: popup window cannot show on first run just use DPlatformWindowHandle in needed functions. Issue: https://github.com/linuxdeepin/developer-center/issues/8131 Log: --- panels/dock/tray/frame/util/dockpopupwindow.cpp | 9 +++++---- panels/dock/tray/frame/util/dockpopupwindow.h | 2 -- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/panels/dock/tray/frame/util/dockpopupwindow.cpp b/panels/dock/tray/frame/util/dockpopupwindow.cpp index e00430c23..c131c261b 100644 --- a/panels/dock/tray/frame/util/dockpopupwindow.cpp +++ b/panels/dock/tray/frame/util/dockpopupwindow.cpp @@ -17,6 +17,7 @@ #include #include +#include DWIDGET_USE_NAMESPACE @@ -34,7 +35,6 @@ DockPopupWindow::DockPopupWindow(QWidget *parent) { setContentsMargins(0, 0, 0, 0); m_wmHelper = DWindowManagerHelper::instance(); - m_windowHandle = new DPlatformWindowHandle(this); connect(m_wmHelper, &DWindowManagerHelper::hasCompositeChanged, this, &DockPopupWindow::updateRadius); @@ -240,9 +240,10 @@ bool DockPopupWindow::eventFilter(QObject *o, QEvent *e) void DockPopupWindow::updateRadius() { const bool hasComposite = m_wmHelper->hasComposite(); - m_windowHandle->setEnableBlurWindow(hasComposite); - m_windowHandle->setTranslucentBackground(hasComposite); - m_windowHandle->setWindowRadius((hasComposite ? m_radius : 0) * devicePixelRatioF()); + DPlatformWindowHandle handle(this); + handle.setEnableBlurWindow(hasComposite); + handle.setTranslucentBackground(hasComposite); + handle.setWindowRadius((hasComposite ? m_radius : 0) * devicePixelRatioF()); } void DockPopupWindow::ensureRaised() diff --git a/panels/dock/tray/frame/util/dockpopupwindow.h b/panels/dock/tray/frame/util/dockpopupwindow.h index 69577a6f1..a1a60cfc2 100644 --- a/panels/dock/tray/frame/util/dockpopupwindow.h +++ b/panels/dock/tray/frame/util/dockpopupwindow.h @@ -12,7 +12,6 @@ #include #include #include -#include #include #include @@ -74,7 +73,6 @@ private slots: XEventMonitor *m_eventMonitor; QString m_eventKey; DWindowManagerHelper *m_wmHelper; - DPlatformWindowHandle *m_windowHandle; bool m_enableMouseRelease; QWidget *m_extendWidget; QPointer m_lastWidget;