aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2008-12-18 10:51:29 +0100
committerMarcel Holtmann <marcel@holtmann.org>2008-12-18 10:51:29 +0100
commit82a8317e0b6e5f5f284452d764fffac61a80f53f (patch)
tree2e74010b798f9dd346a311530971f1bf03f3544d
parent7b6a7b2db31da044ae9200a31d7252c1aca5d3f1 (diff)
downloadconnman-gnome-82a8317e0b6e5f5f284452d764fffac61a80f53f.tar.gz
Fix creation of network model
-rw-r--r--common/connman-client.c58
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;
}