forked from KDE/kscreenlocker
-
Notifications
You must be signed in to change notification settings - Fork 0
/
interface.h
134 lines (110 loc) · 3.74 KB
/
interface.h
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
133
134
/********************************************************************
KSld - the KDE Screenlocker Daemon
This file is part of the KDE project.
Copyright 1999 Martin R. Jones <mjones@kde.org>
Copyright (C) 2011 Martin Gräßlin <mgraesslin@kde.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*********************************************************************/
#ifndef SCREENLOCKER_INTERFACE_H
#define SCREENLOCKER_INTERFACE_H
#include <QObject>
#include <QDBusContext>
#include <QDBusMessage>
class QDBusServiceWatcher;
namespace ScreenLocker
{
class InhibitRequest
{
public:
QString dbusid;
uint cookie;
uint powerdevilcookie;
};
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();
/**
* Like Lock() but immediately show the switch user dialog
*/
void SwitchUser();
/**
* 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;
};
}
#endif // SCREENLOCKER_INTERFACE_H