20 #include <QDBusPendingCall>
22 void autoBrightnessChanged(GSettings *settings,
const gchar *key, QDBusInterface *unityScreen)
24 bool value = g_settings_get_boolean(settings, key);
25 unityScreen->asyncCall(QStringLiteral(
"userAutobrightnessEnable"), QVariant(value));
28 void activityTimeoutChanged(GSettings *settings,
const gchar *key, QDBusInterface *unityScreen)
30 int value = g_settings_get_uint(settings, key);
31 unityScreen->asyncCall(QStringLiteral(
"setInactivityTimeouts"), QVariant(value), QVariant(-1));
34 void dimTimeoutChanged(GSettings *settings,
const gchar *key, QDBusInterface *unityScreen)
36 int value = g_settings_get_uint(settings, key);
37 unityScreen->asyncCall(QStringLiteral(
"setInactivityTimeouts"), QVariant(-1), QVariant(value));
40 Powerd::Powerd(QObject* parent)
43 cachedStatus(Status::On)
45 unityScreen =
new QDBusInterface(QStringLiteral(
"com.canonical.Unity.Screen"),
46 QStringLiteral(
"/com/canonical/Unity/Screen"),
47 QStringLiteral(
"com.canonical.Unity.Screen"),
48 QDBusConnection::SM_BUSNAME(),
this);
50 unityScreen->connection().connect(QStringLiteral(
"com.canonical.Unity.Screen"),
51 QStringLiteral(
"/com/canonical/Unity/Screen"),
52 QStringLiteral(
"com.canonical.Unity.Screen"),
53 QStringLiteral(
"DisplayPowerStateChange"),
55 SLOT(handleDisplayPowerStateChange(
int,
int)));
57 systemSettings = g_settings_new(
"com.ubuntu.touch.system");
58 g_signal_connect(systemSettings,
"changed::auto-brightness", G_CALLBACK(autoBrightnessChanged), unityScreen);
59 g_signal_connect(systemSettings,
"changed::activity-timeout", G_CALLBACK(activityTimeoutChanged), unityScreen);
60 g_signal_connect(systemSettings,
"changed::dim-timeout", G_CALLBACK(dimTimeoutChanged), unityScreen);
61 autoBrightnessChanged(systemSettings,
"auto-brightness", unityScreen);
62 activityTimeoutChanged(systemSettings,
"activity-timeout", unityScreen);
63 dimTimeoutChanged(systemSettings,
"dim-timeout", unityScreen);
68 g_signal_handlers_disconnect_by_data(systemSettings, unityScreen);
69 g_object_unref(systemSettings);
72 Powerd::Status Powerd::status()
const
77 void Powerd::setStatus(Powerd::Status status, DisplayStateChangeReason reason)
79 unityScreen->asyncCall(QStringLiteral(
"setScreenPowerMode"),
80 status == Powerd::On ?
"on" :
"off",
81 static_cast<qint32>(reason));
84 void Powerd::handleDisplayPowerStateChange(
int status,
int reason)
86 if (cachedStatus != (Status)status) {
87 cachedStatus = (Status)status;
88 Q_EMIT statusChanged((DisplayStateChangeReason)reason);