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

Reply via email to