D-Bus интерфейс ru.omp.AuthService.Devlock
Интерфейс позволяет заблокировать экран или отследить подобную блокировку и предоставляет чтение текущего состояния блокировки, его изменение привилегированным процессом и сигнал об изменении состояния.
Область применения:
- чтение текущего состояния блокировки —
GetState; - изменение состояния блокировки
процессом из группы
auth-factor—SetState; - отслеживание смены состояния — сигнал
StateChanged. Подробнее…
| Шина: | системная |
| Служба: | ru.omp.AuthService |
| Объект: | /ru/omp/AuthService/Devlock |
| Интерфейс: | ru.omp.AuthService.Devlock |
Сигналы
- StateChanged(int state)
Методы
Подробное описание
Интерфейс позволяет заблокировать экран или отследить подобную блокировку.
StateChanged используется для реакции на уже произошедшее изменение.
GetState используется для получения актуального состояния при старте
клиента.
SetState используется привилегированными процессами для
прямого изменения состояния.
Описание сигналов
StateChanged(int state)
Испускается при изменении состояния AuthService.
Возможные значения приведены в таблице:
| Опция | Описание |
|---|---|
Unlocked |
Экран устройства разблокирован. |
Locked |
Экран устройства заблокирован. |
Описание методов
int GetState()
Возвращает текущее состояние AuthService.
Возможные значения те же, что и у сигнала StateChanged.
bool SetState(int state)
Изменяет текущее состояние AuthService.
Данный метод требует наличия привилегий: владелец вызывающего процесса должен входить
в группу auth-factor.
Возможные значения те же, что и у сигнала StateChanged.
Пример блокировки экрана с помощью метода SetState:
const QString authdService = QStringLiteral("ru.omp.AuthService");
const QString authdDevlockPath = QStringLiteral("/ru/omp/AuthService/Devlock");
const QString authdDevlockInterface = QStringLiteral("ru.omp.AuthService.Devlock");
const QString setStateMethod = QStringLiteral("SetState");
//
// 0 — разблокирован (Unlocked)
// 1 — заблокирован (Locked)
//
const int32_t lockScreenValue = 1;
bool AuthdCommunicator::lockScreen()
{
QDBusConnection sysBus = QDBusConnection::systemBus();
if (!sysBus.isConnected())
return false;
QDBusMessage message = QDBusMessage::createMethodCall(authdService,
authdDevlockPath,
authdDevlockInterface,
setStateMethod);
QVariantList args = {QVariant::fromValue<int32_t>(lockScreenValue)};
message.setArguments(args);
bool success = sysBus.send(message);
qDebug() << __func__ << success;
return true;
}