diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2008-12-18 10:51:29 +0100 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2008-12-18 10:51:29 +0100 |
commit | 82a8317e0b6e5f5f284452d764fffac61a80f53f (patch) | |
tree | 2e74010b798f9dd346a311530971f1bf03f3544d | |
parent | 7b6a7b2db31da044ae9200a31d7252c1aca5d3f1 (diff) | |
download | connman-gnome-82a8317e0b6e5f5f284452d764fffac61a80f53f.tar.gz |
Fix creation of network model
-rw-r--r-- | common/connman-client.c | 58 |
1 files changed, 32 insertions, 26 deletions
diff --git a/common/connman-client.c b/common/connman-client.c index 9d0972e..18e7f09 100644 --- a/common/connman-client.c +++ b/common/connman-client.c @@ -235,42 +235,48 @@ GtkTreeModel *connman_client_get_device_network_model(ConnmanClient *client) return model; } -static gboolean network_filter(GtkTreeModel *model, - GtkTreeIter *iter, gpointer user_data) +GtkTreeModel *connman_client_get_network_model(ConnmanClient *client, + const gchar *device) { - gchar *device = user_data; - DBusGProxy *proxy; - gboolean active; + ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); + GtkTreeModel *model; + GtkTreePath *path; + GtkTreeIter iter; + gboolean cont, found = FALSE; - gtk_tree_model_get(model, iter, CONNMAN_COLUMN_PROXY, &proxy, -1); + DBG("client %p", client); - if (proxy == NULL) - return FALSE; + cont = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(priv->store), + &iter); - if (g_str_equal(CONNMAN_NETWORK_INTERFACE, - dbus_g_proxy_get_interface(proxy)) == TRUE) - active = g_str_has_prefix(dbus_g_proxy_get_interface(proxy), - device); - else - active = FALSE; + while (cont == TRUE) { + DBusGProxy *proxy; - g_object_unref(proxy); + gtk_tree_model_get(GTK_TREE_MODEL(priv->store), &iter, + CONNMAN_COLUMN_PROXY, &proxy, -1); - return active; -} + if (g_str_equal(CONNMAN_DEVICE_INTERFACE, + dbus_g_proxy_get_interface(proxy)) == TRUE) + found = g_str_has_prefix(dbus_g_proxy_get_path(proxy), + device); -GtkTreeModel *connman_client_get_network_model(ConnmanClient *client, - const gchar *device) -{ - ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); - GtkTreeModel *model; + g_object_unref(proxy); - DBG("client %p", client); + if (found == TRUE) + break; - model = gtk_tree_model_filter_new(GTK_TREE_MODEL(priv->store), NULL); + cont = gtk_tree_model_iter_next(GTK_TREE_MODEL(priv->store), + &iter); + } - gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(model), - network_filter, g_strdup(device), g_free); + if (found == TRUE) { + path = gtk_tree_model_get_path(GTK_TREE_MODEL(priv->store), + &iter); + model = gtk_tree_model_filter_new(GTK_TREE_MODEL(priv->store), + path); + gtk_tree_path_free(path); + } else + model = NULL; return model; } |