Skip to content

Commit 125ef98

Browse files
fly602deepin-bot[bot]
authored andcommitted
refactor: remove PowerManager dependency and use SessionManager
1. Removed the PowerManager D-Bus interface dependency from the shutdown plugin 2. Replaced PowerManager with SessionManager for power-related operations 3. Deleted the auto-generated DBusPowerManager files (cpp and header) 4. Added new SessionManager D-Bus interface XML definition and generated implementation files 5. Updated shutdown plugin to use SessionManager for CanSuspend() and CanHibernate() checks 6. Changed D-Bus connection from systemBus to sessionBus for SessionManager This change simplifies the dependency chain by using SessionManager which provides the same power management functionality that was previously handled by PowerManager. The SessionManager interface is more comprehensive and better integrated with the desktop session management. Log: Power management operations now use SessionManager instead of PowerManager Influence: 1. Test suspend functionality to ensure CanSuspend() works correctly 2. Test hibernate functionality to verify CanHibernate() returns correct values 3. Verify shutdown menu displays correct options based on system capabilities 4. Test power operations (suspend/hibernate) actually work when selected 5. Verify D-Bus connection to SessionManager is established properly 6. Test error handling when SessionManager is unavailable 重构:移除 PowerManager 依赖并使用 SessionManager 1. 从关机插件中移除了 PowerManager D-Bus 接口依赖 2. 使用 SessionManager 替代 PowerManager 进行电源相关操作 3. 删除了自动生成的 DBusPowerManager 文件(cpp 和头文件) 4. 添加了新的 SessionManager D-Bus 接口 XML 定义和生成的实现文件 5. 更新关机插件使用 SessionManager 进行 CanSuspend() 和 CanHibernate() 检查 6. 将 D-Bus 连接从 systemBus 改为 sessionBus 以连接 SessionManager 此更改通过使用 SessionManager 简化了依赖链,SessionManager 提供了与之前 PowerManager 处理的相同电源管理功能。SessionManager 接口更全面,能更好地 与桌面会话管理集成。 Log: 电源管理操作现在使用 SessionManager 而不是 PowerManager Influence: 1. 测试挂起功能确保 CanSuspend() 正常工作 2. 测试休眠功能验证 CanHibernate() 返回正确值 3. 验证关机菜单根据系统功能显示正确选项 4. 测试选择的电源操作(挂起/休眠)实际可用 5. 验证与 SessionManager 的 D-Bus 连接正确建立 6. 测试 SessionManager 不可用时错误处理
1 parent 7513eff commit 125ef98

7 files changed

Lines changed: 288 additions & 113 deletions

File tree

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<node>
2+
<interface name="org.deepin.dde.SessionManager1">
3+
<method name="AllowSessionDaemonRun">
4+
<arg type="b" direction="out"></arg>
5+
</method>
6+
<method name="CanHibernate">
7+
<arg type="b" direction="out"></arg>
8+
</method>
9+
<method name="CanLogout">
10+
<arg type="b" direction="out"></arg>
11+
</method>
12+
<method name="CanReboot">
13+
<arg type="b" direction="out"></arg>
14+
</method>
15+
<method name="CanShutdown">
16+
<arg type="b" direction="out"></arg>
17+
</method>
18+
<method name="CanSuspend">
19+
<arg type="b" direction="out"></arg>
20+
</method>
21+
<method name="ForceLogout"></method>
22+
<method name="ForceReboot"></method>
23+
<method name="ForceShutdown"></method>
24+
<method name="Logout"></method>
25+
<method name="PowerOffChoose"></method>
26+
<method name="Reboot"></method>
27+
<method name="Register">
28+
<arg type="s" direction="in"></arg>
29+
<arg type="b" direction="out"></arg>
30+
</method>
31+
<method name="RequestHibernate"></method>
32+
<method name="RequestLock"></method>
33+
<method name="RequestLogout"></method>
34+
<method name="RequestReboot"></method>
35+
<method name="RequestShutdown"></method>
36+
<method name="RequestSuspend"></method>
37+
<method name="SetLocked">
38+
<arg type="b" direction="in"></arg>
39+
</method>
40+
<method name="Shutdown"></method>
41+
<method name="ToggleDebug"></method>
42+
<signal name="Unlock"></signal>
43+
<property name="Locked" type="b" access="read"></property>
44+
<property name="CurrentUid" type="s" access="read"></property>
45+
<property name="Stage" type="i" access="read"></property>
46+
<property name="CurrentSessionPath" type="o" access="read"></property>
47+
</interface>
48+
</node>

plugins/dde-dock/shutdown/dbus/dbuspowermanager.cpp

Lines changed: 0 additions & 30 deletions
This file was deleted.

plugins/dde-dock/shutdown/dbus/dbuspowermanager.h

Lines changed: 0 additions & 77 deletions
This file was deleted.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// SPDX-FileCopyrightText: 2025 UnionTech Software Technology Co., Ltd.
2+
//
3+
// SPDX-License-Identifier: LGPL-3.0-or-later
4+
5+
/*
6+
* This file was generated by qdbusxml2cpp version 0.8
7+
* Source file was org.deepin.dde.SessionManager.xml
8+
*
9+
* qdbusxml2cpp is Copyright (C) The Qt Company Ltd. and other contributors.
10+
*
11+
* This is an auto-generated file.
12+
* This file may have been hand-edited. Look for HAND-EDIT comments
13+
* before re-generating it.
14+
*/
15+
16+
#include "org_deepin_dde_sessionmanager.h"
17+
18+
/*
19+
* Implementation of interface class SessionManager
20+
*/
21+
22+
SessionManager::SessionManager(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent)
23+
: QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent)
24+
{
25+
}
26+
27+
SessionManager::~SessionManager()
28+
{
29+
}
30+
Lines changed: 204 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,204 @@
1+
// SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
2+
//
3+
// SPDX-License-Identifier: LGPL-3.0-or-later
4+
5+
/*
6+
* This file was generated by qdbusxml2cpp version 0.8
7+
* Source file was org.deepin.dde.SessionManager.xml
8+
*
9+
* qdbusxml2cpp is Copyright (C) The Qt Company Ltd. and other contributors.
10+
*
11+
* This is an auto-generated file.
12+
* Do not edit! All changes made to it will be lost.
13+
*/
14+
15+
#ifndef ORG_DEEPIN_DDE_SESSIONMANAGER_H
16+
#define ORG_DEEPIN_DDE_SESSIONMANAGER_H
17+
18+
#include <QtCore/QObject>
19+
#include <QtCore/QByteArray>
20+
#include <QtCore/QList>
21+
#include <QtCore/QMap>
22+
#include <QtCore/QString>
23+
#include <QtCore/QStringList>
24+
#include <QtCore/QVariant>
25+
#include <QtDBus/QtDBus>
26+
27+
/*
28+
* Proxy class for interface org.deepin.dde.SessionManager1
29+
*/
30+
class SessionManager: public QDBusAbstractInterface
31+
{
32+
Q_OBJECT
33+
public:
34+
static inline const char *staticInterfaceName()
35+
{ return "org.deepin.dde.SessionManager1"; }
36+
37+
public:
38+
SessionManager(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = nullptr);
39+
40+
~SessionManager();
41+
42+
Q_PROPERTY(QDBusObjectPath CurrentSessionPath READ currentSessionPath)
43+
inline QDBusObjectPath currentSessionPath() const
44+
{ return qvariant_cast< QDBusObjectPath >(property("CurrentSessionPath")); }
45+
46+
Q_PROPERTY(QString CurrentUid READ currentUid)
47+
inline QString currentUid() const
48+
{ return qvariant_cast< QString >(property("CurrentUid")); }
49+
50+
Q_PROPERTY(bool Locked READ locked)
51+
inline bool locked() const
52+
{ return qvariant_cast< bool >(property("Locked")); }
53+
54+
Q_PROPERTY(int Stage READ stage)
55+
inline int stage() const
56+
{ return qvariant_cast< int >(property("Stage")); }
57+
58+
public Q_SLOTS: // METHODS
59+
inline QDBusPendingReply<bool> AllowSessionDaemonRun()
60+
{
61+
QList<QVariant> argumentList;
62+
return asyncCallWithArgumentList(QStringLiteral("AllowSessionDaemonRun"), argumentList);
63+
}
64+
65+
inline QDBusPendingReply<bool> CanHibernate()
66+
{
67+
QList<QVariant> argumentList;
68+
return asyncCallWithArgumentList(QStringLiteral("CanHibernate"), argumentList);
69+
}
70+
71+
inline QDBusPendingReply<bool> CanLogout()
72+
{
73+
QList<QVariant> argumentList;
74+
return asyncCallWithArgumentList(QStringLiteral("CanLogout"), argumentList);
75+
}
76+
77+
inline QDBusPendingReply<bool> CanReboot()
78+
{
79+
QList<QVariant> argumentList;
80+
return asyncCallWithArgumentList(QStringLiteral("CanReboot"), argumentList);
81+
}
82+
83+
inline QDBusPendingReply<bool> CanShutdown()
84+
{
85+
QList<QVariant> argumentList;
86+
return asyncCallWithArgumentList(QStringLiteral("CanShutdown"), argumentList);
87+
}
88+
89+
inline QDBusPendingReply<bool> CanSuspend()
90+
{
91+
QList<QVariant> argumentList;
92+
return asyncCallWithArgumentList(QStringLiteral("CanSuspend"), argumentList);
93+
}
94+
95+
inline QDBusPendingReply<> ForceLogout()
96+
{
97+
QList<QVariant> argumentList;
98+
return asyncCallWithArgumentList(QStringLiteral("ForceLogout"), argumentList);
99+
}
100+
101+
inline QDBusPendingReply<> ForceReboot()
102+
{
103+
QList<QVariant> argumentList;
104+
return asyncCallWithArgumentList(QStringLiteral("ForceReboot"), argumentList);
105+
}
106+
107+
inline QDBusPendingReply<> ForceShutdown()
108+
{
109+
QList<QVariant> argumentList;
110+
return asyncCallWithArgumentList(QStringLiteral("ForceShutdown"), argumentList);
111+
}
112+
113+
inline QDBusPendingReply<> Logout()
114+
{
115+
QList<QVariant> argumentList;
116+
return asyncCallWithArgumentList(QStringLiteral("Logout"), argumentList);
117+
}
118+
119+
inline QDBusPendingReply<> PowerOffChoose()
120+
{
121+
QList<QVariant> argumentList;
122+
return asyncCallWithArgumentList(QStringLiteral("PowerOffChoose"), argumentList);
123+
}
124+
125+
inline QDBusPendingReply<> Reboot()
126+
{
127+
QList<QVariant> argumentList;
128+
return asyncCallWithArgumentList(QStringLiteral("Reboot"), argumentList);
129+
}
130+
131+
inline QDBusPendingReply<bool> Register(const QString &in0)
132+
{
133+
QList<QVariant> argumentList;
134+
argumentList << QVariant::fromValue(in0);
135+
return asyncCallWithArgumentList(QStringLiteral("Register"), argumentList);
136+
}
137+
138+
inline QDBusPendingReply<> RequestHibernate()
139+
{
140+
QList<QVariant> argumentList;
141+
return asyncCallWithArgumentList(QStringLiteral("RequestHibernate"), argumentList);
142+
}
143+
144+
inline QDBusPendingReply<> RequestLock()
145+
{
146+
QList<QVariant> argumentList;
147+
return asyncCallWithArgumentList(QStringLiteral("RequestLock"), argumentList);
148+
}
149+
150+
inline QDBusPendingReply<> RequestLogout()
151+
{
152+
QList<QVariant> argumentList;
153+
return asyncCallWithArgumentList(QStringLiteral("RequestLogout"), argumentList);
154+
}
155+
156+
inline QDBusPendingReply<> RequestReboot()
157+
{
158+
QList<QVariant> argumentList;
159+
return asyncCallWithArgumentList(QStringLiteral("RequestReboot"), argumentList);
160+
}
161+
162+
inline QDBusPendingReply<> RequestShutdown()
163+
{
164+
QList<QVariant> argumentList;
165+
return asyncCallWithArgumentList(QStringLiteral("RequestShutdown"), argumentList);
166+
}
167+
168+
inline QDBusPendingReply<> RequestSuspend()
169+
{
170+
QList<QVariant> argumentList;
171+
return asyncCallWithArgumentList(QStringLiteral("RequestSuspend"), argumentList);
172+
}
173+
174+
inline QDBusPendingReply<> SetLocked(bool in0)
175+
{
176+
QList<QVariant> argumentList;
177+
argumentList << QVariant::fromValue(in0);
178+
return asyncCallWithArgumentList(QStringLiteral("SetLocked"), argumentList);
179+
}
180+
181+
inline QDBusPendingReply<> Shutdown()
182+
{
183+
QList<QVariant> argumentList;
184+
return asyncCallWithArgumentList(QStringLiteral("Shutdown"), argumentList);
185+
}
186+
187+
inline QDBusPendingReply<> ToggleDebug()
188+
{
189+
QList<QVariant> argumentList;
190+
return asyncCallWithArgumentList(QStringLiteral("ToggleDebug"), argumentList);
191+
}
192+
193+
Q_SIGNALS: // SIGNALS
194+
void Unlock();
195+
};
196+
197+
namespace org {
198+
namespace deepin {
199+
namespace dde {
200+
using SessionManager1 = ::SessionManager;
201+
}
202+
}
203+
}
204+
#endif

0 commit comments

Comments
 (0)