13#include "kscreenlocker_interface.h"
14#include "screenlocker_interface.h"
19static const QString SCREEN_LOCKER_SERVICE_NAME = QStringLiteral(
"org.freedesktop.ScreenSaver");
22 : m_serviceWatcher(new QDBusServiceWatcher(this))
32void ScreenLockerWatcher::initialize()
34 connect(m_serviceWatcher, &QDBusServiceWatcher::serviceOwnerChanged,
this, &ScreenLockerWatcher::serviceOwnerChanged);
35 m_serviceWatcher->setWatchMode(QDBusServiceWatcher::WatchForOwnerChange);
36 m_serviceWatcher->addWatchedService(SCREEN_LOCKER_SERVICE_NAME);
38 m_interface =
new OrgFreedesktopScreenSaverInterface(SCREEN_LOCKER_SERVICE_NAME, QStringLiteral(
"/ScreenSaver"), QDBusConnection::sessionBus(),
this);
39 m_kdeInterface =
new OrgKdeScreensaverInterface(SCREEN_LOCKER_SERVICE_NAME, QStringLiteral(
"/ScreenSaver"), QDBusConnection::sessionBus(),
this);
40 connect(m_interface, &OrgFreedesktopScreenSaverInterface::ActiveChanged,
41 this, &ScreenLockerWatcher::setLocked);
47void ScreenLockerWatcher::serviceOwnerChanged(
const QString &serviceName,
const QString &oldOwner,
const QString &newOwner)
51 if (!newOwner.isEmpty()) {
56void ScreenLockerWatcher::queryActive()
58 QDBusPendingCallWatcher *watcher =
new QDBusPendingCallWatcher(m_interface->GetActive(),
this);
59 connect(watcher, &QDBusPendingCallWatcher::finished,
60 this, &ScreenLockerWatcher::activeQueried);
63void ScreenLockerWatcher::activeQueried(QDBusPendingCallWatcher *watcher)
65 QDBusPendingReply<bool> reply = *watcher;
66 if (!reply.isError()) {
67 setLocked(reply.value());
69 watcher->deleteLater();
72void ScreenLockerWatcher::setLocked(
bool activated)
74 if (m_locked == activated) {
87#include "moc_screenlockerwatcher.cpp"
WaylandServer * waylandServer()