From a6b9fa66a3c88fb06acb3432c16c3a360b50826d Mon Sep 17 00:00:00 2001 From: zhaoyingzhen Date: Tue, 17 Dec 2024 10:56:44 +0800 Subject: [PATCH] fix: Shutdown plugin miss menu function as title Log: as title Bug: BUG-294875 --- applets/dde-shutdown/shutdownapplet.cpp | 36 +++++++++---------- applets/dde-shutdown/shutdownapplet.h | 4 +-- debian/control | 4 +-- example/lockscreen-example/package/main.qml | 6 ++-- panels/dock/DockCompositor.qml | 6 ++-- panels/dock/pluginmanagerextension.cpp | 4 +-- panels/dock/pluginmanagerextension_p.h | 4 +-- panels/dock/tray/package/tray.qml | 4 +-- .../dock/tray/quickpanel/PanelPluginPage.qml | 3 +- 9 files changed, 34 insertions(+), 37 deletions(-) diff --git a/applets/dde-shutdown/shutdownapplet.cpp b/applets/dde-shutdown/shutdownapplet.cpp index cac6cada9..540e40fc6 100644 --- a/applets/dde-shutdown/shutdownapplet.cpp +++ b/applets/dde-shutdown/shutdownapplet.cpp @@ -34,11 +34,25 @@ bool ShutdownApplet::load() return true; } -bool ShutdownApplet::requestShutdown() +bool ShutdownApplet::requestShutdown(const QString &type) { - qDebug() << "request shutdown"; + qDebug() << "request shutdown:" << type; if (m_lockscreen) { - m_lockscreen->shutdown(); + if (type.isEmpty()) { + // TODO: left mouse clicked, show shutdown page + m_lockscreen->shutdown(); + } else if (type == QStringLiteral("Shutdown")) { + m_lockscreen->shutdown(); + } else if (type == QStringLiteral("Lock")) { + m_lockscreen->lock(); + } else if (type == QStringLiteral("SwitchUser")) { + m_lockscreen->switchUser(); + } else if (type == QStringLiteral("UpdateAndShutdown") || type == QStringLiteral("UpdateAndReboot") || + type == QStringLiteral("Suspend") || type == QStringLiteral("Hibernate") || + type == QStringLiteral("Restart") || type == QStringLiteral("Logout")) { + // TODO: implement these types + m_lockscreen->shutdown(); + } } else { DDBusSender() .service("org.deepin.dde.ShutdownFront1") @@ -51,22 +65,6 @@ bool ShutdownApplet::requestShutdown() return true; } -bool ShutdownApplet::requestLock() -{ - if (m_lockscreen) { - m_lockscreen->lock(); - } - return true; -} - -bool ShutdownApplet::requestSwitchUser() -{ - if (m_lockscreen) { - m_lockscreen->switchUser(); - } - return true; -} - D_APPLET_CLASS(ShutdownApplet) } DS_END_NAMESPACE diff --git a/applets/dde-shutdown/shutdownapplet.h b/applets/dde-shutdown/shutdownapplet.h index daa113cc4..b8ca38def 100644 --- a/applets/dde-shutdown/shutdownapplet.h +++ b/applets/dde-shutdown/shutdownapplet.h @@ -19,9 +19,7 @@ class ShutdownApplet : public DApplet virtual bool load() override; public Q_SLOTS: - bool requestShutdown(); - bool requestLock(); - bool requestSwitchUser(); + bool requestShutdown(const QString &type); private: QScopedPointer m_lockscreen; diff --git a/debian/control b/debian/control index ae5462643..723ba3d2a 100644 --- a/debian/control +++ b/debian/control @@ -32,7 +32,7 @@ Build-Depends: libqt6svg6, libdtk6declarative, qml6-module-qtquick-controls2-styles-chameleon, qt6-declarative-private-dev, libyaml-cpp-dev, - qt6-l10n-tools, qt6-svg-dev, dde-tray-loader-dev (> 1.99.6), + qt6-l10n-tools, qt6-svg-dev, dde-tray-loader-dev (> 1.99.8), dde-application-manager-api (>= 1.2.16), dde-control-center-dev (>= 6.0.73) Standards-Version: 3.9.8 Homepage: http://www.deepin.org @@ -60,7 +60,7 @@ Depends: ${shlibs:Depends}, ${misc:Depends}, libdde-shell( =${binary:Version}), libdtk6declarative, qml6-module-qtquick-controls2-styles-chameleon, qml6-module-qtquick-layouts, qml6-module-qtquick-window, qml6-module-qt-labs-platform, qml6-module-qt-labs-qmlmodels, - dde-tray-loader (> 1.99.6) + dde-tray-loader (> 1.99.8) Multi-Arch: same Description: An wrapper for developed based on dde-shell plugin system diff --git a/example/lockscreen-example/package/main.qml b/example/lockscreen-example/package/main.qml index 61ccdec70..7c4b76511 100644 --- a/example/lockscreen-example/package/main.qml +++ b/example/lockscreen-example/package/main.qml @@ -27,7 +27,7 @@ AppletItem { onClicked: { let lockscreen = lockscreenApplet() if (lockscreen) { - lockscreen.requestLock() + lockscreen.requestShutdown("Lock") } } } @@ -36,7 +36,7 @@ AppletItem { onClicked: { let lockscreen = lockscreenApplet() if (lockscreen) { - lockscreen.requestShutdown() + lockscreen.requestShutdown("Shutdown") } } } @@ -45,7 +45,7 @@ AppletItem { onClicked: { let lockscreen = lockscreenApplet() if (lockscreen) { - lockscreen.requestSwitchUser() + lockscreen.requestShutdown("SwitchUser") } } } diff --git a/panels/dock/DockCompositor.qml b/panels/dock/DockCompositor.qml index 4fd494d0e..58a274f65 100644 --- a/panels/dock/DockCompositor.qml +++ b/panels/dock/DockCompositor.qml @@ -28,7 +28,7 @@ Item { signal pluginSurfacesUpdated() signal popupCreated(var popup) - signal requestShutdown() + signal requestShutdown(var type) function removeDockPluginSurface(model, object) { for (var i = 0; i < model.count; ++i) { @@ -104,8 +104,8 @@ Item { dockCompositor.popupCreated(popup) } - onRequestShutdown: { - dockCompositor.requestShutdown() + onRequestShutdown: (type) => { + dockCompositor.requestShutdown(type) } } diff --git a/panels/dock/pluginmanagerextension.cpp b/panels/dock/pluginmanagerextension.cpp index bc3d2f264..b38f54271 100644 --- a/panels/dock/pluginmanagerextension.cpp +++ b/panels/dock/pluginmanagerextension.cpp @@ -186,10 +186,10 @@ void PluginSurface::plugin_dcc_icon(Resource *resource, const QString &icon) m_dccIcon = icon; } -void PluginSurface::plugin_request_shutdown(Resource *resource) +void PluginSurface::plugin_request_shutdown(Resource *resource, const QString &type) { Q_UNUSED(resource); - Q_EMIT m_manager->requestShutdown(); + Q_EMIT m_manager->requestShutdown(type); } void PluginSurface::plugin_destroy_resource(Resource *resource) diff --git a/panels/dock/pluginmanagerextension_p.h b/panels/dock/pluginmanagerextension_p.h index dcf2b980d..4f1d2cda2 100644 --- a/panels/dock/pluginmanagerextension_p.h +++ b/panels/dock/pluginmanagerextension_p.h @@ -82,7 +82,7 @@ class PluginManager : public QWaylandCompositorExtensionTemplate, void pluginSurfaceDestroyed(PluginSurface*); void messageRequest(PluginSurface *, const QString &msg); void dockSizeChanged(); - void requestShutdown(); + void requestShutdown(const QString &type); protected: virtual void plugin_manager_v1_request_message(Resource *resource, const QString &plugin_id, const QString &item_key, const QString &msg) override; @@ -169,7 +169,7 @@ class PluginSurface : public QWaylandShellSurfaceTemplate, public protected: virtual void plugin_mouse_event(Resource *resource, int32_t type) override; virtual void plugin_dcc_icon(Resource *resource, const QString &icon) override; - virtual void plugin_request_shutdown(Resource *resource) override; + virtual void plugin_request_shutdown(Resource *resource, const QString &type) override; virtual void plugin_destroy_resource(Resource *resource) override; virtual void plugin_destroy(Resource *resource) override; virtual void plugin_source_size(Resource *resource, int32_t width, int32_t height) override; diff --git a/panels/dock/tray/package/tray.qml b/panels/dock/tray/package/tray.qml index ce6ac402b..4795b57f9 100644 --- a/panels/dock/tray/package/tray.qml +++ b/panels/dock/tray/package/tray.qml @@ -157,10 +157,10 @@ AppletItem { console.log("onPluginSurfacesUpdated", surfacesData.length) } - function onRequestShutdown() { + function onRequestShutdown(type) { var shutdown = DS.applet("org.deepin.ds.dde-shutdown") if (shutdown) { - shutdown.requestShutdown() + shutdown.requestShutdown(type) } else { console.warn("shutdown applet not found") } diff --git a/panels/dock/tray/quickpanel/PanelPluginPage.qml b/panels/dock/tray/quickpanel/PanelPluginPage.qml index e90e05190..d38f360ae 100644 --- a/panels/dock/tray/quickpanel/PanelPluginPage.qml +++ b/panels/dock/tray/quickpanel/PanelPluginPage.qml @@ -60,7 +60,8 @@ Item { console.log("clicked shutdown") var shutdown = DS.applet("org.deepin.ds.dde-shutdown") if (shutdown) { - shutdown.requestShutdown() + // type is empty: just show shutdown page + shutdown.requestShutdown("") } else { console.warn("shutdown applet not found") }