summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2011-01-04 17:01:59 +0000
committerRichard Hughes <richard@hughsie.com>2011-01-04 17:01:59 +0000
commitc507b516d47b5eb8b3084efb93b71aaaa92a78c1 (patch)
tree116c6fa348fc03376d2d676f9a44b42de147e828 /src
parent2af7a6e091bb62faff9cdda5bb7e3fb5dcc8d15a (diff)
Add an IsDocked binary property to the main interface
Diffstat (limited to 'src')
-rw-r--r--src/org.freedesktop.UPower.xml12
-rw-r--r--src/up-daemon.c26
-rw-r--r--src/up-daemon.h2
3 files changed, 40 insertions, 0 deletions
diff --git a/src/org.freedesktop.UPower.xml b/src/org.freedesktop.UPower.xml
index 5a5fe57..6cb636d 100644
--- a/src/org.freedesktop.UPower.xml
+++ b/src/org.freedesktop.UPower.xml
@@ -304,6 +304,18 @@ method return sender=:1.386 -> dest=:1.451 reply_serial=2
</doc:doc>
</property>
+ <property name="IsDocked" type="b" access="read">
+ <doc:doc>
+ <doc:description>
+ <doc:para>
+ If the system is currently docked.
+ Note: the "is-docked" value is the result of a heuristic,
+ which may involve testing the display output.
+ </doc:para>
+ </doc:description>
+ </doc:doc>
+ </property>
+
</interface>
</node>
diff --git a/src/up-daemon.c b/src/up-daemon.c
index 4587649..dbdb488 100644
--- a/src/up-daemon.c
+++ b/src/up-daemon.c
@@ -51,6 +51,7 @@ enum
PROP_ON_LOW_BATTERY,
PROP_LID_IS_CLOSED,
PROP_LID_IS_PRESENT,
+ PROP_IS_DOCKED,
PROP_LAST
};
@@ -78,6 +79,7 @@ struct UpDaemonPrivate
gboolean on_low_battery;
gboolean lid_is_closed;
gboolean lid_is_present;
+ gboolean is_docked;
gboolean kernel_can_suspend;
gboolean kernel_can_hibernate;
gboolean hibernate_has_encrypted_swap;
@@ -773,6 +775,18 @@ up_daemon_set_lid_is_present (UpDaemon *daemon, gboolean lid_is_present)
}
/**
+ * up_daemon_set_is_docked:
+ **/
+void
+up_daemon_set_is_docked (UpDaemon *daemon, gboolean is_docked)
+{
+ UpDaemonPrivate *priv = daemon->priv;
+ g_debug ("is_docked = %s", is_docked ? "yes" : "no");
+ priv->is_docked = is_docked;
+ g_object_notify (G_OBJECT (daemon), "is-docked");
+}
+
+/**
* up_daemon_set_on_battery:
**/
void
@@ -1001,6 +1015,7 @@ up_daemon_init (UpDaemon *daemon)
daemon->priv = UP_DAEMON_GET_PRIVATE (daemon);
daemon->priv->polkit = up_polkit_new ();
daemon->priv->lid_is_present = FALSE;
+ daemon->priv->is_docked = FALSE;
daemon->priv->lid_is_closed = FALSE;
daemon->priv->kernel_can_suspend = FALSE;
daemon->priv->kernel_can_hibernate = FALSE;
@@ -1135,6 +1150,9 @@ up_daemon_get_property (GObject *object, guint prop_id, GValue *value, GParamSpe
case PROP_LID_IS_PRESENT:
g_value_set_boolean (value, priv->lid_is_present);
break;
+ case PROP_IS_DOCKED:
+ g_value_set_boolean (value, priv->is_docked);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -1232,6 +1250,14 @@ up_daemon_class_init (UpDaemonClass *klass)
G_PARAM_READABLE));
g_object_class_install_property (object_class,
+ PROP_IS_DOCKED,
+ g_param_spec_boolean ("is-docked",
+ "Is docked",
+ "If this computer is docked",
+ FALSE,
+ G_PARAM_READABLE));
+
+ g_object_class_install_property (object_class,
PROP_CAN_SUSPEND,
g_param_spec_boolean ("can-suspend",
"Can Suspend",
diff --git a/src/up-daemon.h b/src/up-daemon.h
index e240d1e..4d92b19 100644
--- a/src/up-daemon.h
+++ b/src/up-daemon.h
@@ -77,6 +77,8 @@ void up_daemon_set_lid_is_closed (UpDaemon *daemon,
gboolean lid_is_closed);
void up_daemon_set_lid_is_present (UpDaemon *daemon,
gboolean lid_is_present);
+void up_daemon_set_is_docked (UpDaemon *daemon,
+ gboolean is_docked);
void up_daemon_set_on_battery (UpDaemon *daemon,
gboolean on_battery);
void up_daemon_set_on_low_battery (UpDaemon *daemon,