core: add PrimaryConnectionType property to NMManager (bgo #739080)

This will provide an extremely easy way for applications to find out
what type of connection the system is currently using.  They might want
to do this to avoid using data if a phone is on a 3G connection, for
example.

Having this as a separate property provides at least two advantages:

 1) it reduces code complexity for those wanting only this one simple
    piece of information

 2) we could allow access to this property (but nothing else) to
    privilege-separated applications in the future

This patch adds the missing nm_active_connection_get_connection_type()
which was in the header file but never actually implemented.

https://bugzilla.gnome.org/show_bug.cgi?id=739080
This commit is contained in:
Ryan Lortie
2014-10-23 13:56:52 -04:00
committed by Dan Williams
parent 0bc11cb730
commit 07dba25404
4 changed files with 35 additions and 0 deletions

View File

@@ -327,6 +327,14 @@
</tp:docstring> </tp:docstring>
</property> </property>
<property name="PrimaryConnectionType" type="s" access="read">
<tp:docstring>
The connection type of the "primary" active connection being
used to access the network. This is the same as the Type
property on the object indicated by PrimaryConnection.
</tp:docstring>
</property>
<property name="ActivatingConnection" type="o" access="read"> <property name="ActivatingConnection" type="o" access="read">
<tp:docstring> <tp:docstring>
The object path of an active connection that is currently The object path of an active connection that is currently

View File

@@ -200,6 +200,17 @@ nm_active_connection_get_connection (NMActiveConnection *self)
return NM_ACTIVE_CONNECTION_GET_PRIVATE (self)->connection; return NM_ACTIVE_CONNECTION_GET_PRIVATE (self)->connection;
} }
const char *
nm_active_connection_get_connection_type (NMActiveConnection *self)
{
NMActiveConnectionPrivate *priv = NM_ACTIVE_CONNECTION_GET_PRIVATE (self);
if (priv->connection == NULL)
return NULL;
return nm_connection_get_connection_type (priv->connection);
}
void void
nm_active_connection_set_connection (NMActiveConnection *self, nm_active_connection_set_connection (NMActiveConnection *self,
NMConnection *connection) NMConnection *connection)

View File

@@ -237,6 +237,7 @@ enum {
PROP_ACTIVE_CONNECTIONS, PROP_ACTIVE_CONNECTIONS,
PROP_CONNECTIVITY, PROP_CONNECTIVITY,
PROP_PRIMARY_CONNECTION, PROP_PRIMARY_CONNECTION,
PROP_PRIMARY_CONNECTION_TYPE,
PROP_ACTIVATING_CONNECTION, PROP_ACTIVATING_CONNECTION,
PROP_DEVICES, PROP_DEVICES,
@@ -4270,6 +4271,7 @@ policy_default_device_changed (GObject *object, GParamSpec *pspec, gpointer user
priv->primary_connection = ac ? g_object_ref (ac) : NULL; priv->primary_connection = ac ? g_object_ref (ac) : NULL;
nm_log_dbg (LOGD_CORE, "PrimaryConnection now %s", ac ? nm_active_connection_get_id (ac) : "(none)"); nm_log_dbg (LOGD_CORE, "PrimaryConnection now %s", ac ? nm_active_connection_get_id (ac) : "(none)");
g_object_notify (G_OBJECT (self), NM_MANAGER_PRIMARY_CONNECTION); g_object_notify (G_OBJECT (self), NM_MANAGER_PRIMARY_CONNECTION);
g_object_notify (G_OBJECT (self), NM_MANAGER_PRIMARY_CONNECTION_TYPE);
} }
} }
@@ -4862,6 +4864,7 @@ get_property (GObject *object, guint prop_id,
GSList *iter; GSList *iter;
GPtrArray *array; GPtrArray *array;
const char *path; const char *path;
const char *type;
switch (prop_id) { switch (prop_id) {
case PROP_VERSION: case PROP_VERSION:
@@ -4911,6 +4914,10 @@ get_property (GObject *object, guint prop_id,
path = priv->primary_connection ? nm_active_connection_get_path (priv->primary_connection) : NULL; path = priv->primary_connection ? nm_active_connection_get_path (priv->primary_connection) : NULL;
g_value_set_boxed (value, path ? path : "/"); g_value_set_boxed (value, path ? path : "/");
break; break;
case PROP_PRIMARY_CONNECTION_TYPE:
type = priv->primary_connection ? nm_active_connection_get_connection_type (priv->primary_connection) : NULL;
g_value_set_string (value, type ? type : "");
break;
case PROP_ACTIVATING_CONNECTION: case PROP_ACTIVATING_CONNECTION:
path = priv->activating_connection ? nm_active_connection_get_path (priv->activating_connection) : NULL; path = priv->activating_connection ? nm_active_connection_get_path (priv->activating_connection) : NULL;
g_value_set_boxed (value, path ? path : "/"); g_value_set_boxed (value, path ? path : "/");
@@ -5162,6 +5169,14 @@ nm_manager_class_init (NMManagerClass *manager_class)
G_PARAM_READABLE | G_PARAM_READABLE |
G_PARAM_STATIC_STRINGS)); G_PARAM_STATIC_STRINGS));
g_object_class_install_property
(object_class, PROP_PRIMARY_CONNECTION_TYPE,
g_param_spec_string (NM_MANAGER_PRIMARY_CONNECTION_TYPE, "", "",
NULL,
G_PARAM_READABLE |
G_PARAM_STATIC_STRINGS));
g_object_class_install_property g_object_class_install_property
(object_class, PROP_ACTIVATING_CONNECTION, (object_class, PROP_ACTIVATING_CONNECTION,
g_param_spec_boxed (NM_MANAGER_ACTIVATING_CONNECTION, "", "", g_param_spec_boxed (NM_MANAGER_ACTIVATING_CONNECTION, "", "",

View File

@@ -48,6 +48,7 @@
#define NM_MANAGER_ACTIVE_CONNECTIONS "active-connections" #define NM_MANAGER_ACTIVE_CONNECTIONS "active-connections"
#define NM_MANAGER_CONNECTIVITY "connectivity" #define NM_MANAGER_CONNECTIVITY "connectivity"
#define NM_MANAGER_PRIMARY_CONNECTION "primary-connection" #define NM_MANAGER_PRIMARY_CONNECTION "primary-connection"
#define NM_MANAGER_PRIMARY_CONNECTION_TYPE "primary-connection-type"
#define NM_MANAGER_ACTIVATING_CONNECTION "activating-connection" #define NM_MANAGER_ACTIVATING_CONNECTION "activating-connection"
#define NM_MANAGER_DEVICES "devices" #define NM_MANAGER_DEVICES "devices"