This email list is read-only. Emails sent to this list will be discarded ---------------------------------- ChangeLog | 4 +++ applet/main.c | 8 +++++- common/connman-client.c | 59 ++++++++++++++++++++++++++++++++++++++++++++-- common/connman-client.h | 6 ++++- common/connman-dbus.c | 17 +++++++++++-- common/demo.c | 2 +- configure.ac | 2 +- properties/advanced.h | 3 ++ properties/ethernet.c | 15 ++++++++++++ properties/main.c | 8 ++++++ properties/wifi.c | 47 ++++++++++++++++++++++++++++++++++++- 11 files changed, 160 insertions(+), 11 deletions(-)
New commits: commit b432568a08ba2e5c10c2578d796f795afc6b6be9 Author: Marcel Holtmann <[email protected]> Date: Sat Jan 24 00:35:16 2009 +0100 Release 0.4 commit 8edcfd8bcc0ec205951e5109a91fbac74c567f74 Author: Marcel Holtmann <[email protected]> Date: Sat Jan 24 00:10:11 2009 +0100 Add support for WiFi policy changes commit e24f3aefeb76d7b0be65c899ff87d230cbf27fc8 Author: Marcel Holtmann <[email protected]> Date: Sat Jan 24 00:05:57 2009 +0100 Fix setting of Ethernet device policy commit 7ca18b54fe37d4186cc93b10b022107f1fb4b53b Author: Marcel Holtmann <[email protected]> Date: Fri Jan 23 23:50:26 2009 +0100 Add function for setting policy commit 08d62fab976f4f2afd187cf53f5d249e0266a30d Author: Marcel Holtmann <[email protected]> Date: Fri Jan 23 23:28:17 2009 +0100 Add option to mark network as known commit 76078d34b2d9ae940636a91377b5b8a99d515568 Author: Marcel Holtmann <[email protected]> Date: Fri Jan 23 23:20:11 2009 +0100 Get properties on all list changes commit 1f51438964ed0a8cd29025e6244bfa332522d994 Author: Marcel Holtmann <[email protected]> Date: Fri Jan 23 23:19:32 2009 +0100 Add support of user data for status callback Diff in this email is a maximum of 400 lines. diff --git a/ChangeLog b/ChangeLog index 0ef4648..c918f02 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +ver 0.4: + Fix device policy setting. + Fix connection properties handling. + ver 0.3: Add dialog for setting passphrase of networks. Add menu option to disconnect from a network. diff --git a/applet/main.c b/applet/main.c index 1de3afa..cf12a34 100644 --- a/applet/main.c +++ b/applet/main.c @@ -163,14 +163,20 @@ static void passphrase_dialog(const char *path, const char *name) g_signal_connect(G_OBJECT(button), "toggled", G_CALLBACK(toggled_callback), entry); + button = gtk_check_button_new_with_label(_("Remember network")); + gtk_container_add(GTK_CONTAINER(vbox), button); + gtk_widget_show_all(dialog); if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { const gchar *passphrase; + gboolean remember; passphrase = gtk_entry_get_text(GTK_ENTRY(entry)); + remember = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)); connman_client_set_passphrase(client, path, passphrase); + connman_client_set_remember(client, path, remember); status_prepare(); connman_client_connect(client, path); @@ -460,7 +466,7 @@ int main(int argc, char *argv[]) update_status(model); - connman_client_set_callback(client, status_callback); + connman_client_set_callback(client, status_callback, NULL); gtk_main(); diff --git a/common/connman-client.c b/common/connman-client.c index 9d57ddd..aad0a22 100644 --- a/common/connman-client.c +++ b/common/connman-client.c @@ -46,6 +46,7 @@ struct _ConnmanClientPrivate { DBusGProxy *dbus; DBusGProxy *manager; ConnmanClientCallback callback; + gpointer userdata; }; G_DEFINE_TYPE(ConnmanClient, connman_client, G_TYPE_OBJECT) @@ -84,7 +85,7 @@ done: g_object_set_data(G_OBJECT(priv->store), "State", g_strdup(state)); if (priv->callback != NULL) - priv->callback(state, NULL); + priv->callback(state, priv->userdata); } static DBusGConnection *connection = NULL; @@ -336,6 +337,30 @@ GtkTreeModel *connman_client_get_connection_model(ConnmanClient *client) return model; } +void connman_client_set_policy(ConnmanClient *client, const gchar *device, + const gchar *policy) +{ + ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); + DBusGProxy *proxy; + GValue value = { 0 }; + + DBG("client %p", client); + + if (device == NULL) + return; + + proxy = connman_dbus_get_proxy(priv->store, device); + if (proxy == NULL) + return; + + g_value_init(&value, G_TYPE_STRING); + g_value_set_string(&value, policy); + + connman_set_property(proxy, "Policy", &value, NULL); + + g_object_unref(proxy); +} + void connman_client_set_powered(ConnmanClient *client, const gchar *device, gboolean powered) { @@ -549,8 +574,34 @@ void connman_client_set_passphrase(ConnmanClient *client, const gchar *network, g_object_unref(proxy); } +void connman_client_set_remember(ConnmanClient *client, const gchar *network, + gboolean remember) +{ + ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); + DBusGProxy *proxy; + GValue value = { 0 }; + + DBG("client %p", client); + + if (network == NULL) + return; + + proxy = connman_dbus_get_proxy(priv->store, network); + if (proxy == NULL) + return; + + g_value_init(&value, G_TYPE_BOOLEAN); + g_value_set_boolean(&value, remember); + + connman_set_property(proxy, "Remember", &value, NULL); + + g_value_unset(&value); + + g_object_unref(proxy); +} + void connman_client_set_callback(ConnmanClient *client, - ConnmanClientCallback callback) + ConnmanClientCallback callback, gpointer user_data) { ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); gchar *state; @@ -558,10 +609,12 @@ void connman_client_set_callback(ConnmanClient *client, DBG("client %p", client); priv->callback = callback; + priv->userdata = user_data; g_object_set_data(G_OBJECT(priv->store), "callback", callback); + g_object_set_data(G_OBJECT(priv->store), "userdata", user_data); state = g_object_get_data(G_OBJECT(priv->store), "State"); if (state != NULL && priv->callback != NULL) - priv->callback(state, NULL); + priv->callback(state, priv->userdata); } diff --git a/common/connman-client.h b/common/connman-client.h index d351651..f30dae4 100644 --- a/common/connman-client.h +++ b/common/connman-client.h @@ -60,6 +60,8 @@ GtkTreeModel *connman_client_get_network_model(ConnmanClient *client, const gchar *device); GtkTreeModel *connman_client_get_connection_model(ConnmanClient *client); +void connman_client_set_policy(ConnmanClient *client, const gchar *device, + const gchar *policy); void connman_client_set_powered(ConnmanClient *client, const gchar *device, gboolean powered); void connman_client_propose_scan(ConnmanClient *client, const gchar *device); @@ -71,11 +73,13 @@ guint connman_client_get_security(ConnmanClient *client, const gchar *network); gchar *connman_client_get_passphrase(ConnmanClient *client, const gchar *network); void connman_client_set_passphrase(ConnmanClient *client, const gchar *network, const gchar *passphrase); +void connman_client_set_remember(ConnmanClient *client, const gchar *network, + gboolean remember); typedef void (* ConnmanClientCallback) (const char *status, void *user_data); void connman_client_set_callback(ConnmanClient *client, - ConnmanClientCallback callback); + ConnmanClientCallback callback, gpointer user_data); enum { CONNMAN_COLUMN_PROXY, /* G_TYPE_OBJECT */ diff --git a/common/connman-dbus.c b/common/connman-dbus.c index 4fdd408..9eba7ae 100644 --- a/common/connman-dbus.c +++ b/common/connman-dbus.c @@ -165,7 +165,7 @@ static void property_update(GtkTreeStore *store, const GValue *value, GSList *list, *link, *old_list, *new_list = NULL; const char *iface; - DBG("store %p", store); + DBG("store %p key %s", store, key); if (g_str_equal(key, "Connections") == TRUE) iface = CONNMAN_CONNECTION_INTERFACE; @@ -184,11 +184,12 @@ static void property_update(GtkTreeStore *store, const GValue *value, gchar *path = list->data; DBusGProxy *proxy; + DBG("new path %s", path); + link = g_slist_find_custom(old_list, path, compare_path); if (link != NULL) { g_free(link->data); old_list = g_slist_delete_link(old_list, link); - continue; } proxy = dbus_g_proxy_new_for_name(connection, @@ -196,6 +197,8 @@ static void property_update(GtkTreeStore *store, const GValue *value, if (proxy == NULL) continue; + DBG("getting %s properties", key); + connman_get_properties_async(proxy, callback, store); } @@ -204,6 +207,8 @@ static void property_update(GtkTreeStore *store, const GValue *value, GtkTreeIter iter; gchar *device = NULL; + DBG("old path %s", path); + if (get_iter_from_path(store, &iter, path) == TRUE) { if (g_str_equal(key, "Connections") == TRUE) gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, @@ -524,6 +529,8 @@ static void connection_properties(DBusGProxy *proxy, GHashTable *hash, const char *device, *address; GtkTreeIter iter; + DBG("store %p proxy %p hash %p", store, proxy, hash); + if (error != NULL || hash == NULL) goto done; @@ -589,6 +596,7 @@ static void manager_changed(DBusGProxy *proxy, const char *property, if (g_str_equal(property, "State") == TRUE) { ConnmanClientCallback callback; + gpointer userdata; gchar *state; state = g_object_get_data(G_OBJECT(store), "State"); @@ -598,8 +606,9 @@ static void manager_changed(DBusGProxy *proxy, const char *property, g_object_set_data(G_OBJECT(store), "State", state); callback = g_object_get_data(G_OBJECT(store), "callback"); + userdata = g_object_get_data(G_OBJECT(store), "userdata"); if (callback) - callback(state, NULL); + callback(state, userdata); } else if (g_str_equal(property, "Connections") == TRUE) { property_update(store, value, property, connection_properties); } else if (g_str_equal(property, "Devices") == TRUE) { @@ -655,6 +664,8 @@ DBusGProxy *connman_dbus_create_manager(DBusGConnection *conn, dbus_g_proxy_connect_signal(proxy, "PropertyChanged", G_CALLBACK(manager_changed), store, NULL); + DBG("getting manager properties"); + connman_get_properties_async(proxy, manager_properties, store); return proxy; diff --git a/common/demo.c b/common/demo.c index 9c649e5..5e3924f 100644 --- a/common/demo.c +++ b/common/demo.c @@ -450,7 +450,7 @@ int main(int argc, char *argv[]) window = create_window(); - connman_client_set_callback(client, status_callback); + connman_client_set_callback(client, status_callback, NULL); if (option_fullscreen == TRUE) gtk_window_fullscreen(GTK_WINDOW(window)); diff --git a/configure.ac b/configure.ac index 70a482b..f2ceb30 100644 --- a/configure.ac +++ b/configure.ac @@ -1,7 +1,7 @@ AC_PREREQ(2.50) AC_INIT() -AM_INIT_AUTOMAKE(connman-gnome, 0.3) +AM_INIT_AUTOMAKE(connman-gnome, 0.4) AM_CONFIG_HEADER(config.h) AM_MAINTAINER_MODE diff --git a/properties/advanced.h b/properties/advanced.h index 7db5bb1..f85f10d 100644 --- a/properties/advanced.h +++ b/properties/advanced.h @@ -20,6 +20,8 @@ */ struct config_data { + ConnmanClient *client; + GtkWidget *widget; GtkWidget *title; GtkWidget *label; @@ -28,6 +30,7 @@ struct config_data { GtkWidget *window; GtkTreeModel *model; gchar *index; + gchar *device; GtkWidget *dialog; diff --git a/properties/ethernet.c b/properties/ethernet.c index 90a3149..d5c948d 100644 --- a/properties/ethernet.c +++ b/properties/ethernet.c @@ -36,6 +36,21 @@ static void changed_callback(GtkWidget *editable, gpointer user_data) gint active; active = gtk_combo_box_get_active(GTK_COMBO_BOX(data->policy.config)); + + switch (active) { + case 0: + connman_client_set_policy(data->client, data->device, "auto"); + update_ethernet_policy(data, CONNMAN_POLICY_AUTO); + break; + case 1: + connman_client_set_policy(data->client, data->device, "ignore"); + update_ethernet_policy(data, CONNMAN_POLICY_IGNORE); + break; + case 3: + connman_client_set_policy(data->client, data->device, "off"); + update_ethernet_policy(data, CONNMAN_POLICY_OFF); + break; + } } void add_ethernet_policy(GtkWidget *mainbox, struct config_data *data) diff --git a/properties/main.c b/properties/main.c index 4ba66b2..01439e6 100644 --- a/properties/main.c +++ b/properties/main.c @@ -24,6 +24,7 @@ #endif #include <glib/gi18n.h> +#include <dbus/dbus-glib.h> #include "connman-client.h" @@ -123,6 +124,7 @@ static struct config_data *create_config(GtkTreeModel *model, GtkWidget *hbox; GtkWidget *button; struct config_data *data; + DBusGProxy *proxy; guint type, policy; gboolean inrange; gchar *markup, *vendor = NULL, *product = NULL; @@ -132,13 +134,19 @@ static struct config_data *create_config(GtkTreeModel *model, if (data == NULL) return NULL; + data->client = client; + gtk_tree_model_get(model, iter, + CONNMAN_COLUMN_PROXY, &proxy, CONNMAN_COLUMN_TYPE, &type, CONNMAN_COLUMN_INRANGE, &inrange, CONNMAN_COLUMN_NETWORK, &network, CONNMAN_COLUMN_ADDRESS, &address, CONNMAN_COLUMN_POLICY, &policy, -1); + data->device = g_strdup(dbus_g_proxy_get_path(proxy)); + g_object_unref(proxy); + mainbox = gtk_vbox_new(FALSE, 6); data->widget = mainbox; diff --git a/properties/wifi.c b/properties/wifi.c index 06628aa..320dce4 100644 --- a/properties/wifi.c +++ b/properties/wifi.c @@ -36,6 +36,21 @@ static void changed_callback(GtkWidget *editable, gpointer user_data) gint active; active = gtk_combo_box_get_active(GTK_COMBO_BOX(data->policy.config)); + + switch (active) { + case 0: + connman_client_set_policy(data->client, data->device, "auto"); + update_wifi_policy(data, CONNMAN_POLICY_AUTO); + break; + case 1: + connman_client_set_policy(data->client, data->device, "manual"); + update_wifi_policy(data, CONNMAN_POLICY_MANUAL); + break; + case 3: + connman_client_set_policy(data->client, data->device, "off"); + update_wifi_policy(data, CONNMAN_POLICY_OFF); + break; + } } void add_wifi_policy(GtkWidget *mainbox, struct config_data *data) @@ -54,6 +69,7 @@ void add_wifi_policy(GtkWidget *mainbox, struct config_data *data) gtk_table_set_col_spacings(GTK_TABLE(table), 8); gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); _______________________________________________ Commits mailing list [email protected] https://lists.moblin.org/mailman/listinfo/commits
