20#include <QDBusPendingCall>
22void autoBrightnessChanged(GSettings *settings,
const gchar *key, QDBusInterface *lomiriScreen)
24 bool value = g_settings_get_boolean(settings, key);
25 lomiriScreen->asyncCall(QStringLiteral(
"userAutobrightnessEnable"), QVariant(value));
28void activityTimeoutChanged(GSettings *settings,
const gchar *key, QDBusInterface *lomiriScreen)
30 int value = g_settings_get_uint(settings, key);
31 lomiriScreen->asyncCall(QStringLiteral(
"setInactivityTimeouts"), QVariant(value), QVariant(-1));
34void dimTimeoutChanged(GSettings *settings,
const gchar *key, QDBusInterface *lomiriScreen)
36 int value = g_settings_get_uint(settings, key);
37 lomiriScreen->asyncCall(QStringLiteral(
"setInactivityTimeouts"), QVariant(-1), QVariant(value));
40void doubleTapToWakeChanged(GSettings *settings,
const gchar *key, QDBusInterface *lomiriScreen)
42 bool value = g_settings_get_boolean(settings, key);
43 lomiriScreen->asyncCall(QStringLiteral(
"setDoubleTapToWakeEnabled"), QVariant(value));
46Powerd::Powerd(QObject* parent)
48 lomiriScreen(nullptr),
49 cachedStatus(Status::On)
51 lomiriScreen =
new QDBusInterface(QStringLiteral(
"com.canonical.Unity.Screen"),
52 QStringLiteral(
"/com/canonical/Unity/Screen"),
53 QStringLiteral(
"com.canonical.Unity.Screen"),
54 QDBusConnection::SM_BUSNAME(),
this);
56 lomiriScreen->connection().connect(QStringLiteral(
"com.canonical.Unity.Screen"),
57 QStringLiteral(
"/com/canonical/Unity/Screen"),
58 QStringLiteral(
"com.canonical.Unity.Screen"),
59 QStringLiteral(
"DisplayPowerStateChange"),
61 SLOT(handleDisplayPowerStateChange(
int,
int)));
63 systemSettings = g_settings_new(
"com.lomiri.touch.system");
64 g_signal_connect(systemSettings,
"changed::auto-brightness", G_CALLBACK(autoBrightnessChanged), lomiriScreen);
65 g_signal_connect(systemSettings,
"changed::activity-timeout", G_CALLBACK(activityTimeoutChanged), lomiriScreen);
66 g_signal_connect(systemSettings,
"changed::dim-timeout", G_CALLBACK(dimTimeoutChanged), lomiriScreen);
67 g_signal_connect(systemSettings,
"changed::double-tap-to-wake", G_CALLBACK(doubleTapToWakeChanged), lomiriScreen);
68 autoBrightnessChanged(systemSettings,
"auto-brightness", lomiriScreen);
69 activityTimeoutChanged(systemSettings,
"activity-timeout", lomiriScreen);
70 dimTimeoutChanged(systemSettings,
"dim-timeout", lomiriScreen);
71 doubleTapToWakeChanged(systemSettings,
"double-tap-to-wake", lomiriScreen);
76 g_signal_handlers_disconnect_by_data(systemSettings, lomiriScreen);
77 g_object_unref(systemSettings);
80Powerd::Status Powerd::status()
const
85void Powerd::setStatus(Powerd::Status status, DisplayStateChangeReason reason)
87 lomiriScreen->asyncCall(QStringLiteral(
"setScreenPowerMode"),
88 status == Powerd::On ?
"on" :
"off",
89 static_cast<qint32>(reason));
92void Powerd::handleDisplayPowerStateChange(
int status,
int reason)
94 if (cachedStatus != (Status)status) {
95 cachedStatus = (Status)status;
96 Q_EMIT statusChanged((DisplayStateChangeReason)reason);