-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathinterface.h
More file actions
132 lines (107 loc) · 3.24 KB
/
interface.h
File metadata and controls
132 lines (107 loc) · 3.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/*
SPDX-FileCopyrightText: 1999 Martin R. Jones <mjones@kde.org>
SPDX-FileCopyrightText: 2011 Martin Gräßlin <mgraesslin@kde.org>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#pragma once
#include <QDBusContext>
#include <QDBusMessage>
#include <QObject>
#include <expected>
class QDBusServiceWatcher;
namespace ScreenLocker
{
class PowerInhibitor : public QObject
{
Q_OBJECT
public:
PowerInhibitor(const QString &applicationName, const QString &reason);
void release();
private:
~PowerInhibitor() override;
void inhibit(const QString &applicationName, const QString &reason);
void uninhibit();
std::optional<std::expected<uint, QDBusError>> m_cookie;
bool m_released = false;
};
class InhibitRequest
{
public:
QString dbusid;
uint cookie;
PowerInhibitor *powerInhibitor = nullptr;
};
class KSldApp;
class Interface : public QObject, protected QDBusContext
{
Q_OBJECT
Q_CLASSINFO("D-Bus Interface", "org.freedesktop.ScreenSaver")
public:
explicit Interface(KSldApp *parent = nullptr);
~Interface() override;
public Q_SLOTS:
/**
* Lock the screen.
*/
void Lock();
/**
* Simulate user activity
*/
void SimulateUserActivity();
/**
* Request a change in the state of the screensaver.
* Set to TRUE to request that the screensaver activate.
* Active means that the screensaver has blanked the
* screen and may run a graphical theme. This does
* not necessary mean that the screen is locked.
*/
bool SetActive(bool state);
/// Returns the value of the current state of activity (See setActive)
bool GetActive();
/**
* Returns the number of seconds that the screensaver has
* been active. Returns zero if the screensaver is not active.
*/
uint GetActiveTime();
/**
* Returns the number of seconds that the session has
* been idle. Returns zero if the session is not idle.
*/
uint GetSessionIdleTime();
/**
* Request that saving the screen due to system idleness
* be blocked until UnInhibit is called or the
* calling process exits.
* The cookie is a random number used to identify the request
*/
uint Inhibit(const QString &application_name, const QString &reason_for_inhibit);
/// Cancel a previous call to Inhibit() identified by the cookie.
void UnInhibit(uint cookie);
/**
* Request that running themes while the screensaver is active
* be blocked until UnThrottle is called or the
* calling process exits.
* The cookie is a random number used to identify the request
*/
uint Throttle(const QString &application_name, const QString &reason_for_inhibit);
/// Cancel a previous call to Throttle() identified by the cookie.
void UnThrottle(uint cookie);
// org.kde.screensvar
void configure();
Q_SIGNALS:
// DBus signals
void ActiveChanged(bool state);
void AboutToLock();
private Q_SLOTS:
void slotLocked();
void slotUnlocked();
void serviceUnregistered(const QString &name);
private:
void sendLockReplies();
KSldApp *m_daemon;
QDBusServiceWatcher *m_serviceWatcher;
QList<InhibitRequest> m_requests;
uint m_next_cookie;
QList<QDBusMessage> m_lockReplies;
};
}