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(
"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(
"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(
"setInactivityTimeouts", QVariant(-1), QVariant(value));
40 Powerd::Powerd(QObject* parent)
43 cachedStatus(Status::On)
45 unityScreen =
new QDBusInterface(
"com.canonical.Unity.Screen",
46 "/com/canonical/Unity/Screen",
47 "com.canonical.Unity.Screen",
48 QDBusConnection::SM_BUSNAME(),
this);
50 unityScreen->connection().connect(
"com.canonical.Unity.Screen",
51 "/com/canonical/Unity/Screen",
52 "com.canonical.Unity.Screen",
53 "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::handleDisplayPowerStateChange(
int status,
int reason)
79 if (cachedStatus != (Status)status) {
80 cachedStatus = (Status)status;
81 Q_EMIT statusChanged((DisplayStateChangeReason)reason);