mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-04-26 14:23:09 +00:00
48 lines
1.7 KiB
C++
48 lines
1.7 KiB
C++
// SPDX-FileCopyrightText: 2023 Devin Lin <devin@kde.org>
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
#include "lockscreendbusclient.h"
|
|
|
|
#include <QDBusConnection>
|
|
#include <QDBusMessage>
|
|
#include <QDBusReply>
|
|
#include <QTimer>
|
|
|
|
LockscreenDBusClient::LockscreenDBusClient(QObject *parent)
|
|
: QObject{parent}
|
|
{
|
|
QDBusMessage request = QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.ScreenSaver"),
|
|
QStringLiteral("/ScreenSaver"),
|
|
QStringLiteral("org.freedesktop.ScreenSaver"),
|
|
QStringLiteral("GetActive"));
|
|
const QDBusReply<bool> response = QDBusConnection::sessionBus().call(request);
|
|
|
|
m_lockscreenActive = response.isValid() ? response.value() : false;
|
|
Q_EMIT lockscreenActiveChanged();
|
|
|
|
QDBusConnection::sessionBus().connect(QStringLiteral("org.freedesktop.ScreenSaver"),
|
|
QStringLiteral("/ScreenSaver"),
|
|
QStringLiteral("org.freedesktop.ScreenSaver"),
|
|
QStringLiteral("ActiveChanged"),
|
|
this,
|
|
SLOT(slotLockscreenActiveChanged));
|
|
}
|
|
|
|
LockscreenDBusClient *LockscreenDBusClient::self()
|
|
{
|
|
static LockscreenDBusClient *instance = new LockscreenDBusClient;
|
|
return instance;
|
|
}
|
|
|
|
bool LockscreenDBusClient::lockscreenActive() const
|
|
{
|
|
return m_lockscreenActive;
|
|
}
|
|
|
|
void LockscreenDBusClient::slotLockscreenActiveChanged(bool active)
|
|
{
|
|
if (active != m_lockscreenActive) {
|
|
m_lockscreenActive = active;
|
|
Q_EMIT lockscreenActiveChanged();
|
|
}
|
|
}
|