diff options
author | Richard Hughes <richard@hughsie.com> | 2008-07-24 18:30:00 +0100 |
---|---|---|
committer | Richard Hughes <richard@hughsie.com> | 2008-07-24 18:30:00 +0100 |
commit | 32df1e0cc1ae92503902a1e329ed56952a942841 (patch) | |
tree | 9913c352e4028f4f0b07d4866e7a1178f698b032 /src | |
parent | 2bb27aaf1a6f754a042d67463328eb988cba88f3 (diff) |
add two bits of data that session applications really want -- battery mode and low battery mode
Diffstat (limited to 'src')
-rw-r--r-- | src/devkit-power-daemon.c | 46 | ||||
-rw-r--r-- | src/devkit-power-daemon.h | 4 | ||||
-rw-r--r-- | src/org.freedesktop.DeviceKit.Power.xml | 63 |
3 files changed, 113 insertions, 0 deletions
diff --git a/src/devkit-power-daemon.c b/src/devkit-power-daemon.c index ea9d869..06a423d 100644 --- a/src/devkit-power-daemon.c +++ b/src/devkit-power-daemon.c @@ -44,6 +44,8 @@ enum DEVICE_ADDED_SIGNAL, DEVICE_REMOVED_SIGNAL, DEVICE_CHANGED_SIGNAL, + ON_BATTERY_CHANGED_SIGNAL, + LOW_BATTERY_CHANGED_SIGNAL, LAST_SIGNAL, }; @@ -57,6 +59,8 @@ struct DevkitPowerDaemonPrivate PolKitTracker *pk_tracker; GHashTable *map_native_path_to_device; + gboolean on_battery; + gboolean low_battery; DevkitClient *devkit_client; }; @@ -161,6 +165,24 @@ devkit_power_daemon_class_init (DevkitPowerDaemonClass *klass) g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); + signals[ON_BATTERY_CHANGED_SIGNAL] = + g_signal_new ("on-battery-changed", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, + 0, + NULL, NULL, + g_cclosure_marshal_VOID__BOOLEAN, + G_TYPE_NONE, 1, G_TYPE_BOOLEAN); + + signals[LOW_BATTERY_CHANGED_SIGNAL] = + g_signal_new ("low-battery-changed", + G_OBJECT_CLASS_TYPE (klass), + G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, + 0, + NULL, NULL, + g_cclosure_marshal_VOID__BOOLEAN, + G_TYPE_NONE, 1, G_TYPE_BOOLEAN); + dbus_g_object_type_install_info (DEVKIT_TYPE_POWER_DAEMON, &dbus_glib_devkit_power_daemon_object_info); dbus_g_error_domain_register (DEVKIT_POWER_DAEMON_ERROR, @@ -172,6 +194,8 @@ static void devkit_power_daemon_init (DevkitPowerDaemon *daemon) { daemon->priv = DEVKIT_POWER_DAEMON_GET_PRIVATE (daemon); + daemon->priv->on_battery = FALSE; + daemon->priv->low_battery = FALSE; daemon->priv->map_native_path_to_device = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, @@ -366,6 +390,10 @@ device_remove (DevkitPowerDaemon *daemon, DevkitDevice *d) } } +//TODO: hook into the devices +//g_signal_emit (daemon, signals[ON_BATTERY_CHANGED_SIGNAL], 0, FALSE); +//g_signal_emit (daemon, signals[LOW_BATTERY_CHANGED_SIGNAL], 0, FALSE); + static void device_event_signal_handler (DevkitClient *client, const char *action, @@ -631,6 +659,24 @@ devkit_power_daemon_enumerate_devices (DevkitPowerDaemon *daemon, } gboolean +devkit_power_daemon_get_on_battery (DevkitPowerDaemon *daemon, + DBusGMethodInvocation *context) +{ + /* this is cached as it's expensive to check all sources */ + dbus_g_method_return (context, daemon->priv->on_battery); + return TRUE; +} + +gboolean +devkit_power_daemon_get_low_battery (DevkitPowerDaemon *daemon, + DBusGMethodInvocation *context) +{ + /* this is cached as it's expensive to check all sources */ + dbus_g_method_return (context, daemon->priv->low_battery); + return TRUE; +} + +gboolean devkit_power_daemon_suspend (DevkitPowerDaemon *daemon, DBusGMethodInvocation *context) { gboolean ret; diff --git a/src/devkit-power-daemon.h b/src/devkit-power-daemon.h index cb8b2a4..63987f5 100644 --- a/src/devkit-power-daemon.h +++ b/src/devkit-power-daemon.h @@ -78,6 +78,10 @@ gboolean devkit_power_damon_local_check_auth (DevkitPowerDaemon *daemon gboolean devkit_power_daemon_enumerate_devices (DevkitPowerDaemon *daemon, DBusGMethodInvocation *context); +gboolean devkit_power_daemon_get_on_battery (DevkitPowerDaemon *daemon, + DBusGMethodInvocation *context); +gboolean devkit_power_daemon_get_low_battery (DevkitPowerDaemon *daemon, + DBusGMethodInvocation *context); gboolean devkit_power_daemon_suspend (DevkitPowerDaemon *daemon, DBusGMethodInvocation *context); gboolean devkit_power_daemon_hibernate (DevkitPowerDaemon *daemon, diff --git a/src/org.freedesktop.DeviceKit.Power.xml b/src/org.freedesktop.DeviceKit.Power.xml index 7227c4e..48a96e2 100644 --- a/src/org.freedesktop.DeviceKit.Power.xml +++ b/src/org.freedesktop.DeviceKit.Power.xml @@ -71,6 +71,69 @@ </signal> <!-- ************************************************************ --> + <signal name="OnBatteryChanged"> + <arg name="on_battery" type="b"> + <doc:doc><doc:summary>If we are on battery power.</doc:summary></doc:doc> + </arg> + + <doc:doc> + <doc:description> + <doc:para> + Emitted when the main power source of the system has changed. + </doc:para> + </doc:description> + </doc:doc> + </signal> + + <!-- ************************************************************ --> + <signal name="LowBatteryChanged"> + <arg name="low_battery" type="b"> + <doc:doc><doc:summary>If we are critically low on battery power.</doc:summary></doc:doc> + </arg> + + <doc:doc> + <doc:description> + <doc:para> + Emitted when the main power source of the system is critically low in power. + </doc:para> + </doc:description> + </doc:doc> + </signal> + + <!-- ************************************************************ --> + <method name="GetOnBattery"> + <annotation name="org.freedesktop.DBus.GLib.Async" value=""/> + <arg name="on_battery" type="b"> + <doc:doc><doc:summary>If we are on battery power.</doc:summary></doc:doc> + </arg> + <doc:doc> + <doc:description> + <doc:para> + Finds out if we are using battery so we can make policy decisions, + for instance not running the indexer when we are on battery power. + </doc:para> + </doc:description> + </doc:doc> + </method> + + <!-- ************************************************************ --> + <method name="GetLowBattery"> + <annotation name="org.freedesktop.DBus.GLib.Async" value=""/> + <arg name="low_battery" type="b"> + <doc:doc><doc:summary>If we are critically low on battery power.</doc:summary></doc:doc> + </arg> + <doc:doc> + <doc:description> + <doc:para> + Finds out if we are critically low on battery so we can make policy + decisions, for instance saving documents or turning off network + connections. + </doc:para> + </doc:description> + </doc:doc> + </method> + + <!-- ************************************************************ --> <method name="Suspend"> <annotation name="org.freedesktop.DBus.GLib.Async" value=""/> |