Skip to content

Commit 29b4776

Browse files
committed
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 29b4776

7 files changed

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

0 commit comments

Comments
 (0)