diff options
author | Dan Williams <dcbw@redhat.com> | 2010-05-22 11:27:05 -0700 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2010-05-22 11:28:07 -0700 |
commit | 00eefd8d43427a70f99d032c70a55daf5d77735d (patch) | |
tree | 4f759fbe48262ce1b16080b7e2744a5246e12c3e | |
parent | 5ca1a9d546be81b54e57d525b54ff92597de6115 (diff) | |
download | NetworkManager-00eefd8d43427a70f99d032c70a55daf5d77735d.tar.gz |
libnm-glib: add nm_client_networking_get_enabled() (rh #589108) (bgo #346615)
Forgot this in the last commit.
-rw-r--r-- | libnm-glib/nm-client.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/libnm-glib/nm-client.c b/libnm-glib/nm-client.c index 4a235ea238..4797f1c092 100644 --- a/libnm-glib/nm-client.c +++ b/libnm-glib/nm-client.c @@ -58,6 +58,7 @@ typedef struct { GPtrArray *devices; GPtrArray *active_connections; + gboolean have_networking_enabled; gboolean networking_enabled; gboolean wireless_enabled; gboolean wireless_hw_enabled; @@ -94,11 +95,28 @@ static void client_device_added_proxy (DBusGProxy *proxy, char *path, gpointer u static void client_device_removed_proxy (DBusGProxy *proxy, char *path, gpointer user_data); static void +handle_net_enabled_changed (GObject *object, + GParamSpec *pspec, + GValue *value, + gpointer user_data) +{ + NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (object); + + /* Update the cache flag when it changes */ + priv->have_networking_enabled = TRUE; +} + +static void nm_client_init (NMClient *client) { NMClientPrivate *priv = NM_CLIENT_GET_PRIVATE (client); priv->state = NM_STATE_UNKNOWN; + + g_signal_connect (client, + "notify::" NM_CLIENT_NETWORKING_ENABLED, + G_CALLBACK (handle_net_enabled_changed), + client); } static void @@ -919,6 +937,35 @@ nm_client_get_state (NMClient *client) } /** + * nm_client_networking_get_enabled: + * @client: a #NMClient + * + * Whether networking is enabled or disabled. + * + * Returns: %TRUE if networking is disabled, %FALSE if networking is enabled + **/ +gboolean +nm_client_networking_get_enabled (NMClient *client) +{ + NMClientPrivate *priv; + + g_return_val_if_fail (NM_IS_CLIENT (client), FALSE); + + priv = NM_CLIENT_GET_PRIVATE (client); + if (!priv->have_networking_enabled) { + priv = NM_CLIENT_GET_PRIVATE (client); + if (!priv->networking_enabled) { + priv->networking_enabled = _nm_object_get_boolean_property (NM_OBJECT (client), + NM_DBUS_INTERFACE, + "NetworkingEnabled"); + priv->have_networking_enabled = TRUE; + } + } + + return priv->networking_enabled; +} + +/** * nm_client_networking_set_enabled: * @client: a #NMClient * @enabled: %TRUE to set networking enabled, %FALSE to set networking disabled |