diff options
| author | Koen Kooi <koen@dominion.thruhere.net> | 2011-06-12 18:24:18 +0200 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-06-14 13:23:50 +0100 |
| commit | 28246a275a0d7208f0361735685688803965648e (patch) | |
| tree | 93c240bf234a435ce11dee0c49b1779425467bed | |
| parent | 250c89a34fedeadf5c098b64cb1833e45194a108 (diff) | |
| download | openembedded-core-28246a275a0d7208f0361735685688803965648e.tar.gz openembedded-core-28246a275a0d7208f0361735685688803965648e.tar.bz2 openembedded-core-28246a275a0d7208f0361735685688803965648e.zip | |
connman-gnome 0.5: build from git
All the local patches were applied upstream, so let's build straight from git to make that clear
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
5 files changed, 4 insertions, 4268 deletions
diff --git a/meta/recipes-connectivity/connman/connman-gnome/applet_menu_popup_fix.patch b/meta/recipes-connectivity/connman/connman-gnome/applet_menu_popup_fix.patch deleted file mode 100644 index d34257ba0f..0000000000 --- a/meta/recipes-connectivity/connman/connman-gnome/applet_menu_popup_fix.patch +++ /dev/null @@ -1,19 +0,0 @@ -Even if all services are not available, we still need to let user have -the ability to configure network, for example, online/offline, etc. -Therefore enable the callback menu even when status is unavailable. - -Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com> - -diff --git a/applet/status.c b/applet/status.c -index 13ec752..d817f22 100644 ---- a/applet/status.c -+++ b/applet/status.c -@@ -231,8 +231,6 @@ void status_unavailable(void) - { - icon_animation_stop(animation); - -- available = FALSE; -- - gtk_status_icon_set_from_pixbuf(statusicon, pixbuf_notifier); - gtk_status_icon_set_tooltip(statusicon, - "Connection Manager daemon is not running"); diff --git a/meta/recipes-connectivity/connman/connman-gnome/connman-gnome.patch b/meta/recipes-connectivity/connman/connman-gnome/connman-gnome.patch deleted file mode 100644 index 2fe8bb80fb..0000000000 --- a/meta/recipes-connectivity/connman/connman-gnome/connman-gnome.patch +++ /dev/null @@ -1,4162 +0,0 @@ -connman-gnome: Change the code to fit recent connman - -The recent connman changes from "device" based to "service" based. -Therefore most of the interaction protocol between connman and -connman-gnome has changed. This commit uses the new dbus interface -to interact with connman. With this change, connman-gnome could -do wired and wireless interface configurations with latest connman. - -Besides, some UI is re-designed to be more neat and friendly to -end user. - -Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com> - -diff --git a/applet/main.c b/applet/main.c -index 2a9b36e..08d394c 100644 ---- a/applet/main.c -+++ b/applet/main.c -@@ -98,279 +98,21 @@ static void settings_callback(GtkWidget *item, gpointer user_data) - g_printerr("Couldn't execute command: %s\n", command); - } - --static void toggled_callback(GtkWidget *button, gpointer user_data) --{ -- GtkWidget *entry = user_data; -- gboolean mode; -- -- mode = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)); -- -- gtk_entry_set_visibility(GTK_ENTRY(entry), mode); --} -- --static void passphrase_dialog(const char *path, const char *name) --{ -- GtkWidget *dialog; -- GtkWidget *button; -- GtkWidget *image; -- GtkWidget *label; -- GtkWidget *entry; -- GtkWidget *table; -- GtkWidget *vbox; -- -- dialog = gtk_dialog_new(); -- gtk_window_set_title(GTK_WINDOW(dialog), _("Enter passphrase")); -- gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE); -- gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER); -- gtk_window_set_keep_above(GTK_WINDOW(dialog), TRUE); -- gtk_window_set_urgency_hint(GTK_WINDOW(dialog), TRUE); -- gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE); -- -- button = gtk_dialog_add_button(GTK_DIALOG(dialog), -- GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT); -- button = gtk_dialog_add_button(GTK_DIALOG(dialog), -- GTK_STOCK_OK, GTK_RESPONSE_ACCEPT); -- gtk_widget_grab_default(button); -- -- table = gtk_table_new(5, 2, FALSE); -- gtk_table_set_row_spacings(GTK_TABLE(table), 4); -- gtk_table_set_col_spacings(GTK_TABLE(table), 20); -- gtk_container_set_border_width(GTK_CONTAINER(table), 12); -- gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), table); -- image = gtk_image_new_from_icon_name(GTK_STOCK_DIALOG_AUTHENTICATION, -- GTK_ICON_SIZE_DIALOG); -- gtk_misc_set_alignment(GTK_MISC(image), 0.0, 0.0); -- gtk_table_attach(GTK_TABLE(table), image, 0, 1, 0, 5, -- GTK_SHRINK, GTK_FILL, 0, 0); -- vbox = gtk_vbox_new(FALSE, 6); -- -- label = gtk_label_new(_("Network requires input of a passphrase:")); -- gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0); -- gtk_container_add(GTK_CONTAINER(vbox), label); -- gtk_table_attach(GTK_TABLE(table), vbox, 1, 2, 0, 1, -- GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0); -- -- entry = gtk_entry_new(); -- gtk_entry_set_max_length(GTK_ENTRY(entry), 120); -- gtk_entry_set_width_chars(GTK_ENTRY(entry), 20); -- gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); -- gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); -- gtk_container_add(GTK_CONTAINER(vbox), entry); -- -- button = gtk_check_button_new_with_label(_("Show input")); -- gtk_container_add(GTK_CONTAINER(vbox), button); -- -- 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); -- } -- -- gtk_widget_destroy(dialog); --} -- --static void activate_callback(GtkWidget *item, gpointer user_data) --{ -- const gchar *path = user_data; -- guint security; -- gchar *passphrase; -- -- security = connman_client_get_security(client, path); -- if (security == CONNMAN_SECURITY_UNKNOWN) -- return; -- -- if (security == CONNMAN_SECURITY_NONE) { -- status_prepare(); -- connman_client_connect(client, path); -- return; -- } -- -- passphrase = connman_client_get_passphrase(client, path); -- if (passphrase != NULL) { -- g_free(passphrase); -- -- status_prepare(); -- connman_client_connect(client, path); -- return; -- } -- -- passphrase_dialog(path, NULL); --} -- --static void disconnect_callback(GtkWidget *item, gpointer user_data) --{ -- connman_client_disconnect(client, NULL); --} -- --static GtkWidget *create_popupmenu(void) --{ -- GtkWidget *menu; -- GtkWidget *item; -- -- menu = gtk_menu_new(); -- -- item = gtk_image_menu_item_new_from_stock(GTK_STOCK_PREFERENCES, NULL); -- g_signal_connect(item, "activate", G_CALLBACK(settings_callback), NULL); -- gtk_widget_show(item); -- gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); -- -- item = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT, NULL); -- g_signal_connect(item, "activate", G_CALLBACK(about_callback), NULL); -- gtk_widget_show(item); -- gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); -- -- return menu; --} -- --static GtkWidget *append_menuitem(GtkMenu *menu, const char *ssid, -- guint security, guint strength) --{ -- GtkWidget *item; -- GtkWidget *hbox; -- GtkWidget *label; -- GtkWidget *image; -- GtkWidget *progress; -- -- item = gtk_check_menu_item_new(); -- gtk_check_menu_item_set_draw_as_radio(GTK_CHECK_MENU_ITEM(item), TRUE); -- -- hbox = gtk_hbox_new(FALSE, 6); -- gtk_container_add(GTK_CONTAINER(item), hbox); -- gtk_widget_show(hbox); -- -- label = gtk_label_new(NULL); -- gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); -- gtk_label_set_text(GTK_LABEL(label), ssid); -- gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); -- gtk_widget_show(label); -- -- image = gtk_image_new_from_stock(GTK_STOCK_DIALOG_AUTHENTICATION, -- GTK_ICON_SIZE_MENU); -- gtk_misc_set_alignment(GTK_MISC(image), 1.0, 0.5); -- if (security != CONNMAN_SECURITY_NONE) { -- gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0); -- gtk_widget_show(image); -- } -- -- progress = gtk_progress_bar_new(); -- gtk_widget_set_size_request(progress, 100, -1); -- gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress), -- (double) strength / 100); -- gtk_box_pack_end(GTK_BOX(hbox), progress, FALSE, TRUE, 0); -- gtk_widget_show(progress); -- -- gtk_widget_show(item); -- gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); -- -- return item; --} -- --static void enumerate_networks(GtkMenu *menu, -- GtkTreeModel *model, GtkTreeIter *parent) --{ -- GtkTreeIter iter; -- gboolean cont; -- -- cont = gtk_tree_model_iter_children(model, &iter, parent); -- -- while (cont == TRUE) { -- GtkWidget *item; -- DBusGProxy *proxy; -- guint strength, security; -- gchar *name, *path; -- gboolean inrange, connected; -- -- gtk_tree_model_get(model, &iter, -- CONNMAN_COLUMN_PROXY, &proxy, -- CONNMAN_COLUMN_NAME, &name, -- CONNMAN_COLUMN_INRANGE, &inrange, -- CONNMAN_COLUMN_ENABLED, &connected, -- CONNMAN_COLUMN_STRENGTH, &strength, -- CONNMAN_COLUMN_SECURITY, &security, -1); -- -- if (connected == TRUE || inrange == TRUE) { -- item = append_menuitem(menu, name, security, strength); -- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), -- connected); -- -- path = g_strdup(dbus_g_proxy_get_path(proxy)); -- g_signal_connect(item, "activate", -- G_CALLBACK(activate_callback), path); -- } -- -- g_free(name); -- -- cont = gtk_tree_model_iter_next(model, &iter); -- } --} -- - static gboolean menu_callback(GtkMenu *menu) - { -- GtkTreeModel *model; -- GtkTreeIter parent; - GtkWidget *item; -- gboolean cont; -- -- connman_client_propose_scan(client, NULL); -- -- model = connman_client_get_device_network_model(client); -- -- cont = gtk_tree_model_get_iter_first(model, &parent); -- -- while (cont == TRUE) { -- guint type; -- gchar *name; -- -- gtk_tree_model_get(model, &parent, -- CONNMAN_COLUMN_TYPE, &type, -- CONNMAN_COLUMN_NAME, &name, -1); -- -- switch (type) { -- case CONNMAN_TYPE_WIFI: -- case CONNMAN_TYPE_WIMAX: -- enumerate_networks(menu, model, &parent); -- break; -- default: -- break; -- } -- -- g_free(name); -- -- cont = gtk_tree_model_iter_next(model, &parent); -- } -- -- g_object_unref(model); - - item = gtk_separator_menu_item_new(); - gtk_widget_show(item); - gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); - -- item = gtk_menu_item_new_with_label(_("Disconnect Network")); -- g_signal_connect(item, "activate", -- G_CALLBACK(disconnect_callback), NULL); -+ item = gtk_image_menu_item_new_from_stock(GTK_STOCK_PREFERENCES, NULL); -+ g_signal_connect(item, "activate", G_CALLBACK(settings_callback), NULL); - gtk_widget_show(item); - gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); - -- item = gtk_menu_item_new_with_label(_("Join Other Network...")); -- gtk_widget_set_sensitive(item, FALSE); -- //g_signal_connect(item, "activate", -- // G_CALLBACK(join_callback), NULL); -+ item = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT, NULL); -+ g_signal_connect(item, "activate", G_CALLBACK(about_callback), NULL); - gtk_widget_show(item); - gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); - -@@ -387,16 +129,17 @@ static void update_status(GtkTreeModel *model) - cont = gtk_tree_model_get_iter_first(model, &iter); - - while (cont == TRUE) { -- gboolean enabled; -+ gchar *state; - - gtk_tree_model_get(model, &iter, - CONNMAN_COLUMN_TYPE, &type, - CONNMAN_COLUMN_STRENGTH, &strength, -- CONNMAN_COLUMN_ENABLED, &enabled, -1); -+ CONNMAN_COLUMN_STATE, &state, -1); - - online = TRUE; - -- if (enabled == TRUE) -+ if ((type == CONNMAN_TYPE_ETHERNET && (g_str_equal(state, "idle") || g_str_equal(state, "online"))) || -+ (type == CONNMAN_TYPE_WIFI && (g_str_equal(state, "ready") || g_str_equal(state, "online")))) - break; - - cont = gtk_tree_model_iter_next(model, &iter); -@@ -453,7 +196,7 @@ int main(int argc, char *argv[]) - - g_set_application_name(_("Connection Manager")); - -- status_init(menu_callback, create_popupmenu()); -+ status_init(menu_callback); - - client = connman_client_new(); - model = connman_client_get_connection_model(client); -diff --git a/applet/status.c b/applet/status.c -index ef11bcc..13ec752 100644 ---- a/applet/status.c -+++ b/applet/status.c -@@ -170,19 +170,6 @@ static void activate_callback(GObject *object, gpointer user_data) - GTK_STATUS_ICON(object), 1, activate_time); - } - --static void popup_callback(GObject *object, guint button, -- guint activate_time, gpointer user_data) --{ -- GtkMenu *menu = user_data; -- -- if (menu == NULL) -- return; -- -- gtk_menu_popup(menu, NULL, NULL, -- gtk_status_icon_position_menu, -- GTK_STATUS_ICON(object), button, activate_time); --} -- - static GtkIconTheme *icontheme; - static IconAnimation *animation; - static GdkPixbuf *pixbuf_notifier; -@@ -190,7 +177,7 @@ static GdkPixbuf *pixbuf_none; - static GdkPixbuf *pixbuf_wired; - static GdkPixbuf *pixbuf_signal[5]; - --int status_init(StatusCallback activate, GtkWidget *popup) -+int status_init(StatusCallback activate) - { - GdkScreen *screen; - -@@ -219,9 +206,6 @@ int status_init(StatusCallback activate, GtkWidget *popup) - g_signal_connect(statusicon, "activate", - G_CALLBACK(activate_callback), activate); - -- g_signal_connect(statusicon, "popup-menu", -- G_CALLBACK(popup_callback), popup); -- - return 0; - } - -@@ -292,8 +276,6 @@ void status_config(void) - - static void set_ready(gint signal) - { -- int index; -- - available = TRUE; - - if (signal < 0) { -@@ -302,12 +284,7 @@ static void set_ready(gint signal) - return; - } - -- if (signal == 0) -- index = 0; -- else -- index = 3; -- -- gtk_status_icon_set_from_pixbuf(statusicon, pixbuf_signal[index]); -+ gtk_status_icon_set_from_pixbuf(statusicon, pixbuf_signal[4]); - gtk_status_icon_set_tooltip(statusicon, NULL); - } - -diff --git a/applet/status.h b/applet/status.h -index 772a7b2..8a3c83c 100644 ---- a/applet/status.h -+++ b/applet/status.h -@@ -21,7 +21,7 @@ - - typedef gboolean (* StatusCallback) (GtkMenu *menu); - --int status_init(StatusCallback activate, GtkWidget *popup); -+int status_init(StatusCallback activate); - void status_cleanup(void); - - void status_unavailable(void); -diff --git a/common/Makefile.am b/common/Makefile.am -index ff3a996..8d74a46 100644 ---- a/common/Makefile.am -+++ b/common/Makefile.am -@@ -5,13 +5,6 @@ libcommon_a_SOURCES = connman-dbus.c connman-dbus.h \ - connman-client.h connman-client.c \ - instance.h instance.c - --noinst_PROGRAMS = connman-demo test-client -- --connman_demo_SOURCES = demo.c --connman_demo_LDADD = libcommon.a @GTK_LIBS@ @DBUS_LIBS@ -- --test_client_LDADD = libcommon.a @GTK_LIBS@ @DBUS_LIBS@ -- - BUILT_SOURCES = marshal.h marshal.c \ - connman-dbus-glue.h \ - instance-glue.h -diff --git a/common/connman-client.c b/common/connman-client.c -index aad0a22..4f9cf64 100644 ---- a/common/connman-client.c -+++ b/common/connman-client.c -@@ -98,13 +98,13 @@ static void connman_client_init(ConnmanClient *client) - - priv->store = gtk_tree_store_new(_CONNMAN_NUM_COLUMNS, G_TYPE_OBJECT, - G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT, -- G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, -- G_TYPE_UINT, G_TYPE_UINT, G_TYPE_STRING, -- G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT, -- G_TYPE_STRING); -+ G_TYPE_STRING, G_TYPE_UINT, G_TYPE_STRING, -+ G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, -+ G_TYPE_STRING, G_TYPE_STRING, -+ G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN); - - g_object_set_data(G_OBJECT(priv->store), -- "State", g_strdup("unavailable")); -+ "State", g_strdup("unavailable")); - - priv->dbus = dbus_g_proxy_new_for_name(connection, DBUS_SERVICE_DBUS, - DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS); -@@ -191,13 +191,23 @@ static gboolean device_filter(GtkTreeModel *model, - { - DBusGProxy *proxy; - gboolean active; -+ guint type; - -- gtk_tree_model_get(model, iter, CONNMAN_COLUMN_PROXY, &proxy, -1); -+ gtk_tree_model_get(model, iter, CONNMAN_COLUMN_PROXY, &proxy, -+ CONNMAN_COLUMN_TYPE, &type, -+ -1); -+ -+ switch (type) { -+ case CONNMAN_TYPE_LABEL_ETHERNET: -+ case CONNMAN_TYPE_LABEL_WIFI: -+ case CONNMAN_TYPE_SYSCONFIG: -+ return TRUE; -+ } - - if (proxy == NULL) - return FALSE; - -- active = g_str_equal(CONNMAN_DEVICE_INTERFACE, -+ active = g_str_equal(CONNMAN_SERVICE_INTERFACE, - dbus_g_proxy_get_interface(proxy)); - - g_object_unref(proxy); -@@ -231,10 +241,10 @@ static gboolean device_network_filter(GtkTreeModel *model, - if (proxy == NULL) - return FALSE; - -- active = g_str_equal(CONNMAN_DEVICE_INTERFACE, -+ active = g_str_equal(CONNMAN_SERVICE_INTERFACE, - dbus_g_proxy_get_interface(proxy)); - if (active == FALSE) -- active = g_str_equal(CONNMAN_NETWORK_INTERFACE, -+ active = g_str_equal(CONNMAN_SERVICE_INTERFACE, - dbus_g_proxy_get_interface(proxy)); - - g_object_unref(proxy); -@@ -277,7 +287,7 @@ GtkTreeModel *connman_client_get_network_model(ConnmanClient *client, - gtk_tree_model_get(GTK_TREE_MODEL(priv->store), &iter, - CONNMAN_COLUMN_PROXY, &proxy, -1); - -- if (g_str_equal(CONNMAN_DEVICE_INTERFACE, -+ if (g_str_equal(CONNMAN_SERVICE_INTERFACE, - dbus_g_proxy_get_interface(proxy)) == TRUE) - found = g_str_has_prefix(dbus_g_proxy_get_path(proxy), - device); -@@ -314,7 +324,7 @@ static gboolean connection_filter(GtkTreeModel *model, - if (proxy == NULL) - return FALSE; - -- active = g_str_equal(CONNMAN_CONNECTION_INTERFACE, -+ active = g_str_equal(CONNMAN_SERVICE_INTERFACE, - dbus_g_proxy_get_interface(proxy)); - - g_object_unref(proxy); -@@ -337,28 +347,37 @@ GtkTreeModel *connman_client_get_connection_model(ConnmanClient *client) - return model; - } - --void connman_client_set_policy(ConnmanClient *client, const gchar *device, -- const gchar *policy) -+gboolean connman_client_set_ipv4(ConnmanClient *client, const gchar *device, -+ struct ipv4_config *ipv4_config) - { - ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); - DBusGProxy *proxy; - GValue value = { 0 }; -+ gboolean ret; -+ GHashTable *ipv4 = g_hash_table_new(g_str_hash, g_str_equal); -+ -+ g_hash_table_insert(ipv4, "Method", (gpointer)ipv4_config->method); -+ g_hash_table_insert(ipv4, "Address", (gpointer)ipv4_config->address); -+ g_hash_table_insert(ipv4, "Netmask", (gpointer)ipv4_config->netmask); -+ g_hash_table_insert(ipv4, "Gateway", (gpointer)ipv4_config->gateway); - - DBG("client %p", client); - - if (device == NULL) -- return; -+ return FALSE; - - proxy = connman_dbus_get_proxy(priv->store, device); - if (proxy == NULL) -- return; -+ return FALSE; - -- g_value_init(&value, G_TYPE_STRING); -- g_value_set_string(&value, policy); -+ g_value_init(&value, DBUS_TYPE_G_STRING_STRING_HASHTABLE); -+ g_value_set_boxed(&value, ipv4); - -- connman_set_property(proxy, "Policy", &value, NULL); -+ ret = connman_set_property(proxy, "IPv4.Configuration", &value, NULL); - - g_object_unref(proxy); -+ -+ return ret; - } - - void connman_client_set_powered(ConnmanClient *client, const gchar *device, -@@ -385,98 +404,128 @@ void connman_client_set_powered(ConnmanClient *client, const gchar *device, - g_object_unref(proxy); - } - --static gboolean device_scan(GtkTreeModel *model, GtkTreePath *path, -- GtkTreeIter *iter, gpointer user_data) -+void connman_client_request_scan(ConnmanClient *client, char *scantype, -+ connman_request_scan_reply callback, gpointer userdata) - { -- DBusGProxy *proxy; -- gboolean enabled; -+ ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); - -- gtk_tree_model_get(model, iter, CONNMAN_COLUMN_PROXY, &proxy, -- CONNMAN_COLUMN_ENABLED, &enabled, -1); -+ DBG("client %p", client); - -- if (proxy == NULL) -- return FALSE; -+ connman_request_scan_async(priv->manager, scantype, callback, userdata); -+} - -- if (g_str_equal(dbus_g_proxy_get_interface(proxy), -- CONNMAN_DEVICE_INTERFACE) == FALSE) -- return FALSE; -+gboolean connman_client_get_offline_status(ConnmanClient *client) -+{ -+ GHashTable *hash; -+ GValue *value; -+ ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); -+ gboolean ret; - -- if (enabled == FALSE) -- return FALSE; -+ DBG("client %p", client); - -- connman_propose_scan(proxy, NULL); -+ ret = connman_get_properties(priv->manager, &hash, NULL); - -- g_object_unref(proxy); -+ if (ret == FALSE) -+ goto done; -+ -+ value = g_hash_table_lookup(hash, "OfflineMode"); -+ ret = value ? g_value_get_boolean(value) : FALSE; -+ -+done: -+ return ret; - -- return FALSE; - } - --void connman_client_propose_scan(ConnmanClient *client, const gchar *device) -+void connman_client_set_offlinemode(ConnmanClient *client, gboolean status) - { - ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); -- DBusGProxy *proxy; -+ GValue value = { 0 }; - - DBG("client %p", client); - -- if (device == NULL) { -- gtk_tree_model_foreach(GTK_TREE_MODEL(priv->store), -- device_scan, NULL); -- return; -- } -- -- proxy = connman_dbus_get_proxy(priv->store, device); -- if (proxy == NULL) -- return; -- -- connman_propose_scan(proxy, NULL); -+ g_value_init(&value, G_TYPE_BOOLEAN); -+ g_value_set_boolean(&value, status); - -- g_object_unref(proxy); -+ connman_set_property(priv->manager, "OfflineMode", &value, NULL); - } - - static gboolean network_disconnect(GtkTreeModel *model, GtkTreePath *path, - GtkTreeIter *iter, gpointer user_data) - { - DBusGProxy *proxy; -- gboolean enabled; -+ char *name; -+ guint type; - - gtk_tree_model_get(model, iter, CONNMAN_COLUMN_PROXY, &proxy, -- CONNMAN_COLUMN_ENABLED, &enabled, -1); -+ CONNMAN_COLUMN_NAME, &name, -+ CONNMAN_COLUMN_TYPE, &type, -+ -1); - - if (proxy == NULL) -- return FALSE; -+ return TRUE; - - if (g_str_equal(dbus_g_proxy_get_interface(proxy), -- CONNMAN_NETWORK_INTERFACE) == FALSE) -- return FALSE; -+ CONNMAN_SERVICE_INTERFACE) == FALSE) -+ return TRUE; - -- if (enabled == TRUE) -+ if (type == CONNMAN_TYPE_WIFI) - connman_disconnect(proxy, NULL); - - g_object_unref(proxy); - -- return enabled; -+ return FALSE; - } - --void connman_client_connect(ConnmanClient *client, const gchar *network) -+gboolean connman_client_connect(ConnmanClient *client, const gchar *network) - { - ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); - DBusGProxy *proxy; -+ gboolean ret = FALSE; - - DBG("client %p", client); -+ DBG("network %s", network); - - if (network == NULL) -- return; -+ goto done; - - gtk_tree_model_foreach(GTK_TREE_MODEL(priv->store), - network_disconnect, NULL); - - proxy = connman_dbus_get_proxy(priv->store, network); - if (proxy == NULL) -- return; -+ goto done; - -- connman_connect(proxy, NULL); -+ ret = connman_connect(proxy, NULL); - - g_object_unref(proxy); -+ -+done: -+ return ret; -+} -+ -+void connman_client_connect_async(ConnmanClient *client, const gchar *network, -+ connman_connect_reply callback, gpointer userdata) -+{ -+ ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); -+ DBusGProxy *proxy; -+ -+ DBG("client %p", client); -+ DBG("network %s", network); -+ -+ if (network == NULL) -+ goto done; -+ -+ gtk_tree_model_foreach(GTK_TREE_MODEL(priv->store), -+ network_disconnect, NULL); -+ -+ proxy = connman_dbus_get_proxy(priv->store, network); -+ if (proxy == NULL) -+ goto done; -+ -+ connman_connect_async(proxy, callback, userdata); -+ -+done: -+ return; - } - - static void connman_client_disconnect_all(ConnmanClient *client) -@@ -487,32 +536,37 @@ static void connman_client_disconnect_all(ConnmanClient *client) - network_disconnect, NULL); - } - --void connman_client_disconnect(ConnmanClient *client, const gchar *network) -+gboolean connman_client_disconnect(ConnmanClient *client, const gchar *network) - { - ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); - DBusGProxy *proxy; -+ gboolean ret = FALSE; - - DBG("client %p", client); - - if (network == NULL) { -+ ret = TRUE; - connman_client_disconnect_all(client); -- return; -+ goto done; - } - - proxy = connman_dbus_get_proxy(priv->store, network); - if (proxy == NULL) -- return; -+ goto done; - -- connman_disconnect(proxy, NULL); -+ ret = connman_disconnect(proxy, NULL); - - g_object_unref(proxy); -+ -+done: -+ return ret; - } - --guint connman_client_get_security(ConnmanClient *client, const gchar *network) -+gchar *connman_client_get_security(ConnmanClient *client, const gchar *network) - { - ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); - GtkTreeIter iter; -- guint security; -+ gchar *security; - - DBG("client %p", client); - -@@ -548,41 +602,60 @@ gchar *connman_client_get_passphrase(ConnmanClient *client, const gchar *network - return passphrase; - } - --void connman_client_set_passphrase(ConnmanClient *client, const gchar *network, -+gboolean connman_client_set_passphrase(ConnmanClient *client, const gchar *network, - const gchar *passphrase) - { - ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); - DBusGProxy *proxy; - GValue value = { 0 }; -+ gboolean ret = FALSE; - - DBG("client %p", client); -+ DBG("network %p", network); - - if (network == NULL) -- return; -+ goto done; - - proxy = connman_dbus_get_proxy(priv->store, network); - if (proxy == NULL) -- return; -+ goto done; - - g_value_init(&value, G_TYPE_STRING); - g_value_set_string(&value, passphrase); - -- connman_set_property(proxy, "WiFi.Passphrase", &value, NULL); -+ ret = connman_set_property(proxy, "Passphrase", &value, NULL); - - g_value_unset(&value); - - g_object_unref(proxy); -+done: -+ return ret; - } - --void connman_client_set_remember(ConnmanClient *client, const gchar *network, -- gboolean remember) -+void connman_client_set_callback(ConnmanClient *client, -+ ConnmanClientCallback callback, gpointer user_data) - { - ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); -- DBusGProxy *proxy; -- GValue value = { 0 }; -+ gchar *state; - - 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, priv->userdata); -+} -+ -+void connman_client_remove(ConnmanClient *client, const gchar *network) -+{ -+ ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); -+ DBusGProxy *proxy; -+ - if (network == NULL) - return; - -@@ -590,31 +663,46 @@ void connman_client_set_remember(ConnmanClient *client, const gchar *network, - if (proxy == NULL) - return; - -- g_value_init(&value, G_TYPE_BOOLEAN); -- g_value_set_boolean(&value, remember); -+ connman_remove(proxy, NULL); -+ -+ g_object_unref(proxy); -+} -+ -+void connman_client_enable_technology(ConnmanClient *client, const char *network, -+ const gchar *technology) -+{ -+ ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); -+ DBusGProxy *proxy; -+ int ret; - -- connman_set_property(proxy, "Remember", &value, NULL); -+ if (network== NULL) -+ return; - -- g_value_unset(&value); -+ proxy = connman_dbus_get_proxy(priv->store, network); -+ if (proxy == NULL) -+ return; -+ -+ ret = connman_enable_technology(proxy, technology, NULL); - - g_object_unref(proxy); - } - --void connman_client_set_callback(ConnmanClient *client, -- ConnmanClientCallback callback, gpointer user_data) -+void connman_client_disable_technology(ConnmanClient *client, const char *network, -+ const gchar *technology) - { - ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); -- gchar *state; -+ DBusGProxy *proxy; -+ int ret; - -- DBG("client %p", client); - -- priv->callback = callback; -- priv->userdata = user_data; -+ if (network == NULL) -+ return; - -- g_object_set_data(G_OBJECT(priv->store), "callback", callback); -- g_object_set_data(G_OBJECT(priv->store), "userdata", user_data); -+ proxy = connman_dbus_get_proxy(priv->store, network); -+ if (proxy == NULL) -+ return; - -- state = g_object_get_data(G_OBJECT(priv->store), "State"); -- if (state != NULL && priv->callback != NULL) -- priv->callback(state, priv->userdata); -+ ret = connman_disable_technology(proxy, technology, NULL); -+ -+ g_object_unref(proxy); - } -diff --git a/common/connman-client.h b/common/connman-client.h -index f30dae4..00c328a 100644 ---- a/common/connman-client.h -+++ b/common/connman-client.h -@@ -23,6 +23,7 @@ - #define __CONNMAN_CLIENT_H - - #include <gtk/gtk.h> -+#include "connman-dbus-glue.h" - - G_BEGIN_DECLS - -@@ -49,6 +50,13 @@ struct _ConnmanClientClass { - GObjectClass parent_class; - }; - -+struct ipv4_config { -+ const gchar *method; -+ const gchar *address; -+ const gchar *netmask; -+ const gchar *gateway; -+}; -+ - GType connman_client_get_type(void); - - ConnmanClient *connman_client_new(void); -@@ -60,18 +68,20 @@ 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); - --void connman_client_connect(ConnmanClient *client, const gchar *network); --void connman_client_disconnect(ConnmanClient *client, const gchar *network); -+gboolean connman_client_connect(ConnmanClient *client, const gchar *network); -+ -+void connman_client_connect_async(ConnmanClient *client, const gchar *network, -+ connman_connect_reply callback, gpointer userdata); - --guint connman_client_get_security(ConnmanClient *client, const gchar *network); -+gboolean connman_client_disconnect(ConnmanClient *client, const gchar *network); -+ -+gchar *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, -+gboolean connman_client_set_passphrase(ConnmanClient *client, const gchar *network, - const gchar *passphrase); - void connman_client_set_remember(ConnmanClient *client, const gchar *network, - gboolean remember); -@@ -81,37 +91,63 @@ typedef void (* ConnmanClientCallback) (const char *status, void *user_data); - void connman_client_set_callback(ConnmanClient *client, - ConnmanClientCallback callback, gpointer user_data); - -+gboolean connman_client_set_ipv4(ConnmanClient *client, const gchar *device, -+ struct ipv4_config *ipv4_config); -+ -+gboolean connman_dbus_get_iter(GtkTreeStore *store, const gchar *path, -+ GtkTreeIter *iter); -+void connman_client_remove(ConnmanClient *client, const gchar *network); -+ -+void connman_client_request_scan(ConnmanClient *client, char *scantype, -+ connman_request_scan_reply callback, gpointer userdata); -+gboolean connman_client_get_offline_status(ConnmanClient *client); -+void connman_client_set_offlinemode(ConnmanClient *client, gboolean status); -+ -+void connman_client_enable_technology(ConnmanClient *client, const char *network, -+ const gchar *technology); -+void connman_client_disable_technology(ConnmanClient *client, const char *network, -+ const gchar *technology); - enum { - CONNMAN_COLUMN_PROXY, /* G_TYPE_OBJECT */ -+ CONNMAN_COLUMN_STATE, /* G_TYPE_STRING */ - CONNMAN_COLUMN_NAME, /* G_TYPE_STRING */ -- CONNMAN_COLUMN_ICON, /* G_TYPE_STRING */ - CONNMAN_COLUMN_TYPE, /* G_TYPE_UINT */ -- CONNMAN_COLUMN_ENABLED, /* G_TYPE_BOOLEAN */ -- CONNMAN_COLUMN_INRANGE, /* G_TYPE_BOOLEAN */ -- CONNMAN_COLUMN_REMEMBER, /* G_TYPE_BOOLEAN */ -+ CONNMAN_COLUMN_ICON, /* G_TYPE_STRING */ - CONNMAN_COLUMN_STRENGTH, /* G_TYPE_UINT */ -- CONNMAN_COLUMN_SECURITY, /* G_TYPE_UINT */ -+ CONNMAN_COLUMN_SECURITY, /* G_TYPE_STRING */ - CONNMAN_COLUMN_PASSPHRASE, /* G_TYPE_STRING */ -- CONNMAN_COLUMN_NETWORK, -- CONNMAN_COLUMN_ADDRESS, -- CONNMAN_COLUMN_POLICY, -- CONNMAN_COLUMN_DEVICE, -- _CONNMAN_NUM_COLUMNS -+ -+ CONNMAN_COLUMN_METHOD, /* G_TYPE_STRING */ -+ CONNMAN_COLUMN_ADDRESS, /* G_TYPE_STRING */ -+ CONNMAN_COLUMN_NETMASK, /* G_TYPE_STRING */ -+ CONNMAN_COLUMN_GATEWAY, /* G_TYPE_STRING */ -+ -+ CONNMAN_COLUMN_ETHERNET_ENABLED, /* G_TYPE_BOOLEAN */ -+ CONNMAN_COLUMN_WIFI_ENABLED, /* G_TYPE_BOOLEAN */ -+ -+ CONNMAN_COLUMN_OFFLINEMODE, /* G_TYPE_BOOLEAN */ -+ -+ _CONNMAN_NUM_COLUMNS, -+ - }; - - enum { - CONNMAN_TYPE_UNKNOWN, -+ - CONNMAN_TYPE_ETHERNET, - CONNMAN_TYPE_WIFI |
