Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions interfaces/constants.h
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,9 @@ const QString PLUGIN_PROP_CHAMELEON_MARGIN = QStringLiteral("chameleonMargin");
const QString dockMenuItemId = QStringLiteral("dock-item-id");
const QString unDockMenuItemId = QStringLiteral("undock-item-id");

// 电源插件左键点击请求调出电源管理
const QString REQUEST_SHUTDOWN = QStringLiteral("requestShutdown");

}

Q_DECLARE_METATYPE(Dock::DisplayMode)
Expand Down
2 changes: 1 addition & 1 deletion plugins/dde-dock/shutdown/shutdownplugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ const QString ShutdownPlugin::itemCommand(const QString &itemKey)
{
Q_UNUSED(itemKey);

return QString("dbus-send --print-reply --dest=org.deepin.dde.ShutdownFront1 /org/deepin/dde/ShutdownFront1 org.deepin.dde.ShutdownFront1.Show");
return REQUEST_SHUTDOWN;
}

const QString ShutdownPlugin::itemContextMenu(const QString &itemKey)
Expand Down
6 changes: 6 additions & 0 deletions src/loader/pluginitem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,12 @@ bool PluginItem::executeCommand()
const QString command = m_pluginsItemInterface->itemCommand(m_itemKey);
if (!command.isEmpty()) {
qInfo() << "command: " << command;

if (command == Dock::REQUEST_SHUTDOWN) {
emit sigRequestshutdown();
return true;
}

QStringList commandList = command.split(" ");
QString program = commandList.takeFirst(); // 剩下是参数

Expand Down
1 change: 1 addition & 0 deletions src/loader/pluginitem.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ class PluginItem : public QWidget

signals:
void recvMouseEvent(int type);
void sigRequestshutdown();

protected:
void mousePressEvent(QMouseEvent *e) override;
Expand Down
1 change: 1 addition & 0 deletions src/loader/widgetplugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -335,6 +335,7 @@ void WidgetPlugin::initConnections(Plugin::EmbedPlugin *plugin, PluginItem *plug
connect(plugin, &Plugin::EmbedPlugin::contentMarginChanged, pluginItem, &PluginItem::updatePluginContentMargin);

connect(pluginItem, &PluginItem::recvMouseEvent, plugin, &Plugin::EmbedPlugin::pluginRecvMouseEvent);
connect(pluginItem, &PluginItem::sigRequestshutdown, plugin, &Plugin::EmbedPlugin::pluginRequestShutdown);
}

int WidgetPlugin::getPluginFlags()
Expand Down
1 change: 1 addition & 0 deletions src/protocol/plugin-manager-v1.xml
Original file line number Diff line number Diff line change
Expand Up @@ -125,5 +125,6 @@
<request name="dcc_icon" >
<arg name="type" type="string"/>
</request>
<request name="request_shutdown"/>
</interface>
</protocol>
1 change: 1 addition & 0 deletions src/tray-wayland-integration/plugin.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ class Q_DECL_EXPORT EmbedPlugin : public QObject
void requestMessage(const QString &msg);
void pluginRecvMouseEvent(int type);
void rawGlobalPosChanged();
void pluginRequestShutdown();

private:
explicit EmbedPlugin(QWindow* window);
Expand Down
4 changes: 4 additions & 0 deletions src/tray-wayland-integration/pluginsurface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,10 @@ PluginSurface::PluginSurface(PluginManagerIntegration *manager, QtWaylandClient:
connect(m_plugin, &EmbedPlugin::pluginRecvMouseEvent, this, [this] (int type){
mouse_event(type);
});

connect(m_plugin, &EmbedPlugin::pluginRequestShutdown, this, [this] {
request_shutdown();
});
}

PluginSurface::~PluginSurface()
Expand Down
Loading