[PATCH] libnm-glib: added "connections-fetched" signal o NMRemoteSettings



A "connections-fetched" signal is emited when the last connection's
settings are obtained or if there was no connections to fetch. The 
signal will inform the user, that the connections list is filled up.
---                                                                 
 libnm-glib/nm-remote-settings.c |   26 ++++++++++++++++++++++----  
 libnm-glib/nm-remote-settings.h |    6 ++++++                      
 2 files changed, 28 insertions(+), 4 deletions(-)                  

diff --git a/libnm-glib/nm-remote-settings.c b/libnm-glib/nm-remote-settings.c
index 3d335fe..0e928fb 100644                                                 
--- a/libnm-glib/nm-remote-settings.c                                         
+++ b/libnm-glib/nm-remote-settings.c                                         
@@ -122,6 +122,10 @@ connection_init_result_cb (NMRemoteConnection *remote,   
        }                                                                     
                                                                              
        g_hash_table_remove (priv->pending, path);                            
+                                                                             
+       if (g_hash_table_size (priv->pending) == 0) {                         
+               g_signal_emit_by_name (self, NM_REMOTE_SETTINGS_CONNECTIONS_FETCHED);
+       }                                                                            
 }                                                                                   
                                                                                     
 static void                                                                         
@@ -169,11 +173,16 @@ fetch_connections_done (DBusGProxy *proxy,                     
                return;                                                              
        }                                                                            
                                                                                     
-       for (i = 0; connections && (i < connections->len); i++) {                    
-               char *path = g_ptr_array_index (connections, i);                     
+       if (connections->len == 0) {                                                 
+               g_signal_emit_by_name (self, NM_REMOTE_SETTINGS_CONNECTIONS_FETCHED);
+       }                                                                            
+       else {                                                                       
+               for (i = 0; connections && (i < connections->len); i++) {            
+                       char *path = g_ptr_array_index (connections, i);             
                                                                                     
-               new_connection_cb (proxy, path, user_data);                          
-               g_free (path);                                                       
+                       new_connection_cb (proxy, path, user_data);                  
+                       g_free (path);                                               
+               }                                                                    
        }                                                                            
        g_ptr_array_free (connections, TRUE);                                        
 }                                                                                   
@@ -484,5 +493,14 @@ nm_remote_settings_class_init (NMRemoteSettingsClass *class)    
                                    NM_CONNECTION_SCOPE_USER,                        
                                    NM_CONNECTION_SCOPE_USER,                        
                                    G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));    
+                                                                                    
+       /* Signals */                                                                
+       g_signal_new (NM_REMOTE_SETTINGS_CONNECTIONS_FETCHED,                        
+                                       G_OBJECT_CLASS_TYPE (object_class),          
+                                       G_SIGNAL_RUN_FIRST,
+                                       G_STRUCT_OFFSET (NMRemoteSettingsClass, connections_fetched),
+                                       NULL, NULL,
+                                       g_cclosure_marshal_VOID__VOID,
+                                       G_TYPE_NONE, 0);
 }

diff --git a/libnm-glib/nm-remote-settings.h b/libnm-glib/nm-remote-settings.h
index f94aee4..05be199 100644
--- a/libnm-glib/nm-remote-settings.h
+++ b/libnm-glib/nm-remote-settings.h
@@ -41,12 +41,18 @@ G_BEGIN_DECLS
 #define NM_REMOTE_SETTINGS_BUS "bus"
 #define NM_REMOTE_SETTINGS_SCOPE "scope"

+#define NM_REMOTE_SETTINGS_CONNECTIONS_FETCHED "connections-fetched"
+
+
 typedef struct {
        GObject parent;
 } NMRemoteSettings;

 typedef struct {
        GObjectClass parent;
+
+       /* Signals */
+       void (*connections_fetched) (NMRemoteSettings *remote_settings);
 } NMRemoteSettingsClass;

 GType nm_remote_settings_get_type (void);
--
1.6.0.2


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]