diff options
author | Bastien Nocera <hadess@hadess.net> | 2013-10-16 13:42:34 +0200 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2013-10-16 13:42:34 +0200 |
commit | bda51f5284419cf4b548e754bcadd01d22c75e68 (patch) | |
tree | 42c3f1b7075cc7f72b76774fe3b2caca919c5af9 /src/up-daemon.c | |
parent | e7eed719f2c40482580c281750f5a6daf02a3d1d (diff) | |
download | upower-bda51f5284419cf4b548e754bcadd01d22c75e68.tar.gz |
daemon: Add GetDisplayDevice method
And export a DisplayDevice object which can be used by desktop
shells to show/hide the status icon.
Diffstat (limited to 'src/up-daemon.c')
-rw-r--r-- | src/up-daemon.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/up-daemon.c b/src/up-daemon.c index ff173c5..c8da84c 100644 --- a/src/up-daemon.c +++ b/src/up-daemon.c @@ -89,6 +89,7 @@ struct UpDaemonPrivate guint props_idle_id; /* Display battery properties */ + UpDevice *display_device; UpDeviceKind kind; UpDeviceState state; gdouble percentage; @@ -199,6 +200,7 @@ up_daemon_update_display_battery (UpDaemon *daemon) gdouble energy_rate_total = 0.0; gint64 time_to_empty_total = 0; gint64 time_to_full_total = 0; + gboolean is_present_total = FALSE; guint num_batteries = 0; /* Gather state from each device */ @@ -239,6 +241,7 @@ up_daemon_update_display_battery (UpDaemon *daemon) time_to_empty_total = time_to_empty; time_to_full_total = time_to_full; percentage_total = percentage; + is_present_total = TRUE; break; } if (kind != UP_DEVICE_KIND_BATTERY) @@ -259,6 +262,7 @@ up_daemon_update_display_battery (UpDaemon *daemon) /* sum up composite */ kind_total = UP_DEVICE_KIND_BATTERY; + is_present_total = TRUE; energy_total += energy; energy_full_total += energy_full; energy_rate_total += energy_rate; @@ -298,6 +302,19 @@ out: daemon->priv->percentage = percentage_total; + g_object_set (daemon->priv->display_device, + "type", kind_total, + "state", state_total, + "energy", energy_total, + "energy-full", energy_full_total, + "energy-rate", energy_rate_total, + "time-to-empty", time_to_empty_total, + "time-to-full", time_to_full_total, + "percentage", percentage_total, + "is-present", is_present_total, + "power-supply", TRUE, + NULL); + /* FIXME: Return whether the above actually changed significantly */ return TRUE; } @@ -412,6 +429,17 @@ up_daemon_enumerate_devices (UpDaemon *daemon, DBusGMethodInvocation *context) } /** + * up_daemon_get_display_device: + **/ +gboolean +up_daemon_get_display_device (UpDaemon *daemon, + DBusGMethodInvocation *context) +{ + dbus_g_method_return (context, up_device_get_object_path (daemon->priv->display_device)); + return TRUE; +} + +/** * up_daemon_register_power_daemon: **/ static gboolean @@ -430,6 +458,10 @@ up_daemon_register_power_daemon (UpDaemon *daemon) goto out; } + /* Register the display device */ + up_device_register_display_device (daemon->priv->display_device, + daemon); + /* connect to DBUS */ priv->proxy = dbus_g_proxy_new_for_name (priv->connection, DBUS_SERVICE_DBUS, @@ -1002,6 +1034,7 @@ up_daemon_init (UpDaemon *daemon) daemon->priv->polkit = up_polkit_new (); daemon->priv->config = up_config_new (); daemon->priv->power_devices = up_device_list_new (); + daemon->priv->display_device = up_device_new (); daemon->priv->use_percentage_for_policy = up_config_get_boolean (daemon->priv->config, "UsePercentageForPolicy"); load_percentage_policy (daemon, FALSE); |