From 3b12d9ae6ebca1cd7172c6017ecc6393e8a96af9 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Thu, 12 Sep 2013 16:50:38 +0200 Subject: [PATCH] core: add has_connections_loaded method to NMConnectionProvider This method returns true, if the connections are already loaded (and the connection_loaded signal already emited). Signed-off-by: Thomas Haller --- src/nm-connection-provider.c | 9 +++++++++ src/nm-connection-provider.h | 14 ++++++++++++++ src/settings/nm-settings.c | 9 +++++++++ 3 files changed, 32 insertions(+) diff --git a/src/nm-connection-provider.c b/src/nm-connection-provider.c index 401f8dabb7..dca4bfb668 100644 --- a/src/nm-connection-provider.c +++ b/src/nm-connection-provider.c @@ -40,6 +40,15 @@ nm_connection_provider_get_connections (NMConnectionProvider *self) return NULL; } +gboolean +nm_connection_provider_has_connections_loaded (NMConnectionProvider *self) +{ + g_return_val_if_fail (NM_IS_CONNECTION_PROVIDER (self), FALSE); + + g_assert (NM_CONNECTION_PROVIDER_GET_INTERFACE (self)->has_connections_loaded); + return NM_CONNECTION_PROVIDER_GET_INTERFACE (self)->has_connections_loaded (self); +} + /*****************************************************************************/ static void diff --git a/src/nm-connection-provider.h b/src/nm-connection-provider.h index 942651f76b..75a572ed53 100644 --- a/src/nm-connection-provider.h +++ b/src/nm-connection-provider.h @@ -58,6 +58,8 @@ struct _NMConnectionProvider { const GSList * (*get_connections) (NMConnectionProvider *self); + gboolean (*has_connections_loaded) (NMConnectionProvider *self); + /* Signals */ void (*connection_added) (NMConnectionProvider *self, NMConnection *connection); @@ -103,4 +105,16 @@ GSList *nm_connection_provider_get_best_connections (NMConnectionProvider *self, */ const GSList *nm_connection_provider_get_connections (NMConnectionProvider *self); +/** + * nm_connection_provider_has_connections_loaded: + * @self: the #NMConnectionProvider + * + * Returns: TRUE or FALSE indicating whether the connections of the provider are already + * loaded. If they are not yet loaded, the provider will not emit the signals + * NM_CP_SIGNAL_CONNECTION_ADDED, NM_CP_SIGNAL_CONNECTION_UPDATED and + * NM_CP_SIGNAL_CONNECTION_REMOVED until NM_CP_SIGNAL_CONNECTIONS_LOADED gets + * emited. + */ +gboolean nm_connection_provider_has_connections_loaded (NMConnectionProvider *self); + #endif /* NM_CONNECTION_PROVIDER_H */ diff --git a/src/settings/nm-settings.c b/src/settings/nm-settings.c index b18a9af9ca..2da97624d7 100644 --- a/src/settings/nm-settings.c +++ b/src/settings/nm-settings.c @@ -1635,6 +1635,14 @@ get_connections (NMConnectionProvider *provider) return g_slist_reverse (list); } +static gboolean +has_connections_loaded (NMConnectionProvider *provider) +{ + NMSettingsPrivate *priv = NM_SETTINGS_GET_PRIVATE (provider); + + return priv->connections_loaded; +} + /***************************************************************/ NMSettings * @@ -1667,6 +1675,7 @@ connection_provider_init (NMConnectionProvider *cp_class) { cp_class->get_best_connections = get_best_connections; cp_class->get_connections = get_connections; + cp_class->has_connections_loaded = has_connections_loaded; } static void