diff options
author | Dongxiao Xu <dongxiao.xu@intel.com> | 2010-09-10 16:49:14 +0800 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2010-09-10 11:52:50 +0100 |
commit | 30c2b0bb84f215b2aed43d774120c70712b59729 (patch) | |
tree | baccf810252efbc3feb7f938d57c3bb6bae03a95 /meta/recipes-connectivity/connman | |
parent | 566de26cf56d6aaea017315cb927d42ed00b3c96 (diff) | |
download | poky-30c2b0bb84f215b2aed43d774120c70712b59729.tar.gz |
connman-gnome: Add some functionality.
Add offline mode.
Add ethernet/wifi enable/disable functionality.
Classify each service (ethernet, wifi) into certain group.
Do some code clean up.
Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
Diffstat (limited to 'meta/recipes-connectivity/connman')
-rw-r--r-- | meta/recipes-connectivity/connman/connman-gnome/connman-gnome.patch | 1716 | ||||
-rw-r--r-- | meta/recipes-connectivity/connman/connman-gnome_0.5.bb | 2 |
2 files changed, 1134 insertions, 584 deletions
diff --git a/meta/recipes-connectivity/connman/connman-gnome/connman-gnome.patch b/meta/recipes-connectivity/connman/connman-gnome/connman-gnome.patch index 52b105e477..2fe8bb80fb 100644 --- a/meta/recipes-connectivity/connman/connman-gnome/connman-gnome.patch +++ b/meta/recipes-connectivity/connman/connman-gnome/connman-gnome.patch | |||
@@ -12,13 +12,23 @@ end user. | |||
12 | Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com> | 12 | Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com> |
13 | 13 | ||
14 | diff --git a/applet/main.c b/applet/main.c | 14 | diff --git a/applet/main.c b/applet/main.c |
15 | index 2a9b36e..1243a41 100644 | 15 | index 2a9b36e..08d394c 100644 |
16 | --- a/applet/main.c | 16 | --- a/applet/main.c |
17 | +++ b/applet/main.c | 17 | +++ b/applet/main.c |
18 | @@ -108,138 +108,8 @@ static void toggled_callback(GtkWidget *button, gpointer user_data) | 18 | @@ -98,279 +98,21 @@ static void settings_callback(GtkWidget *item, gpointer user_data) |
19 | gtk_entry_set_visibility(GTK_ENTRY(entry), mode); | 19 | g_printerr("Couldn't execute command: %s\n", command); |
20 | } | 20 | } |
21 | 21 | ||
22 | -static void toggled_callback(GtkWidget *button, gpointer user_data) | ||
23 | -{ | ||
24 | - GtkWidget *entry = user_data; | ||
25 | - gboolean mode; | ||
26 | - | ||
27 | - mode = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)); | ||
28 | - | ||
29 | - gtk_entry_set_visibility(GTK_ENTRY(entry), mode); | ||
30 | -} | ||
31 | - | ||
22 | -static void passphrase_dialog(const char *path, const char *name) | 32 | -static void passphrase_dialog(const char *path, const char *name) |
23 | -{ | 33 | -{ |
24 | - GtkWidget *dialog; | 34 | - GtkWidget *dialog; |
@@ -149,25 +159,49 @@ index 2a9b36e..1243a41 100644 | |||
149 | - return menu; | 159 | - return menu; |
150 | -} | 160 | -} |
151 | - | 161 | - |
152 | static GtkWidget *append_menuitem(GtkMenu *menu, const char *ssid, | 162 | -static GtkWidget *append_menuitem(GtkMenu *menu, const char *ssid, |
153 | - guint security, guint strength) | 163 | - guint security, guint strength) |
154 | + gchar *security, guint strength) | 164 | -{ |
155 | { | 165 | - GtkWidget *item; |
156 | GtkWidget *item; | 166 | - GtkWidget *hbox; |
157 | GtkWidget *hbox; | 167 | - GtkWidget *label; |
158 | @@ -263,7 +133,7 @@ static GtkWidget *append_menuitem(GtkMenu *menu, const char *ssid, | 168 | - GtkWidget *image; |
159 | image = gtk_image_new_from_stock(GTK_STOCK_DIALOG_AUTHENTICATION, | 169 | - GtkWidget *progress; |
160 | GTK_ICON_SIZE_MENU); | 170 | - |
161 | gtk_misc_set_alignment(GTK_MISC(image), 1.0, 0.5); | 171 | - item = gtk_check_menu_item_new(); |
172 | - gtk_check_menu_item_set_draw_as_radio(GTK_CHECK_MENU_ITEM(item), TRUE); | ||
173 | - | ||
174 | - hbox = gtk_hbox_new(FALSE, 6); | ||
175 | - gtk_container_add(GTK_CONTAINER(item), hbox); | ||
176 | - gtk_widget_show(hbox); | ||
177 | - | ||
178 | - label = gtk_label_new(NULL); | ||
179 | - gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); | ||
180 | - gtk_label_set_text(GTK_LABEL(label), ssid); | ||
181 | - gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); | ||
182 | - gtk_widget_show(label); | ||
183 | - | ||
184 | - image = gtk_image_new_from_stock(GTK_STOCK_DIALOG_AUTHENTICATION, | ||
185 | - GTK_ICON_SIZE_MENU); | ||
186 | - gtk_misc_set_alignment(GTK_MISC(image), 1.0, 0.5); | ||
162 | - if (security != CONNMAN_SECURITY_NONE) { | 187 | - if (security != CONNMAN_SECURITY_NONE) { |
163 | + if (security && g_str_equal(security, "none") != TRUE) { | 188 | - gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0); |
164 | gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0); | 189 | - gtk_widget_show(image); |
165 | gtk_widget_show(image); | 190 | - } |
166 | } | 191 | - |
167 | @@ -281,96 +151,21 @@ static GtkWidget *append_menuitem(GtkMenu *menu, const char *ssid, | 192 | - progress = gtk_progress_bar_new(); |
168 | return item; | 193 | - gtk_widget_set_size_request(progress, 100, -1); |
169 | } | 194 | - gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress), |
170 | 195 | - (double) strength / 100); | |
196 | - gtk_box_pack_end(GTK_BOX(hbox), progress, FALSE, TRUE, 0); | ||
197 | - gtk_widget_show(progress); | ||
198 | - | ||
199 | - gtk_widget_show(item); | ||
200 | - gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); | ||
201 | - | ||
202 | - return item; | ||
203 | -} | ||
204 | - | ||
171 | -static void enumerate_networks(GtkMenu *menu, | 205 | -static void enumerate_networks(GtkMenu *menu, |
172 | - GtkTreeModel *model, GtkTreeIter *parent) | 206 | - GtkTreeModel *model, GtkTreeIter *parent) |
173 | -{ | 207 | -{ |
@@ -265,7 +299,7 @@ index 2a9b36e..1243a41 100644 | |||
265 | gtk_widget_show(item); | 299 | gtk_widget_show(item); |
266 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); | 300 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); |
267 | 301 | ||
268 | @@ -387,16 +182,17 @@ static void update_status(GtkTreeModel *model) | 302 | @@ -387,16 +129,17 @@ static void update_status(GtkTreeModel *model) |
269 | cont = gtk_tree_model_get_iter_first(model, &iter); | 303 | cont = gtk_tree_model_get_iter_first(model, &iter); |
270 | 304 | ||
271 | while (cont == TRUE) { | 305 | while (cont == TRUE) { |
@@ -286,7 +320,7 @@ index 2a9b36e..1243a41 100644 | |||
286 | break; | 320 | break; |
287 | 321 | ||
288 | cont = gtk_tree_model_iter_next(model, &iter); | 322 | cont = gtk_tree_model_iter_next(model, &iter); |
289 | @@ -453,7 +249,7 @@ int main(int argc, char *argv[]) | 323 | @@ -453,7 +196,7 @@ int main(int argc, char *argv[]) |
290 | 324 | ||
291 | g_set_application_name(_("Connection Manager")); | 325 | g_set_application_name(_("Connection Manager")); |
292 | 326 | ||
@@ -393,10 +427,10 @@ index ff3a996..8d74a46 100644 | |||
393 | connman-dbus-glue.h \ | 427 | connman-dbus-glue.h \ |
394 | instance-glue.h | 428 | instance-glue.h |
395 | diff --git a/common/connman-client.c b/common/connman-client.c | 429 | diff --git a/common/connman-client.c b/common/connman-client.c |
396 | index aad0a22..96f9388 100644 | 430 | index aad0a22..4f9cf64 100644 |
397 | --- a/common/connman-client.c | 431 | --- a/common/connman-client.c |
398 | +++ b/common/connman-client.c | 432 | +++ b/common/connman-client.c |
399 | @@ -98,10 +98,9 @@ static void connman_client_init(ConnmanClient *client) | 433 | @@ -98,13 +98,13 @@ static void connman_client_init(ConnmanClient *client) |
400 | 434 | ||
401 | priv->store = gtk_tree_store_new(_CONNMAN_NUM_COLUMNS, G_TYPE_OBJECT, | 435 | priv->store = gtk_tree_store_new(_CONNMAN_NUM_COLUMNS, G_TYPE_OBJECT, |
402 | G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT, | 436 | G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT, |
@@ -406,11 +440,33 @@ index aad0a22..96f9388 100644 | |||
406 | - G_TYPE_STRING); | 440 | - G_TYPE_STRING); |
407 | + G_TYPE_STRING, G_TYPE_UINT, G_TYPE_STRING, | 441 | + G_TYPE_STRING, G_TYPE_UINT, G_TYPE_STRING, |
408 | + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, | 442 | + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, |
409 | + G_TYPE_STRING, G_TYPE_STRING); | 443 | + G_TYPE_STRING, G_TYPE_STRING, |
444 | + G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN); | ||
410 | 445 | ||
411 | g_object_set_data(G_OBJECT(priv->store), | 446 | g_object_set_data(G_OBJECT(priv->store), |
412 | "State", g_strdup("unavailable")); | 447 | - "State", g_strdup("unavailable")); |
413 | @@ -197,7 +196,7 @@ static gboolean device_filter(GtkTreeModel *model, | 448 | + "State", g_strdup("unavailable")); |
449 | |||
450 | priv->dbus = dbus_g_proxy_new_for_name(connection, DBUS_SERVICE_DBUS, | ||
451 | DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS); | ||
452 | @@ -191,13 +191,23 @@ static gboolean device_filter(GtkTreeModel *model, | ||
453 | { | ||
454 | DBusGProxy *proxy; | ||
455 | gboolean active; | ||
456 | + guint type; | ||
457 | |||
458 | - gtk_tree_model_get(model, iter, CONNMAN_COLUMN_PROXY, &proxy, -1); | ||
459 | + gtk_tree_model_get(model, iter, CONNMAN_COLUMN_PROXY, &proxy, | ||
460 | + CONNMAN_COLUMN_TYPE, &type, | ||
461 | + -1); | ||
462 | + | ||
463 | + switch (type) { | ||
464 | + case CONNMAN_TYPE_LABEL_ETHERNET: | ||
465 | + case CONNMAN_TYPE_LABEL_WIFI: | ||
466 | + case CONNMAN_TYPE_SYSCONFIG: | ||
467 | + return TRUE; | ||
468 | + } | ||
469 | |||
414 | if (proxy == NULL) | 470 | if (proxy == NULL) |
415 | return FALSE; | 471 | return FALSE; |
416 | 472 | ||
@@ -419,7 +475,7 @@ index aad0a22..96f9388 100644 | |||
419 | dbus_g_proxy_get_interface(proxy)); | 475 | dbus_g_proxy_get_interface(proxy)); |
420 | 476 | ||
421 | g_object_unref(proxy); | 477 | g_object_unref(proxy); |
422 | @@ -231,10 +230,10 @@ static gboolean device_network_filter(GtkTreeModel *model, | 478 | @@ -231,10 +241,10 @@ static gboolean device_network_filter(GtkTreeModel *model, |
423 | if (proxy == NULL) | 479 | if (proxy == NULL) |
424 | return FALSE; | 480 | return FALSE; |
425 | 481 | ||
@@ -432,7 +488,7 @@ index aad0a22..96f9388 100644 | |||
432 | dbus_g_proxy_get_interface(proxy)); | 488 | dbus_g_proxy_get_interface(proxy)); |
433 | 489 | ||
434 | g_object_unref(proxy); | 490 | g_object_unref(proxy); |
435 | @@ -277,7 +276,7 @@ GtkTreeModel *connman_client_get_network_model(ConnmanClient *client, | 491 | @@ -277,7 +287,7 @@ GtkTreeModel *connman_client_get_network_model(ConnmanClient *client, |
436 | gtk_tree_model_get(GTK_TREE_MODEL(priv->store), &iter, | 492 | gtk_tree_model_get(GTK_TREE_MODEL(priv->store), &iter, |
437 | CONNMAN_COLUMN_PROXY, &proxy, -1); | 493 | CONNMAN_COLUMN_PROXY, &proxy, -1); |
438 | 494 | ||
@@ -441,7 +497,7 @@ index aad0a22..96f9388 100644 | |||
441 | dbus_g_proxy_get_interface(proxy)) == TRUE) | 497 | dbus_g_proxy_get_interface(proxy)) == TRUE) |
442 | found = g_str_has_prefix(dbus_g_proxy_get_path(proxy), | 498 | found = g_str_has_prefix(dbus_g_proxy_get_path(proxy), |
443 | device); | 499 | device); |
444 | @@ -314,7 +313,7 @@ static gboolean connection_filter(GtkTreeModel *model, | 500 | @@ -314,7 +324,7 @@ static gboolean connection_filter(GtkTreeModel *model, |
445 | if (proxy == NULL) | 501 | if (proxy == NULL) |
446 | return FALSE; | 502 | return FALSE; |
447 | 503 | ||
@@ -450,13 +506,13 @@ index aad0a22..96f9388 100644 | |||
450 | dbus_g_proxy_get_interface(proxy)); | 506 | dbus_g_proxy_get_interface(proxy)); |
451 | 507 | ||
452 | g_object_unref(proxy); | 508 | g_object_unref(proxy); |
453 | @@ -337,12 +336,19 @@ GtkTreeModel *connman_client_get_connection_model(ConnmanClient *client) | 509 | @@ -337,28 +347,37 @@ GtkTreeModel *connman_client_get_connection_model(ConnmanClient *client) |
454 | return model; | 510 | return model; |
455 | } | 511 | } |
456 | 512 | ||
457 | -void connman_client_set_policy(ConnmanClient *client, const gchar *device, | 513 | -void connman_client_set_policy(ConnmanClient *client, const gchar *device, |
458 | - const gchar *policy) | 514 | - const gchar *policy) |
459 | +void connman_client_set_ipv4(ConnmanClient *client, const gchar *device, | 515 | +gboolean connman_client_set_ipv4(ConnmanClient *client, const gchar *device, |
460 | + struct ipv4_config *ipv4_config) | 516 | + struct ipv4_config *ipv4_config) |
461 | { | 517 | { |
462 | ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); | 518 | ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); |
@@ -472,9 +528,14 @@ index aad0a22..96f9388 100644 | |||
472 | 528 | ||
473 | DBG("client %p", client); | 529 | DBG("client %p", client); |
474 | 530 | ||
475 | @@ -353,10 +359,10 @@ void connman_client_set_policy(ConnmanClient *client, const gchar *device, | 531 | if (device == NULL) |
532 | - return; | ||
533 | + return FALSE; | ||
534 | |||
535 | proxy = connman_dbus_get_proxy(priv->store, device); | ||
476 | if (proxy == NULL) | 536 | if (proxy == NULL) |
477 | return; | 537 | - return; |
538 | + return FALSE; | ||
478 | 539 | ||
479 | - g_value_init(&value, G_TYPE_STRING); | 540 | - g_value_init(&value, G_TYPE_STRING); |
480 | - g_value_set_string(&value, policy); | 541 | - g_value_set_string(&value, policy); |
@@ -485,43 +546,96 @@ index aad0a22..96f9388 100644 | |||
485 | + ret = connman_set_property(proxy, "IPv4.Configuration", &value, NULL); | 546 | + ret = connman_set_property(proxy, "IPv4.Configuration", &value, NULL); |
486 | 547 | ||
487 | g_object_unref(proxy); | 548 | g_object_unref(proxy); |
549 | + | ||
550 | + return ret; | ||
488 | } | 551 | } |
489 | @@ -389,26 +395,22 @@ static gboolean device_scan(GtkTreeModel *model, GtkTreePath *path, | 552 | |
490 | GtkTreeIter *iter, gpointer user_data) | 553 | void connman_client_set_powered(ConnmanClient *client, const gchar *device, |
554 | @@ -385,98 +404,128 @@ void connman_client_set_powered(ConnmanClient *client, const gchar *device, | ||
555 | g_object_unref(proxy); | ||
556 | } | ||
557 | |||
558 | -static gboolean device_scan(GtkTreeModel *model, GtkTreePath *path, | ||
559 | - GtkTreeIter *iter, gpointer user_data) | ||
560 | +void connman_client_request_scan(ConnmanClient *client, char *scantype, | ||
561 | + connman_request_scan_reply callback, gpointer userdata) | ||
491 | { | 562 | { |
492 | DBusGProxy *proxy; | 563 | - DBusGProxy *proxy; |
493 | - gboolean enabled; | 564 | - gboolean enabled; |
565 | + ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); | ||
494 | 566 | ||
495 | gtk_tree_model_get(model, iter, CONNMAN_COLUMN_PROXY, &proxy, | 567 | - gtk_tree_model_get(model, iter, CONNMAN_COLUMN_PROXY, &proxy, |
496 | - CONNMAN_COLUMN_ENABLED, &enabled, -1); | 568 | - CONNMAN_COLUMN_ENABLED, &enabled, -1); |
497 | + -1); | 569 | + DBG("client %p", client); |
498 | 570 | ||
499 | if (proxy == NULL) | 571 | - if (proxy == NULL) |
500 | return FALSE; | 572 | - return FALSE; |
573 | + connman_request_scan_async(priv->manager, scantype, callback, userdata); | ||
574 | +} | ||
501 | 575 | ||
502 | if (g_str_equal(dbus_g_proxy_get_interface(proxy), | 576 | - if (g_str_equal(dbus_g_proxy_get_interface(proxy), |
503 | - CONNMAN_DEVICE_INTERFACE) == FALSE) | 577 | - CONNMAN_DEVICE_INTERFACE) == FALSE) |
504 | - return FALSE; | 578 | - return FALSE; |
505 | - | 579 | +gboolean connman_client_get_offline_status(ConnmanClient *client) |
580 | +{ | ||
581 | + GHashTable *hash; | ||
582 | + GValue *value; | ||
583 | + ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); | ||
584 | + gboolean ret; | ||
585 | |||
506 | - if (enabled == FALSE) | 586 | - if (enabled == FALSE) |
507 | + CONNMAN_SERVICE_INTERFACE) == FALSE) | 587 | - return FALSE; |
508 | return FALSE; | 588 | + DBG("client %p", client); |
509 | 589 | ||
510 | connman_propose_scan(proxy, NULL); | 590 | - connman_propose_scan(proxy, NULL); |
591 | + ret = connman_get_properties(priv->manager, &hash, NULL); | ||
511 | 592 | ||
512 | g_object_unref(proxy); | 593 | - g_object_unref(proxy); |
594 | + if (ret == FALSE) | ||
595 | + goto done; | ||
596 | + | ||
597 | + value = g_hash_table_lookup(hash, "OfflineMode"); | ||
598 | + ret = value ? g_value_get_boolean(value) : FALSE; | ||
599 | + | ||
600 | +done: | ||
601 | + return ret; | ||
513 | 602 | ||
514 | - return FALSE; | 603 | - return FALSE; |
515 | + return TRUE; | ||
516 | } | 604 | } |
517 | 605 | ||
518 | void connman_client_propose_scan(ConnmanClient *client, const gchar *device) | 606 | -void connman_client_propose_scan(ConnmanClient *client, const gchar *device) |
519 | @@ -437,46 +439,85 @@ static gboolean network_disconnect(GtkTreeModel *model, GtkTreePath *path, | 607 | +void connman_client_set_offlinemode(ConnmanClient *client, gboolean status) |
608 | { | ||
609 | ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); | ||
610 | - DBusGProxy *proxy; | ||
611 | + GValue value = { 0 }; | ||
612 | |||
613 | DBG("client %p", client); | ||
614 | |||
615 | - if (device == NULL) { | ||
616 | - gtk_tree_model_foreach(GTK_TREE_MODEL(priv->store), | ||
617 | - device_scan, NULL); | ||
618 | - return; | ||
619 | - } | ||
620 | - | ||
621 | - proxy = connman_dbus_get_proxy(priv->store, device); | ||
622 | - if (proxy == NULL) | ||
623 | - return; | ||
624 | - | ||
625 | - connman_propose_scan(proxy, NULL); | ||
626 | + g_value_init(&value, G_TYPE_BOOLEAN); | ||
627 | + g_value_set_boolean(&value, status); | ||
628 | |||
629 | - g_object_unref(proxy); | ||
630 | + connman_set_property(priv->manager, "OfflineMode", &value, NULL); | ||
631 | } | ||
632 | |||
633 | static gboolean network_disconnect(GtkTreeModel *model, GtkTreePath *path, | ||
520 | GtkTreeIter *iter, gpointer user_data) | 634 | GtkTreeIter *iter, gpointer user_data) |
521 | { | 635 | { |
522 | DBusGProxy *proxy; | 636 | DBusGProxy *proxy; |
523 | - gboolean enabled; | 637 | - gboolean enabled; |
524 | + gchar *name; | 638 | + char *name; |
525 | + guint type; | 639 | + guint type; |
526 | 640 | ||
527 | gtk_tree_model_get(model, iter, CONNMAN_COLUMN_PROXY, &proxy, | 641 | gtk_tree_model_get(model, iter, CONNMAN_COLUMN_PROXY, &proxy, |
@@ -600,20 +714,14 @@ index aad0a22..96f9388 100644 | |||
600 | + if (proxy == NULL) | 714 | + if (proxy == NULL) |
601 | + goto done; | 715 | + goto done; |
602 | + | 716 | + |
603 | + /* Set an unusually long timeout because the Connect | ||
604 | + * method doesn't return until there has been either | ||
605 | + * success or an error. | ||
606 | + */ | ||
607 | + dbus_g_proxy_set_default_timeout(proxy, 120000); | ||
608 | + connman_connect_async(proxy, callback, userdata); | 717 | + connman_connect_async(proxy, callback, userdata); |
609 | + dbus_g_proxy_set_default_timeout(proxy, -1); | ||
610 | + | 718 | + |
611 | +done: | 719 | +done: |
612 | + return; | 720 | + return; |
613 | } | 721 | } |
614 | 722 | ||
615 | static void connman_client_disconnect_all(ConnmanClient *client) | 723 | static void connman_client_disconnect_all(ConnmanClient *client) |
616 | @@ -487,32 +528,37 @@ static void connman_client_disconnect_all(ConnmanClient *client) | 724 | @@ -487,32 +536,37 @@ static void connman_client_disconnect_all(ConnmanClient *client) |
617 | network_disconnect, NULL); | 725 | network_disconnect, NULL); |
618 | } | 726 | } |
619 | 727 | ||
@@ -657,7 +765,7 @@ index aad0a22..96f9388 100644 | |||
657 | 765 | ||
658 | DBG("client %p", client); | 766 | DBG("client %p", client); |
659 | 767 | ||
660 | @@ -548,56 +594,37 @@ gchar *connman_client_get_passphrase(ConnmanClient *client, const gchar *network | 768 | @@ -548,41 +602,60 @@ gchar *connman_client_get_passphrase(ConnmanClient *client, const gchar *network |
661 | return passphrase; | 769 | return passphrase; |
662 | } | 770 | } |
663 | 771 | ||
@@ -682,51 +790,114 @@ index aad0a22..96f9388 100644 | |||
682 | - return; | 790 | - return; |
683 | + goto done; | 791 | + goto done; |
684 | 792 | ||
685 | + DBG("passphrase %s", passphrase); | ||
686 | g_value_init(&value, G_TYPE_STRING); | 793 | g_value_init(&value, G_TYPE_STRING); |
687 | g_value_set_string(&value, passphrase); | 794 | g_value_set_string(&value, passphrase); |
688 | 795 | ||
689 | - connman_set_property(proxy, "WiFi.Passphrase", &value, NULL); | 796 | - connman_set_property(proxy, "WiFi.Passphrase", &value, NULL); |
690 | - | 797 | + ret = connman_set_property(proxy, "Passphrase", &value, NULL); |
691 | - g_value_unset(&value); | 798 | |
692 | - | 799 | g_value_unset(&value); |
693 | - g_object_unref(proxy); | 800 | |
694 | -} | 801 | g_object_unref(proxy); |
695 | - | 802 | +done: |
803 | + return ret; | ||
804 | } | ||
805 | |||
696 | -void connman_client_set_remember(ConnmanClient *client, const gchar *network, | 806 | -void connman_client_set_remember(ConnmanClient *client, const gchar *network, |
697 | - gboolean remember) | 807 | - gboolean remember) |
698 | -{ | 808 | +void connman_client_set_callback(ConnmanClient *client, |
699 | - ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); | 809 | + ConnmanClientCallback callback, gpointer user_data) |
810 | { | ||
811 | ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); | ||
700 | - DBusGProxy *proxy; | 812 | - DBusGProxy *proxy; |
701 | - GValue value = { 0 }; | 813 | - GValue value = { 0 }; |
702 | - | 814 | + gchar *state; |
703 | - DBG("client %p", client); | 815 | |
704 | - | 816 | DBG("client %p", client); |
705 | - if (network == NULL) | 817 | |
706 | - return; | 818 | + priv->callback = callback; |
707 | - | 819 | + priv->userdata = user_data; |
708 | - proxy = connman_dbus_get_proxy(priv->store, network); | 820 | + |
709 | - if (proxy == NULL) | 821 | + g_object_set_data(G_OBJECT(priv->store), "callback", callback); |
710 | - return; | 822 | + g_object_set_data(G_OBJECT(priv->store), "userdata", user_data); |
711 | - | 823 | + |
824 | + state = g_object_get_data(G_OBJECT(priv->store), "State"); | ||
825 | + if (state != NULL && priv->callback != NULL) | ||
826 | + priv->callback(state, priv->userdata); | ||
827 | +} | ||
828 | + | ||
829 | +void connman_client_remove(ConnmanClient *client, const gchar *network) | ||
830 | +{ | ||
831 | + ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); | ||
832 | + DBusGProxy *proxy; | ||
833 | + | ||
834 | if (network == NULL) | ||
835 | return; | ||
836 | |||
837 | @@ -590,31 +663,46 @@ void connman_client_set_remember(ConnmanClient *client, const gchar *network, | ||
838 | if (proxy == NULL) | ||
839 | return; | ||
840 | |||
712 | - g_value_init(&value, G_TYPE_BOOLEAN); | 841 | - g_value_init(&value, G_TYPE_BOOLEAN); |
713 | - g_value_set_boolean(&value, remember); | 842 | - g_value_set_boolean(&value, remember); |
714 | - | 843 | + connman_remove(proxy, NULL); |
844 | + | ||
845 | + g_object_unref(proxy); | ||
846 | +} | ||
847 | + | ||
848 | +void connman_client_enable_technology(ConnmanClient *client, const char *network, | ||
849 | + const gchar *technology) | ||
850 | +{ | ||
851 | + ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); | ||
852 | + DBusGProxy *proxy; | ||
853 | + int ret; | ||
854 | |||
715 | - connman_set_property(proxy, "Remember", &value, NULL); | 855 | - connman_set_property(proxy, "Remember", &value, NULL); |
716 | + ret = connman_set_property(proxy, "Passphrase", &value, NULL); | 856 | + if (network== NULL) |
717 | + DBG("passphrase setting succeeded? %d", ret); | 857 | + return; |
718 | + DBG("false is ? %d", FALSE); | ||
719 | 858 | ||
720 | g_value_unset(&value); | 859 | - g_value_unset(&value); |
860 | + proxy = connman_dbus_get_proxy(priv->store, network); | ||
861 | + if (proxy == NULL) | ||
862 | + return; | ||
863 | + | ||
864 | + ret = connman_enable_technology(proxy, technology, NULL); | ||
721 | 865 | ||
722 | g_object_unref(proxy); | 866 | g_object_unref(proxy); |
723 | +done: | ||
724 | + return ret; | ||
725 | } | 867 | } |
726 | 868 | ||
727 | void connman_client_set_callback(ConnmanClient *client, | 869 | -void connman_client_set_callback(ConnmanClient *client, |
870 | - ConnmanClientCallback callback, gpointer user_data) | ||
871 | +void connman_client_disable_technology(ConnmanClient *client, const char *network, | ||
872 | + const gchar *technology) | ||
873 | { | ||
874 | ConnmanClientPrivate *priv = CONNMAN_CLIENT_GET_PRIVATE(client); | ||
875 | - gchar *state; | ||
876 | + DBusGProxy *proxy; | ||
877 | + int ret; | ||
878 | |||
879 | - DBG("client %p", client); | ||
880 | |||
881 | - priv->callback = callback; | ||
882 | - priv->userdata = user_data; | ||
883 | + if (network == NULL) | ||
884 | + return; | ||
885 | |||
886 | - g_object_set_data(G_OBJECT(priv->store), "callback", callback); | ||
887 | - g_object_set_data(G_OBJECT(priv->store), "userdata", user_data); | ||
888 | + proxy = connman_dbus_get_proxy(priv->store, network); | ||
889 | + if (proxy == NULL) | ||
890 | + return; | ||
891 | |||
892 | - state = g_object_get_data(G_OBJECT(priv->store), "State"); | ||
893 | - if (state != NULL && priv->callback != NULL) | ||
894 | - priv->callback(state, priv->userdata); | ||
895 | + ret = connman_disable_technology(proxy, technology, NULL); | ||
896 | + | ||
897 | + g_object_unref(proxy); | ||
898 | } | ||
728 | diff --git a/common/connman-client.h b/common/connman-client.h | 899 | diff --git a/common/connman-client.h b/common/connman-client.h |
729 | index f30dae4..f3ac1d3 100644 | 900 | index f30dae4..00c328a 100644 |
730 | --- a/common/connman-client.h | 901 | --- a/common/connman-client.h |
731 | +++ b/common/connman-client.h | 902 | +++ b/common/connman-client.h |
732 | @@ -23,6 +23,7 @@ | 903 | @@ -23,6 +23,7 @@ |
@@ -778,15 +949,26 @@ index f30dae4..f3ac1d3 100644 | |||
778 | const gchar *passphrase); | 949 | const gchar *passphrase); |
779 | void connman_client_set_remember(ConnmanClient *client, const gchar *network, | 950 | void connman_client_set_remember(ConnmanClient *client, const gchar *network, |
780 | gboolean remember); | 951 | gboolean remember); |
781 | @@ -81,22 +91,27 @@ typedef void (* ConnmanClientCallback) (const char *status, void *user_data); | 952 | @@ -81,37 +91,63 @@ typedef void (* ConnmanClientCallback) (const char *status, void *user_data); |
782 | void connman_client_set_callback(ConnmanClient *client, | 953 | void connman_client_set_callback(ConnmanClient *client, |
783 | ConnmanClientCallback callback, gpointer user_data); | 954 | ConnmanClientCallback callback, gpointer user_data); |
784 | 955 | ||
785 | +void connman_client_set_ipv4(ConnmanClient *client, const gchar *device, | 956 | +gboolean connman_client_set_ipv4(ConnmanClient *client, const gchar *device, |
786 | + struct ipv4_config *ipv4_config); | 957 | + struct ipv4_config *ipv4_config); |
787 | + | 958 | + |
788 | +gboolean connman_dbus_get_iter(GtkTreeStore *store, const gchar *path, | 959 | +gboolean connman_dbus_get_iter(GtkTreeStore *store, const gchar *path, |
789 | + GtkTreeIter *iter); | 960 | + GtkTreeIter *iter); |
961 | +void connman_client_remove(ConnmanClient *client, const gchar *network); | ||
962 | + | ||
963 | +void connman_client_request_scan(ConnmanClient *client, char *scantype, | ||
964 | + connman_request_scan_reply callback, gpointer userdata); | ||
965 | +gboolean connman_client_get_offline_status(ConnmanClient *client); | ||
966 | +void connman_client_set_offlinemode(ConnmanClient *client, gboolean status); | ||
967 | + | ||
968 | +void connman_client_enable_technology(ConnmanClient *client, const char *network, | ||
969 | + const gchar *technology); | ||
970 | +void connman_client_disable_technology(ConnmanClient *client, const char *network, | ||
971 | + const gchar *technology); | ||
790 | enum { | 972 | enum { |
791 | CONNMAN_COLUMN_PROXY, /* G_TYPE_OBJECT */ | 973 | CONNMAN_COLUMN_PROXY, /* G_TYPE_OBJECT */ |
792 | + CONNMAN_COLUMN_STATE, /* G_TYPE_STRING */ | 974 | + CONNMAN_COLUMN_STATE, /* G_TYPE_STRING */ |
@@ -811,12 +993,29 @@ index f30dae4..f3ac1d3 100644 | |||
811 | + CONNMAN_COLUMN_ADDRESS, /* G_TYPE_STRING */ | 993 | + CONNMAN_COLUMN_ADDRESS, /* G_TYPE_STRING */ |
812 | + CONNMAN_COLUMN_NETMASK, /* G_TYPE_STRING */ | 994 | + CONNMAN_COLUMN_NETMASK, /* G_TYPE_STRING */ |
813 | + CONNMAN_COLUMN_GATEWAY, /* G_TYPE_STRING */ | 995 | + CONNMAN_COLUMN_GATEWAY, /* G_TYPE_STRING */ |
996 | + | ||
997 | + CONNMAN_COLUMN_ETHERNET_ENABLED, /* G_TYPE_BOOLEAN */ | ||
998 | + CONNMAN_COLUMN_WIFI_ENABLED, /* G_TYPE_BOOLEAN */ | ||
999 | + | ||
1000 | + CONNMAN_COLUMN_OFFLINEMODE, /* G_TYPE_BOOLEAN */ | ||
1001 | + | ||
814 | + _CONNMAN_NUM_COLUMNS, | 1002 | + _CONNMAN_NUM_COLUMNS, |
815 | + | 1003 | + |
816 | }; | 1004 | }; |
817 | 1005 | ||
818 | enum { | 1006 | enum { |
819 | @@ -108,10 +123,7 @@ enum { | 1007 | CONNMAN_TYPE_UNKNOWN, |
1008 | + | ||
1009 | CONNMAN_TYPE_ETHERNET, | ||
1010 | CONNMAN_TYPE_WIFI, | ||
1011 | CONNMAN_TYPE_WIMAX, | ||
1012 | CONNMAN_TYPE_BLUETOOTH, | ||
1013 | + | ||
1014 | + CONNMAN_TYPE_LABEL_ETHERNET, | ||
1015 | + CONNMAN_TYPE_LABEL_WIFI, | ||
1016 | + | ||
1017 | + CONNMAN_TYPE_SYSCONFIG, | ||
1018 | + _CONNMAN_NUM_TYPE, | ||
820 | }; | 1019 | }; |
821 | 1020 | ||
822 | enum { | 1021 | enum { |
@@ -829,25 +1028,38 @@ index f30dae4..f3ac1d3 100644 | |||
829 | }; | 1028 | }; |
830 | 1029 | ||
831 | diff --git a/common/connman-dbus.c b/common/connman-dbus.c | 1030 | diff --git a/common/connman-dbus.c b/common/connman-dbus.c |
832 | index 9eba7ae..83f4e57 100644 | 1031 | index 9eba7ae..bf1778f 100644 |
833 | --- a/common/connman-dbus.c | 1032 | --- a/common/connman-dbus.c |
834 | +++ b/common/connman-dbus.c | 1033 | +++ b/common/connman-dbus.c |
835 | @@ -159,20 +159,22 @@ static gint compare_path(gconstpointer a, gconstpointer b) | 1034 | @@ -137,6 +137,27 @@ DBusGProxy *connman_dbus_get_proxy(GtkTreeStore *store, const gchar *path) |
836 | return g_strcmp0(a, b); | 1035 | return proxy; |
837 | } | 1036 | } |
838 | 1037 | ||
839 | +static gint compare_list(gchar *path_a, gchar *path_b, gpointer user_data) | 1038 | +static gboolean compare_type(GtkTreeStore *store, GtkTreeIter *iter, |
1039 | + gconstpointer user_data) | ||
840 | +{ | 1040 | +{ |
841 | + return g_strcmp0(path_a, path_b); | 1041 | + guint type_target = GPOINTER_TO_UINT(user_data); |
1042 | + guint type; | ||
1043 | + gboolean found = FALSE; | ||
1044 | + | ||
1045 | + gtk_tree_model_get(GTK_TREE_MODEL(store), iter, | ||
1046 | + CONNMAN_COLUMN_TYPE, &type, -1); | ||
1047 | + | ||
1048 | + if (type != CONNMAN_TYPE_UNKNOWN) | ||
1049 | + found = (type == type_target); | ||
1050 | + | ||
1051 | + return found; | ||
842 | +} | 1052 | +} |
843 | + | 1053 | + |
1054 | +static gboolean get_iter_from_type(GtkTreeStore *store, GtkTreeIter *iter, guint type) | ||
1055 | +{ | ||
1056 | + return iter_search(store, iter, NULL, compare_type, GUINT_TO_POINTER(type)); | ||
1057 | +} | ||
844 | + | 1058 | + |
845 | static void property_update(GtkTreeStore *store, const GValue *value, | 1059 | gboolean connman_dbus_get_iter(GtkTreeStore *store, const gchar *path, |
846 | const char *key, connman_get_properties_reply callback) | 1060 | GtkTreeIter *iter) |
847 | { | 1061 | { |
848 | - GSList *list, *link, *old_list, *new_list = NULL; | 1062 | @@ -167,12 +188,7 @@ static void property_update(GtkTreeStore *store, const GValue *value, |
849 | + GSList *list, *link, *old_list, *new_list = NULL, *sorted_list = NULL; | ||
850 | const char *iface; | ||
851 | 1063 | ||
852 | DBG("store %p key %s", store, key); | 1064 | DBG("store %p key %s", store, key); |
853 | 1065 | ||
@@ -857,25 +1069,11 @@ index 9eba7ae..83f4e57 100644 | |||
857 | - iface = CONNMAN_DEVICE_INTERFACE; | 1069 | - iface = CONNMAN_DEVICE_INTERFACE; |
858 | - else | 1070 | - else |
859 | - iface = CONNMAN_NETWORK_INTERFACE; | 1071 | - iface = CONNMAN_NETWORK_INTERFACE; |
860 | + if (g_str_equal(key, "Services") == TRUE) | 1072 | + iface = CONNMAN_SERVICE_INTERFACE; |
861 | + iface = CONNMAN_SERVICE_INTERFACE; | ||
862 | 1073 | ||
863 | old_list = g_object_get_data(G_OBJECT(store), key); | 1074 | old_list = g_object_get_data(G_OBJECT(store), key); |
864 | 1075 | ||
865 | @@ -180,7 +182,11 @@ static void property_update(GtkTreeStore *store, const GValue *value, | 1076 | @@ -205,25 +221,12 @@ static void property_update(GtkTreeStore *store, const GValue *value, |
866 | |||
867 | g_object_set_data(G_OBJECT(store), key, new_list); | ||
868 | |||
869 | - for (list = new_list; list; list = list->next) { | ||
870 | + sorted_list = g_slist_sort_with_data(new_list, | ||
871 | + (GCompareDataFunc)compare_list, store); | ||
872 | + g_object_set_data(G_OBJECT(store), "Services", sorted_list); | ||
873 | + | ||
874 | + for (list = sorted_list; list; list = list->next) { | ||
875 | gchar *path = list->data; | ||
876 | DBusGProxy *proxy; | ||
877 | |||
878 | @@ -205,25 +211,12 @@ static void property_update(GtkTreeStore *store, const GValue *value, | ||
879 | for (list = old_list; list; list = list->next) { | 1077 | for (list = old_list; list; list = list->next) { |
880 | gchar *path = list->data; | 1078 | gchar *path = list->data; |
881 | GtkTreeIter iter; | 1079 | GtkTreeIter iter; |
@@ -902,7 +1100,7 @@ index 9eba7ae..83f4e57 100644 | |||
902 | g_free(path); | 1100 | g_free(path); |
903 | } | 1101 | } |
904 | 1102 | ||
905 | @@ -263,48 +256,19 @@ static const gchar *type2icon(guint type) | 1103 | @@ -263,155 +266,115 @@ static const gchar *type2icon(guint type) |
906 | return NULL; | 1104 | return NULL; |
907 | } | 1105 | } |
908 | 1106 | ||
@@ -943,26 +1141,34 @@ index 9eba7ae..83f4e57 100644 | |||
943 | -} | 1141 | -} |
944 | - | 1142 | - |
945 | -static void network_changed(DBusGProxy *proxy, const char *property, | 1143 | -static void network_changed(DBusGProxy *proxy, const char *property, |
946 | +static void service_changed(DBusGProxy *proxy, const char *property, | 1144 | - GValue *value, gpointer user_data) |
947 | GValue *value, gpointer user_data) | 1145 | +static void enabled_technologies_changed(GtkTreeStore *store, GValue *value) |
948 | { | 1146 | { |
949 | GtkTreeStore *store = user_data; | 1147 | - GtkTreeStore *store = user_data; |
950 | const char *path = dbus_g_proxy_get_path(proxy); | 1148 | - const char *path = dbus_g_proxy_get_path(proxy); |
951 | GtkTreeIter iter; | 1149 | GtkTreeIter iter; |
952 | + GHashTable *ipv4; | 1150 | + gboolean ethernet_enabled_prev, ethernet_enabled = FALSE; |
953 | + const gchar *method, *addr, *netmask, *gateway; | 1151 | + gboolean wifi_enabled_prev, wifi_enabled = FALSE; |
954 | + GValue *ipv4_method, *ipv4_address, *ipv4_netmask, *ipv4_gateway; | 1152 | + gchar **tech = g_value_get_boxed (value); |
955 | + | 1153 | + gint i; |
956 | + const gchar *state, *icon, *name, *security, *passphrase; | 1154 | + gboolean ret; |
957 | + guint strength, type; | ||
958 | + | ||
959 | |||
960 | DBG("store %p proxy %p property %s", store, proxy, property); | ||
961 | 1155 | ||
962 | @@ -314,141 +278,92 @@ static void network_changed(DBusGProxy *proxy, const char *property, | 1156 | - DBG("store %p proxy %p property %s", store, proxy, property); |
963 | if (get_iter_from_path(store, &iter, path) == FALSE) | 1157 | - |
1158 | - if (property == NULL || value == NULL) | ||
1159 | + if (value == NULL) | ||
964 | return; | 1160 | return; |
965 | 1161 | ||
1162 | - if (get_iter_from_path(store, &iter, path) == FALSE) | ||
1163 | - return; | ||
1164 | + for (i = 0; i < g_strv_length (tech); i++) | ||
1165 | + { | ||
1166 | + if (g_str_equal("ethernet", *(tech + i))) | ||
1167 | + ethernet_enabled = TRUE; | ||
1168 | + else if (g_str_equal ("wifi", *(tech + i))) | ||
1169 | + wifi_enabled = TRUE; | ||
1170 | + } | ||
1171 | |||
966 | - if (g_str_equal(property, "Connected") == TRUE) { | 1172 | - if (g_str_equal(property, "Connected") == TRUE) { |
967 | - gboolean connected = g_value_get_boolean(value); | 1173 | - gboolean connected = g_value_get_boolean(value); |
968 | - gtk_tree_store_set(store, &iter, | 1174 | - gtk_tree_store_set(store, &iter, |
@@ -973,18 +1179,30 @@ index 9eba7ae..83f4e57 100644 | |||
973 | - CONNMAN_COLUMN_INRANGE, inrange, -1); | 1179 | - CONNMAN_COLUMN_INRANGE, inrange, -1); |
974 | - } else if (g_str_equal(property, "Remember") == TRUE) { | 1180 | - } else if (g_str_equal(property, "Remember") == TRUE) { |
975 | - gboolean remember = g_value_get_boolean(value); | 1181 | - gboolean remember = g_value_get_boolean(value); |
976 | - gtk_tree_store_set(store, &iter, | 1182 | + get_iter_from_type(store, &iter, CONNMAN_TYPE_LABEL_ETHERNET); |
1183 | + gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, | ||
1184 | + CONNMAN_COLUMN_ETHERNET_ENABLED, ðernet_enabled_prev, -1); | ||
1185 | + if (ethernet_enabled_prev != ethernet_enabled) | ||
1186 | gtk_tree_store_set(store, &iter, | ||
977 | - CONNMAN_COLUMN_REMEMBER, remember, -1); | 1187 | - CONNMAN_COLUMN_REMEMBER, remember, -1); |
978 | - } else if (g_str_equal(property, "Strength") == TRUE) { | 1188 | - } else if (g_str_equal(property, "Strength") == TRUE) { |
979 | - guint strength = g_value_get_uchar(value); | 1189 | - guint strength = g_value_get_uchar(value); |
980 | - gtk_tree_store_set(store, &iter, | 1190 | + CONNMAN_COLUMN_ETHERNET_ENABLED, ethernet_enabled, -1); |
1191 | + | ||
1192 | + ret = get_iter_from_type(store, &iter, CONNMAN_TYPE_LABEL_WIFI); | ||
1193 | + gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, | ||
1194 | + CONNMAN_COLUMN_WIFI_ENABLED, &wifi_enabled_prev, -1); | ||
1195 | + if (wifi_enabled_prev != wifi_enabled) | ||
1196 | gtk_tree_store_set(store, &iter, | ||
981 | - CONNMAN_COLUMN_STRENGTH, strength, -1); | 1197 | - CONNMAN_COLUMN_STRENGTH, strength, -1); |
982 | - } | 1198 | - } |
983 | -} | 1199 | + CONNMAN_COLUMN_WIFI_ENABLED, wifi_enabled, -1); |
984 | - | 1200 | } |
1201 | |||
985 | -static void network_properties(DBusGProxy *proxy, GHashTable *hash, | 1202 | -static void network_properties(DBusGProxy *proxy, GHashTable *hash, |
986 | - GError *error, gpointer user_data) | 1203 | - GError *error, gpointer user_data) |
987 | -{ | 1204 | +static void enabled_technologies_properties(GtkTreeStore *store, DBusGProxy *proxy, GValue *value) |
1205 | { | ||
988 | - GtkTreeStore *store = user_data; | 1206 | - GtkTreeStore *store = user_data; |
989 | - GValue *value; | 1207 | - GValue *value; |
990 | - const gchar *device, *name, *secret; | 1208 | - const gchar *device, *name, *secret; |
@@ -999,131 +1217,130 @@ index 9eba7ae..83f4e57 100644 | |||
999 | - | 1217 | - |
1000 | - value = g_hash_table_lookup(hash, "Device"); | 1218 | - value = g_hash_table_lookup(hash, "Device"); |
1001 | - device = value ? g_value_get_boxed(value) : NULL; | 1219 | - device = value ? g_value_get_boxed(value) : NULL; |
1002 | + if (g_str_equal(property, "IPv4") == TRUE) { | 1220 | - |
1003 | |||
1004 | - value = g_hash_table_lookup(hash, "Name"); | 1221 | - value = g_hash_table_lookup(hash, "Name"); |
1005 | - name = value ? g_value_get_string(value) : NULL; | 1222 | - name = value ? g_value_get_string(value) : NULL; |
1006 | - | 1223 | - |
1007 | - value = g_hash_table_lookup(hash, "Connected"); | 1224 | - value = g_hash_table_lookup(hash, "Connected"); |
1008 | - connected = value ? g_value_get_boolean(value) : FALSE; | 1225 | - connected = value ? g_value_get_boolean(value) : FALSE; |
1009 | + ipv4 = g_value_get_boxed (value); | 1226 | - |
1010 | + if (!ipv4) | ||
1011 | + return; | ||
1012 | |||
1013 | - value = g_hash_table_lookup(hash, "Available"); | 1227 | - value = g_hash_table_lookup(hash, "Available"); |
1014 | - inrange = value ? g_value_get_boolean(value) : FALSE; | 1228 | - inrange = value ? g_value_get_boolean(value) : FALSE; |
1015 | + ipv4_method = g_hash_table_lookup (ipv4, "Method"); | 1229 | + GtkTreeIter iter; |
1016 | + method = ipv4_method ? g_value_get_string(ipv4_method) : NULL; | 1230 | + gboolean ethernet_enabled = FALSE; |
1231 | + gboolean wifi_enabled = FALSE; | ||
1232 | + gchar **tech = g_value_get_boxed (value); | ||
1233 | + gint i; | ||
1234 | + | ||
1235 | + for (i = 0; i < g_strv_length (tech); i++) | ||
1236 | + { | ||
1237 | + if (g_str_equal("ethernet", *(tech + i))) | ||
1238 | + ethernet_enabled = TRUE; | ||
1239 | + else if (g_str_equal ("wifi", *(tech + i))) | ||
1240 | + wifi_enabled = TRUE; | ||
1241 | + } | ||
1017 | 1242 | ||
1018 | - value = g_hash_table_lookup(hash, "Remember"); | 1243 | - value = g_hash_table_lookup(hash, "Remember"); |
1019 | - remember = value ? g_value_get_boolean(value) : FALSE; | 1244 | - remember = value ? g_value_get_boolean(value) : FALSE; |
1020 | + ipv4_address = g_hash_table_lookup (ipv4, "Address"); | 1245 | + if (get_iter_from_type(store, &iter, CONNMAN_TYPE_LABEL_ETHERNET) == FALSE) |
1021 | + addr = ipv4_address ? g_value_get_string(ipv4_address) : NULL; | 1246 | + gtk_tree_store_append(store, &iter, NULL); |
1022 | 1247 | ||
1023 | - value = g_hash_table_lookup(hash, "Strength"); | 1248 | - value = g_hash_table_lookup(hash, "Strength"); |
1024 | - strength = value ? g_value_get_uchar(value) : 0; | 1249 | - strength = value ? g_value_get_uchar(value) : 0; |
1025 | + ipv4_netmask = g_hash_table_lookup (ipv4, "Netmask"); | 1250 | + gtk_tree_store_set(store, &iter, |
1026 | + netmask = ipv4_netmask ? g_value_get_string(ipv4_netmask) : NULL; | 1251 | + CONNMAN_COLUMN_PROXY, proxy, |
1252 | + CONNMAN_COLUMN_ETHERNET_ENABLED, ethernet_enabled, | ||
1253 | + CONNMAN_COLUMN_TYPE, CONNMAN_TYPE_LABEL_ETHERNET, | ||
1254 | + -1); | ||
1027 | 1255 | ||
1028 | - value = g_hash_table_lookup(hash, "WiFi.Security"); | 1256 | - value = g_hash_table_lookup(hash, "WiFi.Security"); |
1029 | - security = get_security(value); | 1257 | - security = get_security(value); |
1030 | + ipv4_gateway = g_hash_table_lookup (ipv4, "Gateway"); | 1258 | + if (get_iter_from_type(store, &iter, CONNMAN_TYPE_LABEL_WIFI) == FALSE) |
1031 | + gateway = ipv4_gateway ? g_value_get_string(ipv4_gateway) : NULL; | 1259 | + gtk_tree_store_append(store, &iter, NULL); |
1032 | 1260 | ||
1033 | - value = g_hash_table_lookup(hash, "WiFi.Passphrase"); | 1261 | - value = g_hash_table_lookup(hash, "WiFi.Passphrase"); |
1034 | - secret = value ? g_value_get_string(value) : NULL; | 1262 | - secret = value ? g_value_get_string(value) : NULL; |
1035 | - | 1263 | + gtk_tree_store_set(store, &iter, |
1264 | + CONNMAN_COLUMN_PROXY, proxy, | ||
1265 | + CONNMAN_COLUMN_WIFI_ENABLED, wifi_enabled, | ||
1266 | + CONNMAN_COLUMN_TYPE, CONNMAN_TYPE_LABEL_WIFI, | ||
1267 | + -1); | ||
1268 | +} | ||
1269 | |||
1036 | - DBG("name %s strength %d", name, strength); | 1270 | - DBG("name %s strength %d", name, strength); |
1037 | - | 1271 | +static void offline_mode_changed(GtkTreeStore *store, GValue *value) |
1272 | +{ | ||
1273 | + GtkTreeIter iter; | ||
1274 | + gboolean offline_mode = g_value_get_boolean(value); | ||
1275 | |||
1038 | - if (get_iter_from_path(store, &parent, device) == FALSE) | 1276 | - if (get_iter_from_path(store, &parent, device) == FALSE) |
1039 | - return; | 1277 | - return; |
1040 | - | 1278 | + get_iter_from_type(store, &iter, CONNMAN_TYPE_SYSCONFIG); |
1279 | + gtk_tree_store_set(store, &iter, | ||
1280 | + CONNMAN_COLUMN_OFFLINEMODE, offline_mode, | ||
1281 | + -1); | ||
1282 | +} | ||
1283 | |||
1041 | - if (get_iter_from_proxy(store, &iter, proxy) == FALSE) { | 1284 | - if (get_iter_from_proxy(store, &iter, proxy) == FALSE) { |
1042 | - gtk_tree_store_insert_with_values(store, &iter, &parent, -1, | 1285 | - gtk_tree_store_insert_with_values(store, &iter, &parent, -1, |
1043 | - CONNMAN_COLUMN_PROXY, proxy, | 1286 | - CONNMAN_COLUMN_PROXY, proxy, |
1044 | + gtk_tree_store_set(store, &iter, | 1287 | - CONNMAN_COLUMN_NAME, name, |
1045 | + CONNMAN_COLUMN_METHOD, method, | ||
1046 | + CONNMAN_COLUMN_ADDRESS, addr, | ||
1047 | + CONNMAN_COLUMN_NETMASK, netmask, | ||
1048 | + CONNMAN_COLUMN_GATEWAY, gateway, | ||
1049 | + -1); | ||
1050 | + | ||
1051 | + } else if (g_str_equal(property, "State") == TRUE) { | ||
1052 | + state = value ? g_value_get_string(value) : NULL; | ||
1053 | + gtk_tree_store_set(store, &iter, | ||
1054 | + CONNMAN_COLUMN_STATE, state, | ||
1055 | + -1); | ||
1056 | + } else if (g_str_equal(property, "Name") == TRUE) { | ||
1057 | + name = value ? g_value_get_string(value) : NULL; | ||
1058 | + gtk_tree_store_set(store, &iter, | ||
1059 | CONNMAN_COLUMN_NAME, name, | ||
1060 | - CONNMAN_COLUMN_ENABLED, connected, | 1288 | - CONNMAN_COLUMN_ENABLED, connected, |
1061 | - CONNMAN_COLUMN_INRANGE, inrange, | 1289 | - CONNMAN_COLUMN_INRANGE, inrange, |
1062 | - CONNMAN_COLUMN_REMEMBER, remember, | 1290 | - CONNMAN_COLUMN_REMEMBER, remember, |
1063 | - CONNMAN_COLUMN_STRENGTH, strength, | 1291 | - CONNMAN_COLUMN_STRENGTH, strength, |
1064 | + -1); | 1292 | - CONNMAN_COLUMN_SECURITY, security, |
1065 | + } else if (g_str_equal(property, "Type") == TRUE) { | ||
1066 | + type = get_type(value); | ||
1067 | + icon = type2icon(type); | ||
1068 | + gtk_tree_store_set(store, &iter, | ||
1069 | + CONNMAN_COLUMN_TYPE, type, | ||
1070 | + CONNMAN_COLUMN_ICON, icon, | ||
1071 | + -1); | ||
1072 | + } else if (g_str_equal(property, "Security") == TRUE) { | ||
1073 | + security = value ? g_value_get_string(value) : NULL; | ||
1074 | + gtk_tree_store_set(store, &iter, | ||
1075 | CONNMAN_COLUMN_SECURITY, security, | ||
1076 | - CONNMAN_COLUMN_PASSPHRASE, secret, -1); | 1293 | - CONNMAN_COLUMN_PASSPHRASE, secret, -1); |
1077 | - | 1294 | +static void offline_mode_properties(GtkTreeStore *store, DBusGProxy *proxy, GValue *value) |
1295 | +{ | ||
1296 | + GtkTreeIter iter; | ||
1297 | + gboolean offline_mode = g_value_get_boolean(value); | ||
1298 | |||
1078 | - dbus_g_proxy_add_signal(proxy, "PropertyChanged", | 1299 | - dbus_g_proxy_add_signal(proxy, "PropertyChanged", |
1079 | - G_TYPE_STRING, G_TYPE_VALUE, G_TYPE_INVALID); | 1300 | - G_TYPE_STRING, G_TYPE_VALUE, G_TYPE_INVALID); |
1080 | - dbus_g_proxy_connect_signal(proxy, "PropertyChanged", | 1301 | - dbus_g_proxy_connect_signal(proxy, "PropertyChanged", |
1081 | - G_CALLBACK(network_changed), store, NULL); | 1302 | - G_CALLBACK(network_changed), store, NULL); |
1082 | - } else | 1303 | - } else |
1083 | + -1); | 1304 | - gtk_tree_store_set(store, &iter, |
1084 | + } else if (g_str_equal(property, "PassPhrase") == TRUE) { | ||
1085 | + passphrase = value ? g_value_get_string(value) : NULL; | ||
1086 | + gtk_tree_store_set(store, &iter, | ||
1087 | + CONNMAN_COLUMN_PASSPHRASE, passphrase, | ||
1088 | + -1); | ||
1089 | + } else if (g_str_equal(property, "Strength") == TRUE) { | ||
1090 | + strength = value ? g_value_get_uchar(value) : 0; | ||
1091 | gtk_tree_store_set(store, &iter, | ||
1092 | - CONNMAN_COLUMN_NAME, name, | 1305 | - CONNMAN_COLUMN_NAME, name, |
1093 | - CONNMAN_COLUMN_ENABLED, connected, | 1306 | - CONNMAN_COLUMN_ENABLED, connected, |
1094 | - CONNMAN_COLUMN_INRANGE, inrange, | 1307 | - CONNMAN_COLUMN_INRANGE, inrange, |
1095 | - CONNMAN_COLUMN_REMEMBER, remember, | 1308 | - CONNMAN_COLUMN_REMEMBER, remember, |
1096 | CONNMAN_COLUMN_STRENGTH, strength, | 1309 | - CONNMAN_COLUMN_STRENGTH, strength, |
1097 | - CONNMAN_COLUMN_SECURITY, security, | 1310 | - CONNMAN_COLUMN_SECURITY, security, |
1098 | - CONNMAN_COLUMN_PASSPHRASE, secret, -1); | 1311 | - CONNMAN_COLUMN_PASSPHRASE, secret, -1); |
1099 | - | 1312 | + if (get_iter_from_type(store, &iter, CONNMAN_TYPE_SYSCONFIG) == FALSE) |
1313 | + gtk_tree_store_insert(store, &iter, NULL, 0); | ||
1314 | |||
1100 | -done: | 1315 | -done: |
1101 | - g_object_unref(proxy); | 1316 | - g_object_unref(proxy); |
1102 | + -1); | 1317 | + gtk_tree_store_set(store, &iter, |
1103 | + } | 1318 | + CONNMAN_COLUMN_PROXY, proxy, |
1319 | + CONNMAN_COLUMN_TYPE, CONNMAN_TYPE_SYSCONFIG, | ||
1320 | + CONNMAN_COLUMN_OFFLINEMODE, offline_mode, | ||
1321 | + -1); | ||
1104 | } | 1322 | } |
1105 | 1323 | ||
1106 | -static void device_changed(DBusGProxy *proxy, const char *property, | 1324 | -static void device_changed(DBusGProxy *proxy, const char *property, |
1107 | - GValue *value, gpointer user_data) | 1325 | +static void service_changed(DBusGProxy *proxy, const char *property, |
1108 | +static void service_properties(DBusGProxy *proxy, GHashTable *hash, | 1326 | GValue *value, gpointer user_data) |
1109 | + GError *error, gpointer user_data) | ||
1110 | { | 1327 | { |
1111 | GtkTreeStore *store = user_data; | 1328 | GtkTreeStore *store = user_data; |
1112 | const char *path = dbus_g_proxy_get_path(proxy); | 1329 | const char *path = dbus_g_proxy_get_path(proxy); |
1113 | - GtkTreeIter iter; | 1330 | GtkTreeIter iter; |
1114 | |||
1115 | - DBG("store %p proxy %p property %s", store, proxy, property); | ||
1116 | + const gchar *state, *icon, *name, *security, *passphrase; | ||
1117 | + guint strength, type; | ||
1118 | |||
1119 | - if (property == NULL || value == NULL) | ||
1120 | - return; | ||
1121 | - | ||
1122 | - if (get_iter_from_path(store, &iter, path) == FALSE) | ||
1123 | - return; | ||
1124 | + GHashTable *ipv4; | 1331 | + GHashTable *ipv4; |
1332 | + const char *method, *addr, *netmask, *gateway; | ||
1125 | + GValue *ipv4_method, *ipv4_address, *ipv4_netmask, *ipv4_gateway; | 1333 | + GValue *ipv4_method, *ipv4_address, *ipv4_netmask, *ipv4_gateway; |
1126 | + const gchar *method, *addr, *netmask, *gateway; | 1334 | + |
1335 | + const char *state, *icon, *name, *security, *passphrase; | ||
1336 | + guint strength, type; | ||
1337 | + | ||
1338 | |||
1339 | DBG("store %p proxy %p property %s", store, proxy, property); | ||
1340 | |||
1341 | @@ -421,165 +384,167 @@ static void device_changed(DBusGProxy *proxy, const char *property, | ||
1342 | if (get_iter_from_path(store, &iter, path) == FALSE) | ||
1343 | return; | ||
1127 | 1344 | ||
1128 | - if (g_str_equal(property, "Policy") == TRUE) { | 1345 | - if (g_str_equal(property, "Policy") == TRUE) { |
1129 | - guint policy = get_policy(value); | 1346 | - guint policy = get_policy(value); |
@@ -1136,44 +1353,47 @@ index 9eba7ae..83f4e57 100644 | |||
1136 | - } else if (g_str_equal(property, "Networks") == TRUE) | 1353 | - } else if (g_str_equal(property, "Networks") == TRUE) |
1137 | - property_update(store, value, path, network_properties); | 1354 | - property_update(store, value, path, network_properties); |
1138 | -} | 1355 | -} |
1139 | + GtkTreeIter iter; | 1356 | - |
1140 | |||
1141 | -static void device_properties(DBusGProxy *proxy, GHashTable *hash, | 1357 | -static void device_properties(DBusGProxy *proxy, GHashTable *hash, |
1142 | - GError *error, gpointer user_data) | 1358 | - GError *error, gpointer user_data) |
1143 | -{ | 1359 | -{ |
1144 | - GtkTreeStore *store = user_data; | 1360 | - GtkTreeStore *store = user_data; |
1145 | - const char *path = dbus_g_proxy_get_path(proxy); | 1361 | - const char *path = dbus_g_proxy_get_path(proxy); |
1146 | GValue *value; | 1362 | - GValue *value; |
1147 | - const gchar *name, *icon; | 1363 | - const gchar *name, *icon; |
1148 | - guint type, policy; | 1364 | - guint type, policy; |
1149 | - gboolean powered; | 1365 | - gboolean powered; |
1150 | - GtkTreeIter iter; | 1366 | - GtkTreeIter iter; |
1367 | - | ||
1368 | - DBG("store %p proxy %p hash %p", store, proxy, hash); | ||
1369 | + if (g_str_equal(property, "IPv4") == TRUE) { | ||
1151 | 1370 | ||
1152 | DBG("store %p proxy %p hash %p", store, proxy, hash); | 1371 | - if (error != NULL || hash == NULL) |
1153 | + DBG("path %s", path); | 1372 | - goto done; |
1154 | 1373 | - | |
1155 | if (error != NULL || hash == NULL) | 1374 | - value = g_hash_table_lookup(hash, "Name"); |
1156 | goto done; | 1375 | - name = value ? g_value_get_string(value) : NULL; |
1157 | 1376 | - | |
1158 | + value = g_hash_table_lookup(hash, "State"); | 1377 | - value = g_hash_table_lookup(hash, "Type"); |
1159 | + state = value ? g_value_get_string(value) : NULL; | 1378 | - type = get_type(value); |
1160 | + | 1379 | - icon = type2icon(type); |
1161 | value = g_hash_table_lookup(hash, "Name"); | 1380 | + ipv4 = g_value_get_boxed (value); |
1162 | name = value ? g_value_get_string(value) : NULL; | 1381 | + if (!ipv4) |
1163 | 1382 | + return; | |
1164 | @@ -456,129 +371,69 @@ static void device_properties(DBusGProxy *proxy, GHashTable *hash, | ||
1165 | type = get_type(value); | ||
1166 | icon = type2icon(type); | ||
1167 | 1383 | ||
1168 | - value = g_hash_table_lookup(hash, "Policy"); | 1384 | - value = g_hash_table_lookup(hash, "Policy"); |
1169 | - policy = get_policy(value); | 1385 | - policy = get_policy(value); |
1170 | - | 1386 | + ipv4_method = g_hash_table_lookup (ipv4, "Method"); |
1387 | + method = ipv4_method ? g_value_get_string(ipv4_method) : NULL; | ||
1388 | |||
1171 | - value = g_hash_table_lookup(hash, "Powered"); | 1389 | - value = g_hash_table_lookup(hash, "Powered"); |
1172 | - powered = value ? g_value_get_boolean(value) : FALSE; | 1390 | - powered = value ? g_value_get_boolean(value) : FALSE; |
1173 | - | 1391 | + ipv4_address = g_hash_table_lookup (ipv4, "Address"); |
1392 | + addr = ipv4_address ? g_value_get_string(ipv4_address) : NULL; | ||
1393 | |||
1174 | - DBG("name %s type %d icon %s", name, type, icon); | 1394 | - DBG("name %s type %d icon %s", name, type, icon); |
1175 | + value = g_hash_table_lookup(hash, "Security"); | 1395 | + ipv4_netmask = g_hash_table_lookup (ipv4, "Netmask"); |
1176 | + security = value ? g_value_get_string(value) : NULL; | 1396 | + netmask = ipv4_netmask ? g_value_get_string(ipv4_netmask) : NULL; |
1177 | 1397 | ||
1178 | - if (get_iter_from_proxy(store, &iter, proxy) == FALSE) { | 1398 | - if (get_iter_from_proxy(store, &iter, proxy) == FALSE) { |
1179 | - gtk_tree_store_insert_with_values(store, &iter, NULL, -1, | 1399 | - gtk_tree_store_insert_with_values(store, &iter, NULL, -1, |
@@ -1183,16 +1403,37 @@ index 9eba7ae..83f4e57 100644 | |||
1183 | - CONNMAN_COLUMN_TYPE, type, | 1403 | - CONNMAN_COLUMN_TYPE, type, |
1184 | - CONNMAN_COLUMN_ENABLED, powered, | 1404 | - CONNMAN_COLUMN_ENABLED, powered, |
1185 | - CONNMAN_COLUMN_POLICY, policy, -1); | 1405 | - CONNMAN_COLUMN_POLICY, policy, -1); |
1186 | - | 1406 | + ipv4_gateway = g_hash_table_lookup (ipv4, "Gateway"); |
1407 | + gateway = ipv4_gateway ? g_value_get_string(ipv4_gateway) : NULL; | ||
1408 | |||
1187 | - dbus_g_proxy_add_signal(proxy, "PropertyChanged", | 1409 | - dbus_g_proxy_add_signal(proxy, "PropertyChanged", |
1188 | - G_TYPE_STRING, G_TYPE_VALUE, G_TYPE_INVALID); | 1410 | - G_TYPE_STRING, G_TYPE_VALUE, G_TYPE_INVALID); |
1189 | - dbus_g_proxy_connect_signal(proxy, "PropertyChanged", | 1411 | - dbus_g_proxy_connect_signal(proxy, "PropertyChanged", |
1190 | - G_CALLBACK(device_changed), store, NULL); | 1412 | - G_CALLBACK(device_changed), store, NULL); |
1191 | - } else | 1413 | - } else |
1192 | - gtk_tree_store_set(store, &iter, | 1414 | + gtk_tree_store_set(store, &iter, |
1193 | - CONNMAN_COLUMN_NAME, name, | 1415 | + CONNMAN_COLUMN_METHOD, method, |
1416 | + CONNMAN_COLUMN_ADDRESS, addr, | ||
1417 | + CONNMAN_COLUMN_NETMASK, netmask, | ||
1418 | + CONNMAN_COLUMN_GATEWAY, gateway, | ||
1419 | + -1); | ||
1420 | + | ||
1421 | + } else if (g_str_equal(property, "State") == TRUE) { | ||
1422 | + state = value ? g_value_get_string(value) : NULL; | ||
1423 | + gtk_tree_store_set(store, &iter, | ||
1424 | + CONNMAN_COLUMN_STATE, state, | ||
1425 | + -1); | ||
1426 | + } else if (g_str_equal(property, "Name") == TRUE) { | ||
1427 | + name = value ? g_value_get_string(value) : NULL; | ||
1428 | gtk_tree_store_set(store, &iter, | ||
1429 | CONNMAN_COLUMN_NAME, name, | ||
1194 | - CONNMAN_COLUMN_ICON, icon, | 1430 | - CONNMAN_COLUMN_ICON, icon, |
1195 | - CONNMAN_COLUMN_TYPE, type, | 1431 | + -1); |
1432 | + } else if (g_str_equal(property, "Type") == TRUE) { | ||
1433 | + type = get_type(value); | ||
1434 | + icon = type2icon(type); | ||
1435 | + gtk_tree_store_set(store, &iter, | ||
1436 | CONNMAN_COLUMN_TYPE, type, | ||
1196 | - CONNMAN_COLUMN_ENABLED, powered, | 1437 | - CONNMAN_COLUMN_ENABLED, powered, |
1197 | - CONNMAN_COLUMN_POLICY, policy, -1); | 1438 | - CONNMAN_COLUMN_POLICY, policy, -1); |
1198 | - | 1439 | - |
@@ -1215,123 +1456,175 @@ index 9eba7ae..83f4e57 100644 | |||
1215 | - | 1456 | - |
1216 | - if (property == NULL || value == NULL) | 1457 | - if (property == NULL || value == NULL) |
1217 | - return; | 1458 | - return; |
1218 | + value = g_hash_table_lookup(hash, "PassPhrase"); | 1459 | - |
1219 | + passphrase = value ? g_value_get_string(value) : NULL; | ||
1220 | |||
1221 | - if (get_iter_from_path(store, &iter, path) == FALSE) | 1460 | - if (get_iter_from_path(store, &iter, path) == FALSE) |
1222 | - return; | 1461 | - return; |
1223 | - | 1462 | - |
1224 | - if (g_str_equal(property, "Default") == TRUE) { | 1463 | - if (g_str_equal(property, "Default") == TRUE) { |
1225 | - gboolean enabled = g_value_get_boolean(value); | 1464 | - gboolean enabled = g_value_get_boolean(value); |
1226 | - gtk_tree_store_set(store, &iter, | 1465 | + CONNMAN_COLUMN_ICON, icon, |
1466 | + -1); | ||
1467 | + } else if (g_str_equal(property, "Security") == TRUE) { | ||
1468 | + security = value ? g_value_get_string(value) : NULL; | ||
1469 | + gtk_tree_store_set(store, &iter, | ||
1470 | + CONNMAN_COLUMN_SECURITY, security, | ||
1471 | + -1); | ||
1472 | + } else if (g_str_equal(property, "PassPhrase") == TRUE) { | ||
1473 | + passphrase = value ? g_value_get_string(value) : NULL; | ||
1474 | gtk_tree_store_set(store, &iter, | ||
1227 | - CONNMAN_COLUMN_ENABLED, enabled, -1); | 1475 | - CONNMAN_COLUMN_ENABLED, enabled, -1); |
1228 | - } else if (g_str_equal(property, "Strength") == TRUE) { | 1476 | + CONNMAN_COLUMN_PASSPHRASE, passphrase, |
1477 | + -1); | ||
1478 | } else if (g_str_equal(property, "Strength") == TRUE) { | ||
1229 | - guint strength = g_value_get_uchar(value); | 1479 | - guint strength = g_value_get_uchar(value); |
1230 | - gtk_tree_store_set(store, &iter, | 1480 | + strength = value ? g_value_get_uchar(value) : 0; |
1481 | gtk_tree_store_set(store, &iter, | ||
1231 | - CONNMAN_COLUMN_STRENGTH, strength, -1); | 1482 | - CONNMAN_COLUMN_STRENGTH, strength, -1); |
1232 | - } | 1483 | + CONNMAN_COLUMN_STRENGTH, strength, |
1233 | -} | 1484 | + -1); |
1234 | - | 1485 | } |
1486 | } | ||
1487 | |||
1235 | -static void connection_properties(DBusGProxy *proxy, GHashTable *hash, | 1488 | -static void connection_properties(DBusGProxy *proxy, GHashTable *hash, |
1236 | - GError *error, gpointer user_data) | 1489 | +static void service_properties(DBusGProxy *proxy, GHashTable *hash, |
1237 | -{ | 1490 | GError *error, gpointer user_data) |
1238 | - GtkTreeStore *store = user_data; | 1491 | { |
1492 | GtkTreeStore *store = user_data; | ||
1239 | - GValue *value; | 1493 | - GValue *value; |
1240 | - guint type, strength; | 1494 | - guint type, strength; |
1241 | - gboolean enabled; | 1495 | - gboolean enabled; |
1242 | - const char *device, *address; | 1496 | - const char *device, *address; |
1243 | - GtkTreeIter iter; | 1497 | + |
1244 | + value = g_hash_table_lookup(hash, "Strength"); | 1498 | + const char *state, *icon, *name, *security, *passphrase; |
1245 | + strength = value ? g_value_get_uchar(value) : 0; | 1499 | + guint strength, type; |
1500 | + | ||
1501 | + GHashTable *ipv4; | ||
1502 | + GValue *ipv4_method, *ipv4_address, *ipv4_netmask, *ipv4_gateway; | ||
1503 | + const char *method, *addr, *netmask, *gateway; | ||
1504 | + | ||
1505 | GtkTreeIter iter; | ||
1246 | 1506 | ||
1247 | - DBG("store %p proxy %p hash %p", store, proxy, hash); | 1507 | + GValue *value; |
1248 | + value = g_hash_table_lookup(hash, "IPv4.Configuration"); | 1508 | + |
1249 | + ipv4 = g_value_get_boxed (value); | 1509 | DBG("store %p proxy %p hash %p", store, proxy, hash); |
1250 | 1510 | ||
1251 | - if (error != NULL || hash == NULL) | 1511 | if (error != NULL || hash == NULL) |
1252 | + if (!ipv4) | ||
1253 | goto done; | 1512 | goto done; |
1254 | 1513 | ||
1255 | - value = g_hash_table_lookup(hash, "Type"); | 1514 | + value = g_hash_table_lookup(hash, "State"); |
1256 | - type = get_type(value); | 1515 | + state = value ? g_value_get_string(value) : NULL; |
1257 | + ipv4_method = g_hash_table_lookup (ipv4, "Method"); | 1516 | + |
1258 | + method = ipv4_method ? g_value_get_string(ipv4_method) : NULL; | 1517 | + value = g_hash_table_lookup(hash, "Name"); |
1518 | + name = value ? g_value_get_string(value) : NULL; | ||
1519 | + | ||
1520 | value = g_hash_table_lookup(hash, "Type"); | ||
1521 | type = get_type(value); | ||
1522 | + icon = type2icon(type); | ||
1523 | + | ||
1524 | + value = g_hash_table_lookup(hash, "Security"); | ||
1525 | + security = value ? g_value_get_string(value) : NULL; | ||
1526 | + | ||
1527 | + value = g_hash_table_lookup(hash, "PassPhrase"); | ||
1528 | + passphrase = value ? g_value_get_string(value) : NULL; | ||
1259 | 1529 | ||
1260 | - value = g_hash_table_lookup(hash, "Strength"); | 1530 | value = g_hash_table_lookup(hash, "Strength"); |
1261 | - strength = value ? g_value_get_uchar(value) : 0; | 1531 | strength = value ? g_value_get_uchar(value) : 0; |
1262 | + ipv4_address = g_hash_table_lookup (ipv4, "Address"); | ||
1263 | + addr = ipv4_address ? g_value_get_string(ipv4_address) : NULL; | ||
1264 | 1532 | ||
1265 | - value = g_hash_table_lookup(hash, "Default"); | 1533 | - value = g_hash_table_lookup(hash, "Default"); |
1266 | - enabled = value ? g_value_get_boolean(value) : FALSE; | 1534 | - enabled = value ? g_value_get_boolean(value) : FALSE; |
1267 | + ipv4_netmask = g_hash_table_lookup (ipv4, "Netmask"); | 1535 | + value = g_hash_table_lookup(hash, "IPv4.Configuration"); |
1268 | + netmask = ipv4_netmask ? g_value_get_string(ipv4_netmask) : NULL; | 1536 | + ipv4 = g_value_get_boxed (value); |
1269 | 1537 | ||
1270 | - value = g_hash_table_lookup(hash, "IPv4.Address"); | 1538 | - value = g_hash_table_lookup(hash, "IPv4.Address"); |
1271 | - address = value ? g_value_get_string(value) : NULL; | 1539 | - address = value ? g_value_get_string(value) : NULL; |
1272 | + ipv4_gateway = g_hash_table_lookup (ipv4, "Gateway"); | 1540 | + if (!ipv4) |
1273 | + gateway = ipv4_gateway ? g_value_get_string(ipv4_gateway) : NULL; | 1541 | + goto done; |
1274 | 1542 | ||
1275 | - DBG("type %d address %s", type, address); | 1543 | - DBG("type %d address %s", type, address); |
1276 | + DBG("name %s type %d icon %s state %s", name, type, icon, state); | 1544 | + ipv4_method = g_hash_table_lookup (ipv4, "Method"); |
1545 | + method = ipv4_method ? g_value_get_string(ipv4_method) : NULL; | ||
1277 | 1546 | ||
1278 | if (get_iter_from_proxy(store, &iter, proxy) == FALSE) { | 1547 | - if (get_iter_from_proxy(store, &iter, proxy) == FALSE) { |
1279 | gtk_tree_store_insert_with_values(store, &iter, NULL, -1, | 1548 | - gtk_tree_store_insert_with_values(store, &iter, NULL, -1, |
1280 | CONNMAN_COLUMN_PROXY, proxy, | 1549 | - CONNMAN_COLUMN_PROXY, proxy, |
1281 | + CONNMAN_COLUMN_NAME, name, | 1550 | - CONNMAN_COLUMN_TYPE, type, |
1282 | + CONNMAN_COLUMN_ICON, icon, | ||
1283 | CONNMAN_COLUMN_TYPE, type, | ||
1284 | - CONNMAN_COLUMN_ENABLED, enabled, | 1551 | - CONNMAN_COLUMN_ENABLED, enabled, |
1285 | + CONNMAN_COLUMN_STATE, state, | 1552 | - CONNMAN_COLUMN_STRENGTH, strength, |
1286 | + CONNMAN_COLUMN_SECURITY, security, | ||
1287 | + CONNMAN_COLUMN_PASSPHRASE, passphrase, | ||
1288 | CONNMAN_COLUMN_STRENGTH, strength, | ||
1289 | - CONNMAN_COLUMN_ADDRESS, address, -1); | 1553 | - CONNMAN_COLUMN_ADDRESS, address, -1); |
1290 | + CONNMAN_COLUMN_METHOD, method, | 1554 | + ipv4_address = g_hash_table_lookup (ipv4, "Address"); |
1291 | + CONNMAN_COLUMN_ADDRESS, addr, | 1555 | + addr = ipv4_address ? g_value_get_string(ipv4_address) : NULL; |
1292 | + CONNMAN_COLUMN_NETMASK, netmask, | ||
1293 | + CONNMAN_COLUMN_GATEWAY, gateway, | ||
1294 | + -1); | ||
1295 | 1556 | ||
1296 | dbus_g_proxy_add_signal(proxy, "PropertyChanged", | 1557 | - dbus_g_proxy_add_signal(proxy, "PropertyChanged", |
1297 | G_TYPE_STRING, G_TYPE_VALUE, G_TYPE_INVALID); | 1558 | - G_TYPE_STRING, G_TYPE_VALUE, G_TYPE_INVALID); |
1298 | dbus_g_proxy_connect_signal(proxy, "PropertyChanged", | 1559 | - dbus_g_proxy_connect_signal(proxy, "PropertyChanged", |
1299 | - G_CALLBACK(connection_changed), store, NULL); | 1560 | - G_CALLBACK(connection_changed), store, NULL); |
1300 | + G_CALLBACK(service_changed), store, NULL); | 1561 | - } else |
1301 | } else | 1562 | - gtk_tree_store_set(store, &iter, |
1302 | gtk_tree_store_set(store, &iter, | 1563 | - CONNMAN_COLUMN_TYPE, type, |
1303 | + CONNMAN_COLUMN_NAME, name, | ||
1304 | + CONNMAN_COLUMN_ICON, icon, | ||
1305 | CONNMAN_COLUMN_TYPE, type, | ||
1306 | - CONNMAN_COLUMN_ENABLED, enabled, | 1564 | - CONNMAN_COLUMN_ENABLED, enabled, |
1307 | - CONNMAN_COLUMN_STRENGTH, strength, -1); | 1565 | - CONNMAN_COLUMN_STRENGTH, strength, -1); |
1308 | - | 1566 | + ipv4_netmask = g_hash_table_lookup (ipv4, "Netmask"); |
1567 | + netmask = ipv4_netmask ? g_value_get_string(ipv4_netmask) : NULL; | ||
1568 | |||
1309 | - value = g_hash_table_lookup(hash, "Device"); | 1569 | - value = g_hash_table_lookup(hash, "Device"); |
1310 | - device = value ? g_value_get_boxed(value) : NULL; | 1570 | - device = value ? g_value_get_boxed(value) : NULL; |
1311 | - | 1571 | + ipv4_gateway = g_hash_table_lookup (ipv4, "Gateway"); |
1572 | + gateway = ipv4_gateway ? g_value_get_string(ipv4_gateway) : NULL; | ||
1573 | |||
1312 | - DBG("device %s", device); | 1574 | - DBG("device %s", device); |
1313 | - | 1575 | + DBG("name %s type %d icon %s state %s", name, type, icon, state); |
1576 | |||
1314 | - gtk_tree_store_set(store, &iter, CONNMAN_COLUMN_DEVICE, device, -1); | 1577 | - gtk_tree_store_set(store, &iter, CONNMAN_COLUMN_DEVICE, device, -1); |
1315 | - | 1578 | + if (get_iter_from_proxy(store, &iter, proxy) == FALSE) { |
1579 | + GtkTreeIter label_iter; | ||
1580 | + guint label_type; | ||
1581 | |||
1316 | - if (get_iter_from_path(store, &iter, device) == TRUE) { | 1582 | - if (get_iter_from_path(store, &iter, device) == TRUE) { |
1317 | - gtk_tree_store_set(store, &iter, | 1583 | - gtk_tree_store_set(store, &iter, |
1318 | - CONNMAN_COLUMN_DEVICE, device, | 1584 | - CONNMAN_COLUMN_DEVICE, device, |
1319 | - CONNMAN_COLUMN_INRANGE, TRUE, | 1585 | - CONNMAN_COLUMN_INRANGE, TRUE, |
1320 | - CONNMAN_COLUMN_ADDRESS, address, -1); | 1586 | - CONNMAN_COLUMN_ADDRESS, address, -1); |
1321 | - } | 1587 | + switch (type) { |
1322 | + CONNMAN_COLUMN_STATE, state, | 1588 | + case CONNMAN_TYPE_ETHERNET: |
1323 | + CONNMAN_COLUMN_SECURITY, security, | 1589 | + label_type = CONNMAN_TYPE_LABEL_ETHERNET; |
1324 | + CONNMAN_COLUMN_PASSPHRASE, passphrase, | 1590 | + break; |
1325 | + CONNMAN_COLUMN_STRENGTH, strength, | 1591 | + case CONNMAN_TYPE_WIFI: |
1326 | + CONNMAN_COLUMN_METHOD, method, | 1592 | + label_type = CONNMAN_TYPE_LABEL_WIFI; |
1327 | + CONNMAN_COLUMN_ADDRESS, addr, | 1593 | + break; |
1328 | + CONNMAN_COLUMN_NETMASK, netmask, | 1594 | + default: |
1329 | + CONNMAN_COLUMN_GATEWAY, gateway, | 1595 | + label_type = CONNMAN_TYPE_UNKNOWN; |
1330 | + -1); | 1596 | + break; |
1597 | + } | ||
1598 | + | ||
1599 | + get_iter_from_type(store, &label_iter, label_type); | ||
1600 | + | ||
1601 | + gtk_tree_store_insert_after(store, &iter, NULL, &label_iter); | ||
1602 | + | ||
1603 | + dbus_g_proxy_add_signal(proxy, "PropertyChanged", | ||
1604 | + G_TYPE_STRING, G_TYPE_VALUE, G_TYPE_INVALID); | ||
1605 | + dbus_g_proxy_connect_signal(proxy, "PropertyChanged", | ||
1606 | + G_CALLBACK(service_changed), store, NULL); | ||
1607 | } | ||
1331 | 1608 | ||
1609 | + gtk_tree_store_set(store, &iter, | ||
1610 | + CONNMAN_COLUMN_PROXY, proxy, | ||
1611 | + CONNMAN_COLUMN_NAME, name, | ||
1612 | + CONNMAN_COLUMN_ICON, icon, | ||
1613 | + CONNMAN_COLUMN_TYPE, type, | ||
1614 | + CONNMAN_COLUMN_STATE, state, | ||
1615 | + CONNMAN_COLUMN_SECURITY, security, | ||
1616 | + CONNMAN_COLUMN_PASSPHRASE, passphrase, | ||
1617 | + CONNMAN_COLUMN_STRENGTH, strength, | ||
1618 | + CONNMAN_COLUMN_METHOD, method, | ||
1619 | + CONNMAN_COLUMN_ADDRESS, addr, | ||
1620 | + CONNMAN_COLUMN_NETMASK, netmask, | ||
1621 | + CONNMAN_COLUMN_GATEWAY, gateway, | ||
1622 | + -1); | ||
1623 | + | ||
1332 | done: | 1624 | done: |
1333 | g_object_unref(proxy); | 1625 | g_object_unref(proxy); |
1334 | @@ -594,25 +449,8 @@ static void manager_changed(DBusGProxy *proxy, const char *property, | 1626 | } |
1627 | @@ -594,25 +559,12 @@ static void manager_changed(DBusGProxy *proxy, const char *property, | ||
1335 | if (property == NULL || value == NULL) | 1628 | if (property == NULL || value == NULL) |
1336 | return; | 1629 | return; |
1337 | 1630 | ||
@@ -1356,10 +1649,14 @@ index 9eba7ae..83f4e57 100644 | |||
1356 | - property_update(store, value, property, device_properties); | 1649 | - property_update(store, value, property, device_properties); |
1357 | + if (g_str_equal(property, "Services") == TRUE) { | 1650 | + if (g_str_equal(property, "Services") == TRUE) { |
1358 | + property_update(store, value, property, service_properties); | 1651 | + property_update(store, value, property, service_properties); |
1652 | + } else if (g_str_equal(property, "EnabledTechnologies") == TRUE) { | ||
1653 | + enabled_technologies_changed(store, value); | ||
1654 | + } else if (g_str_equal(property, "OfflineMode") == TRUE) { | ||
1655 | + offline_mode_changed(store, value); | ||
1359 | } | 1656 | } |
1360 | } | 1657 | } |
1361 | 1658 | ||
1362 | @@ -620,31 +458,16 @@ static void manager_properties(DBusGProxy *proxy, GHashTable *hash, | 1659 | @@ -620,31 +572,24 @@ static void manager_properties(DBusGProxy *proxy, GHashTable *hash, |
1363 | GError *error, gpointer user_data) | 1660 | GError *error, gpointer user_data) |
1364 | { | 1661 | { |
1365 | GtkTreeStore *store = user_data; | 1662 | GtkTreeStore *store = user_data; |
@@ -1379,39 +1676,59 @@ index 9eba7ae..83f4e57 100644 | |||
1379 | - callback = g_object_get_data(G_OBJECT(store), "callback"); | 1676 | - callback = g_object_get_data(G_OBJECT(store), "callback"); |
1380 | - if (callback) | 1677 | - if (callback) |
1381 | - callback(state, NULL); | 1678 | - callback(state, NULL); |
1382 | - | 1679 | + value = g_hash_table_lookup(hash, "Services"); |
1680 | + if (value != NULL) | ||
1681 | + property_update(store, value, "Services", service_properties); | ||
1682 | |||
1383 | - value = g_hash_table_lookup(hash, "Devices"); | 1683 | - value = g_hash_table_lookup(hash, "Devices"); |
1384 | - if (value != NULL) | 1684 | + value = g_hash_table_lookup(hash, "EnabledTechnologies"); |
1685 | if (value != NULL) | ||
1385 | - property_update(store, value, "Devices", device_properties); | 1686 | - property_update(store, value, "Devices", device_properties); |
1386 | - | 1687 | + enabled_technologies_properties(store, proxy, value); |
1688 | |||
1387 | - value = g_hash_table_lookup(hash, "Connections"); | 1689 | - value = g_hash_table_lookup(hash, "Connections"); |
1388 | + value = g_hash_table_lookup(hash, "Services"); | 1690 | + value = g_hash_table_lookup(hash, "OfflineMode"); |
1389 | if (value != NULL) | 1691 | if (value != NULL) |
1390 | - property_update(store, value, | 1692 | - property_update(store, value, |
1391 | - "Connections", connection_properties); | 1693 | - "Connections", connection_properties); |
1392 | + property_update(store, value, "Services", service_properties); | 1694 | + offline_mode_properties(store, proxy, value); |
1393 | } | 1695 | } |
1394 | 1696 | ||
1395 | DBusGProxy *connman_dbus_create_manager(DBusGConnection *conn, | 1697 | DBusGProxy *connman_dbus_create_manager(DBusGConnection *conn, |
1396 | diff --git a/common/connman-dbus.h b/common/connman-dbus.h | 1698 | diff --git a/common/connman-dbus.h b/common/connman-dbus.h |
1397 | index a9fa51c..47179da 100644 | 1699 | index a9fa51c..dc07650 100644 |
1398 | --- a/common/connman-dbus.h | 1700 | --- a/common/connman-dbus.h |
1399 | +++ b/common/connman-dbus.h | 1701 | +++ b/common/connman-dbus.h |
1400 | @@ -30,10 +30,10 @@ | 1702 | @@ -31,7 +31,7 @@ |
1401 | #define CONNMAN_MANAGER_INTERFACE CONNMAN_SERVICE ".Manager" | ||
1402 | #define CONNMAN_MANAGER_PATH "/" | 1703 | #define CONNMAN_MANAGER_PATH "/" |
1403 | 1704 | ||
1404 | -#define CONNMAN_PROFILE_INTERFACE CONNMAN_SERVICE ".Profile" | 1705 | #define CONNMAN_PROFILE_INTERFACE CONNMAN_SERVICE ".Profile" |
1405 | -#define CONNMAN_DEVICE_INTERFACE CONNMAN_SERVICE ".Device" | 1706 | -#define CONNMAN_DEVICE_INTERFACE CONNMAN_SERVICE ".Device" |
1406 | -#define CONNMAN_NETWORK_INTERFACE CONNMAN_SERVICE ".Network" | ||
1407 | -#define CONNMAN_CONNECTION_INTERFACE CONNMAN_SERVICE ".Connection" | ||
1408 | +//#define CONNMAN_PROFILE_INTERFACE CONNMAN_SERVICE ".Profile" | ||
1409 | +#define CONNMAN_SERVICE_INTERFACE CONNMAN_SERVICE ".Service" | 1707 | +#define CONNMAN_SERVICE_INTERFACE CONNMAN_SERVICE ".Service" |
1410 | +//#define CONNMAN_NETWORK_INTERFACE CONNMAN_SERVICE ".Network" | 1708 | #define CONNMAN_NETWORK_INTERFACE CONNMAN_SERVICE ".Network" |
1411 | +//#define CONNMAN_CONNECTION_INTERFACE CONNMAN_SERVICE ".Connection" | 1709 | #define CONNMAN_CONNECTION_INTERFACE CONNMAN_SERVICE ".Connection" |
1412 | 1710 | ||
1413 | DBusGProxy *connman_dbus_create_manager(DBusGConnection *connection, | 1711 | diff --git a/common/connman-dbus.xml b/common/connman-dbus.xml |
1414 | GtkTreeStore *store); | 1712 | index 9fefd55..e20cb3b 100644 |
1713 | --- a/common/connman-dbus.xml | ||
1714 | +++ b/common/connman-dbus.xml | ||
1715 | @@ -15,5 +15,16 @@ | ||
1716 | </method> | ||
1717 | <method name="Disconnect"> | ||
1718 | </method> | ||
1719 | + <method name="Remove"> | ||
1720 | + </method> | ||
1721 | + <method name="RequestScan"> | ||
1722 | + <arg type="s"/> | ||
1723 | + </method> | ||
1724 | + <method name="EnableTechnology"> | ||
1725 | + <arg type="s"/> | ||
1726 | + </method> | ||
1727 | + <method name="DisableTechnology"> | ||
1728 | + <arg type="s"/> | ||
1729 | + </method> | ||
1730 | </interface> | ||
1731 | </node> | ||
1415 | diff --git a/common/demo.c b/common/demo.c | 1732 | diff --git a/common/demo.c b/common/demo.c |
1416 | deleted file mode 100644 | 1733 | deleted file mode 100644 |
1417 | index 5e3924f..0000000 | 1734 | index 5e3924f..0000000 |
@@ -2451,7 +2768,7 @@ index 1eb1c3d..0000000 | |||
2451 | - data->dialog = dialog; | 2768 | - data->dialog = dialog; |
2452 | -} | 2769 | -} |
2453 | diff --git a/properties/advanced.h b/properties/advanced.h | 2770 | diff --git a/properties/advanced.h b/properties/advanced.h |
2454 | index f85f10d..a180b98 100644 | 2771 | index f85f10d..42b439f 100644 |
2455 | --- a/properties/advanced.h | 2772 | --- a/properties/advanced.h |
2456 | +++ b/properties/advanced.h | 2773 | +++ b/properties/advanced.h |
2457 | @@ -23,6 +23,7 @@ struct config_data { | 2774 | @@ -23,6 +23,7 @@ struct config_data { |
@@ -2462,11 +2779,13 @@ index f85f10d..a180b98 100644 | |||
2462 | GtkWidget *title; | 2779 | GtkWidget *title; |
2463 | GtkWidget *label; | 2780 | GtkWidget *label; |
2464 | GtkWidget *button; | 2781 | GtkWidget *button; |
2465 | @@ -45,15 +46,26 @@ struct config_data { | 2782 | @@ -45,15 +46,34 @@ struct config_data { |
2466 | GtkWidget *value[3]; | 2783 | GtkWidget *value[3]; |
2467 | GtkWidget *entry[3]; | 2784 | GtkWidget *entry[3]; |
2468 | } ipv4; | 2785 | } ipv4; |
2469 | + | 2786 | -}; |
2787 | |||
2788 | -void create_advanced_dialog(struct config_data *data, guint type); | ||
2470 | + struct ipv4_config ipv4_config; | 2789 | + struct ipv4_config ipv4_config; |
2471 | + | 2790 | + |
2472 | + struct { | 2791 | + struct { |
@@ -2478,25 +2797,32 @@ index f85f10d..a180b98 100644 | |||
2478 | + GtkWidget *connect; | 2797 | + GtkWidget *connect; |
2479 | + GtkWidget *disconnect; | 2798 | + GtkWidget *disconnect; |
2480 | + } wifi; | 2799 | + } wifi; |
2481 | + | ||
2482 | + gboolean connecting; | ||
2483 | }; | ||
2484 | |||
2485 | void create_advanced_dialog(struct config_data *data, guint type); | ||
2486 | 2800 | ||
2487 | -void add_ethernet_policy(GtkWidget *mainbox, struct config_data *data); | 2801 | -void add_ethernet_policy(GtkWidget *mainbox, struct config_data *data); |
2488 | -void update_ethernet_policy(struct config_data *data, guint policy); | 2802 | -void update_ethernet_policy(struct config_data *data, guint policy); |
2489 | +void add_ethernet_policy(GtkWidget *mainbox, GtkTreeIter *iter, struct config_data *data); | 2803 | + GtkWidget *ethernet_button; |
2490 | +void update_ethernet_ipv4(struct config_data *data, guint policy); | 2804 | + GtkWidget *wifi_button; |
2491 | 2805 | ||
2492 | -void add_wifi_policy(GtkWidget *mainbox, struct config_data *data); | 2806 | -void add_wifi_policy(GtkWidget *mainbox, struct config_data *data); |
2807 | + GtkWidget *scan_button; | ||
2808 | + GtkWidget *offline_button; | ||
2809 | +}; | ||
2810 | + | ||
2811 | +void add_ethernet_policy(GtkWidget *mainbox, GtkTreeIter *iter, struct config_data *data); | ||
2812 | +void update_ethernet_ipv4(struct config_data *data, guint policy); | ||
2813 | + | ||
2493 | +void add_wifi_policy(GtkWidget *mainbox, GtkTreeIter *iter, struct config_data *data); | 2814 | +void add_wifi_policy(GtkWidget *mainbox, GtkTreeIter *iter, struct config_data *data); |
2494 | void update_wifi_policy(struct config_data *data, guint policy); | 2815 | void update_wifi_policy(struct config_data *data, guint policy); |
2495 | - | 2816 | |
2496 | -gboolean separator_function(GtkTreeModel *model, | 2817 | -gboolean separator_function(GtkTreeModel *model, |
2497 | - GtkTreeIter *iter, gpointer user_data); | 2818 | - GtkTreeIter *iter, gpointer user_data); |
2819 | +void add_ethernet_switch_button(GtkWidget *mainbox, GtkTreeIter *iter, | ||
2820 | + struct config_data *data); | ||
2821 | + | ||
2822 | +void add_wifi_switch_button(GtkWidget *mainbox, GtkTreeIter *iter, | ||
2823 | + struct config_data *data); | ||
2498 | diff --git a/properties/ethernet.c b/properties/ethernet.c | 2824 | diff --git a/properties/ethernet.c b/properties/ethernet.c |
2499 | index d5c948d..1901ee6 100644 | 2825 | index d5c948d..d443ca1 100644 |
2500 | --- a/properties/ethernet.c | 2826 | --- a/properties/ethernet.c |
2501 | +++ b/properties/ethernet.c | 2827 | +++ b/properties/ethernet.c |
2502 | @@ -23,6 +23,7 @@ | 2828 | @@ -23,6 +23,7 @@ |
@@ -2507,7 +2833,7 @@ index d5c948d..1901ee6 100644 | |||
2507 | #include <glib/gi18n.h> | 2833 | #include <glib/gi18n.h> |
2508 | #include <gtk/gtk.h> | 2834 | #include <gtk/gtk.h> |
2509 | 2835 | ||
2510 | @@ -30,93 +31,167 @@ | 2836 | @@ -30,93 +31,220 @@ |
2511 | 2837 | ||
2512 | #include "advanced.h" | 2838 | #include "advanced.h" |
2513 | 2839 | ||
@@ -2562,17 +2888,68 @@ index d5c948d..1901ee6 100644 | |||
2562 | + data->ipv4_config.gateway = active ? gtk_entry_get_text(GTK_ENTRY(data->ipv4.entry[2])) : NULL; | 2888 | + data->ipv4_config.gateway = active ? gtk_entry_get_text(GTK_ENTRY(data->ipv4.entry[2])) : NULL; |
2563 | + | 2889 | + |
2564 | + connman_client_set_ipv4(data->client, data->device, &data->ipv4_config); | 2890 | + connman_client_set_ipv4(data->client, data->device, &data->ipv4_config); |
2891 | +} | ||
2892 | + | ||
2893 | +static void switch_callback(GtkWidget *editable, gpointer user_data) | ||
2894 | +{ | ||
2895 | + struct config_data *data = user_data; | ||
2896 | + const gchar *label = gtk_button_get_label(GTK_BUTTON(data->ethernet_button)); | ||
2897 | + if (g_str_equal(label, "Disable")) | ||
2898 | + connman_client_disable_technology(data->client, data->device, "ethernet"); | ||
2899 | + else if (g_str_equal(label, "Enable")) | ||
2900 | + connman_client_enable_technology(data->client, data->device, "ethernet"); | ||
2565 | } | 2901 | } |
2566 | 2902 | ||
2567 | -void add_ethernet_policy(GtkWidget *mainbox, struct config_data *data) | 2903 | -void add_ethernet_policy(GtkWidget *mainbox, struct config_data *data) |
2904 | +void add_ethernet_switch_button(GtkWidget *mainbox, GtkTreeIter *iter, | ||
2905 | + struct config_data *data) | ||
2906 | +{ | ||
2907 | + GtkWidget *vbox; | ||
2908 | + GtkWidget *table; | ||
2909 | + GtkWidget *label; | ||
2910 | + GtkWidget *buttonbox; | ||
2911 | + GtkWidget *button; | ||
2912 | + gboolean ethernet_enabled; | ||
2913 | + | ||
2914 | + gtk_tree_model_get(data->model, iter, | ||
2915 | + CONNMAN_COLUMN_ETHERNET_ENABLED, ðernet_enabled, | ||
2916 | + -1); | ||
2917 | + | ||
2918 | + vbox = gtk_vbox_new(TRUE, 0); | ||
2919 | + gtk_container_set_border_width(GTK_CONTAINER(vbox), 24); | ||
2920 | + gtk_box_pack_start(GTK_BOX(mainbox), vbox, FALSE, FALSE, 0); | ||
2921 | + | ||
2922 | + table = gtk_table_new(1, 1, TRUE); | ||
2923 | + gtk_table_set_row_spacings(GTK_TABLE(table), 10); | ||
2924 | + gtk_table_set_col_spacings(GTK_TABLE(table), 10); | ||
2925 | + gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); | ||
2926 | + | ||
2927 | + label = gtk_label_new(_("Enable/Disable Wired Networks.")); | ||
2928 | + gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1); | ||
2929 | + | ||
2930 | + buttonbox = gtk_hbutton_box_new(); | ||
2931 | + gtk_button_box_set_layout(GTK_BUTTON_BOX(buttonbox), GTK_BUTTONBOX_CENTER); | ||
2932 | + gtk_box_pack_start(GTK_BOX(mainbox), buttonbox, FALSE, FALSE, 0); | ||
2933 | + | ||
2934 | + button = gtk_button_new(); | ||
2935 | + data->ethernet_button = button; | ||
2936 | + | ||
2937 | + if (ethernet_enabled) | ||
2938 | + gtk_button_set_label(GTK_BUTTON(button), _("Disable")); | ||
2939 | + else | ||
2940 | + gtk_button_set_label(GTK_BUTTON(button), _("Enable")); | ||
2941 | + | ||
2942 | + gtk_container_add(GTK_CONTAINER(buttonbox), button); | ||
2943 | + g_signal_connect(G_OBJECT(button), "clicked", | ||
2944 | + G_CALLBACK(switch_callback), data); | ||
2945 | +} | ||
2946 | + | ||
2568 | +void add_ethernet_policy(GtkWidget *mainbox, GtkTreeIter *iter, struct config_data *data) | 2947 | +void add_ethernet_policy(GtkWidget *mainbox, GtkTreeIter *iter, struct config_data *data) |
2569 | { | 2948 | { |
2570 | GtkWidget *vbox; | 2949 | GtkWidget *vbox; |
2571 | GtkWidget *table; | 2950 | GtkWidget *table; |
2572 | GtkWidget *label; | 2951 | GtkWidget *label; |
2573 | GtkWidget *combo; | 2952 | GtkWidget *combo; |
2574 | - | ||
2575 | - vbox = gtk_vbox_new(FALSE, 0); | ||
2576 | + GtkWidget *entry; | 2953 | + GtkWidget *entry; |
2577 | + GtkWidget *button; | 2954 | + GtkWidget *button; |
2578 | + | 2955 | + |
@@ -2589,7 +2966,8 @@ index d5c948d..1901ee6 100644 | |||
2589 | + CONNMAN_COLUMN_NETMASK, &ipv4_config.netmask, | 2966 | + CONNMAN_COLUMN_NETMASK, &ipv4_config.netmask, |
2590 | + CONNMAN_COLUMN_GATEWAY, &ipv4_config.gateway, | 2967 | + CONNMAN_COLUMN_GATEWAY, &ipv4_config.gateway, |
2591 | + -1); | 2968 | + -1); |
2592 | + | 2969 | |
2970 | - vbox = gtk_vbox_new(FALSE, 0); | ||
2593 | + vbox = gtk_vbox_new(TRUE, 0); | 2971 | + vbox = gtk_vbox_new(TRUE, 0); |
2594 | gtk_container_set_border_width(GTK_CONTAINER(vbox), 24); | 2972 | gtk_container_set_border_width(GTK_CONTAINER(vbox), 24); |
2595 | gtk_box_pack_start(GTK_BOX(mainbox), vbox, FALSE, FALSE, 0); | 2973 | gtk_box_pack_start(GTK_BOX(mainbox), vbox, FALSE, FALSE, 0); |
@@ -2725,7 +3103,7 @@ index d5c948d..1901ee6 100644 | |||
2725 | break; | 3103 | break; |
2726 | default: | 3104 | default: |
2727 | gtk_combo_box_set_active(GTK_COMBO_BOX(combo), -1); | 3105 | gtk_combo_box_set_active(GTK_COMBO_BOX(combo), -1); |
2728 | @@ -124,9 +199,5 @@ void update_ethernet_policy(struct config_data *data, guint policy) | 3106 | @@ -124,9 +252,5 @@ void update_ethernet_policy(struct config_data *data, guint policy) |
2729 | } | 3107 | } |
2730 | 3108 | ||
2731 | g_signal_handlers_unblock_by_func(G_OBJECT(combo), | 3109 | g_signal_handlers_unblock_by_func(G_OBJECT(combo), |
@@ -2737,22 +3115,24 @@ index d5c948d..1901ee6 100644 | |||
2737 | + G_CALLBACK(changed_callback), data); | 3115 | + G_CALLBACK(changed_callback), data); |
2738 | } | 3116 | } |
2739 | diff --git a/properties/main.c b/properties/main.c | 3117 | diff --git a/properties/main.c b/properties/main.c |
2740 | index 01439e6..3701f16 100644 | 3118 | index 01439e6..6b389bc 100644 |
2741 | --- a/properties/main.c | 3119 | --- a/properties/main.c |
2742 | +++ b/properties/main.c | 3120 | +++ b/properties/main.c |
2743 | @@ -33,102 +33,54 @@ | 3121 | @@ -32,103 +32,139 @@ |
3122 | |||
2744 | static ConnmanClient *client; | 3123 | static ConnmanClient *client; |
2745 | static GtkWidget *interface_notebook; | 3124 | static GtkWidget *interface_notebook; |
3125 | +static struct config_data *current_data; | ||
2746 | 3126 | ||
2747 | -static void update_status(struct config_data *data, | 3127 | -static void update_status(struct config_data *data, |
2748 | - guint type, gboolean inrange, guint policy, | 3128 | - guint type, gboolean inrange, guint policy, |
2749 | - const gchar *network, const gchar *address) | 3129 | - const gchar *network, const gchar *address) |
2750 | +static void get_state_realtime(GtkTreeModel *model, GtkTreePath *path, | 3130 | +static void status_update(GtkTreeModel *model, GtkTreePath *path, |
2751 | + GtkTreeIter *iter, gpointer user_data) | 3131 | + GtkTreeIter *iter, gpointer user_data) |
2752 | { | 3132 | { |
2753 | - const char *str; | 3133 | - const char *str; |
2754 | - gchar *markup, *info = NULL; | 3134 | - gchar *markup, *info = NULL; |
2755 | - | 3135 | |
2756 | - switch (type) { | 3136 | - switch (type) { |
2757 | - case CONNMAN_TYPE_ETHERNET: | 3137 | - case CONNMAN_TYPE_ETHERNET: |
2758 | - if (inrange == TRUE) { | 3138 | - if (inrange == TRUE) { |
@@ -2760,60 +3140,91 @@ index 01439e6..3701f16 100644 | |||
2760 | - info = g_strdup_printf(_("%s is currently active " | 3140 | - info = g_strdup_printf(_("%s is currently active " |
2761 | - "and has the IP address %s."), | 3141 | - "and has the IP address %s."), |
2762 | - N_("Ethernet"), address); | 3142 | - N_("Ethernet"), address); |
3143 | - } else { | ||
3144 | - str = N_("Cable Unplugged"); | ||
3145 | - info = g_strdup_printf(_("The cable for %s is " | ||
3146 | - "not plugged in."), N_("Ethernet")); | ||
3147 | - } | ||
3148 | - break; | ||
2763 | + struct config_data *data = user_data; | 3149 | + struct config_data *data = user_data; |
2764 | + guint type, strength; | 3150 | + guint type; |
2765 | + const gchar *name = NULL, *_name = NULL, *state = NULL; | 3151 | + const char *name = NULL, *_name = NULL, *state = NULL; |
2766 | + | 3152 | + gboolean ethernet_enabled; |
2767 | + if (data->wifi.name) | 3153 | + gboolean wifi_enabled; |
2768 | + _name = gtk_label_get_text(GTK_LABEL(data->wifi.name)); | 3154 | + gboolean offline_mode; |
2769 | + | 3155 | |
2770 | + gtk_tree_model_get(model, iter, CONNMAN_COLUMN_STRENGTH, &strength, | 3156 | - case CONNMAN_TYPE_WIFI: |
3157 | - if (inrange == TRUE) { | ||
3158 | - str = N_("Connected"); | ||
3159 | - info = g_strdup_printf(_("%s is currently active " | ||
3160 | - "and has the IP address %s."), | ||
3161 | - N_("Wireless"), address); | ||
3162 | - } else | ||
3163 | - str = N_("Not Connected"); | ||
3164 | - break; | ||
3165 | + gtk_tree_model_get(model, iter, | ||
2771 | + CONNMAN_COLUMN_STATE, &state, | 3166 | + CONNMAN_COLUMN_STATE, &state, |
2772 | + CONNMAN_COLUMN_NAME, &name, | 3167 | + CONNMAN_COLUMN_NAME, &name, |
2773 | + CONNMAN_COLUMN_TYPE, &type, | 3168 | + CONNMAN_COLUMN_TYPE, &type, |
3169 | + CONNMAN_COLUMN_ETHERNET_ENABLED, ðernet_enabled, | ||
3170 | + CONNMAN_COLUMN_WIFI_ENABLED, &wifi_enabled, | ||
3171 | + CONNMAN_COLUMN_OFFLINEMODE, &offline_mode, | ||
2774 | + -1); | 3172 | + -1); |
2775 | + | 3173 | + |
2776 | + if (name && _name && g_str_equal(name, _name) == TRUE && data->connecting) { | 3174 | + if (type == CONNMAN_TYPE_WIFI) { |
3175 | + if (data->wifi.name) | ||
3176 | + _name = gtk_label_get_text(GTK_LABEL(data->wifi.name)); | ||
3177 | + | ||
3178 | + if (!(name && _name && g_str_equal(name, _name))) | ||
3179 | + return; | ||
3180 | |||
3181 | - default: | ||
3182 | - if (inrange == TRUE) | ||
3183 | - str = N_("Connected"); | ||
2777 | + if (g_str_equal(state, "failure") == TRUE) { | 3184 | + if (g_str_equal(state, "failure") == TRUE) { |
2778 | + gtk_label_set_text(GTK_LABEL(data->wifi.connect_info), | 3185 | + gtk_label_set_text(GTK_LABEL(data->wifi.connect_info), |
2779 | + _("connection failed")); | 3186 | + _("connection failed")); |
2780 | + gtk_widget_show(data->wifi.connect_info); | 3187 | + gtk_widget_show(data->wifi.connect_info); |
2781 | + gtk_widget_show(data->wifi.connect); | 3188 | + gtk_widget_show(data->wifi.connect); |
2782 | + gtk_widget_hide(data->wifi.disconnect); | 3189 | + gtk_widget_hide(data->wifi.disconnect); |
2783 | + data->connecting = 0; | ||
2784 | + } else if (g_str_equal(state, "idle") == TRUE) { | 3190 | + } else if (g_str_equal(state, "idle") == TRUE) { |
2785 | + gtk_widget_hide(data->wifi.connect_info); | 3191 | + gtk_widget_hide(data->wifi.connect_info); |
2786 | + gtk_widget_show(data->wifi.connect); | 3192 | + gtk_widget_show(data->wifi.connect); |
2787 | + gtk_widget_hide(data->wifi.disconnect); | 3193 | + gtk_widget_hide(data->wifi.disconnect); |
2788 | + data->connecting = 0; | 3194 | + } else { |
2789 | } else { | ||
2790 | - str = N_("Cable Unplugged"); | ||
2791 | - info = g_strdup_printf(_("The cable for %s is " | ||
2792 | - "not plugged in."), N_("Ethernet")); | ||
2793 | + gtk_widget_hide(data->wifi.connect_info); | 3195 | + gtk_widget_hide(data->wifi.connect_info); |
2794 | + gtk_widget_hide(data->wifi.connect); | 3196 | + gtk_widget_hide(data->wifi.connect); |
2795 | + gtk_widget_show(data->wifi.disconnect); | 3197 | + gtk_widget_show(data->wifi.disconnect); |
2796 | } | 3198 | + } |
2797 | - break; | 3199 | + } else if (type == CONNMAN_TYPE_LABEL_ETHERNET) { |
2798 | - | 3200 | + if (!data->ethernet_button) |
2799 | - case CONNMAN_TYPE_WIFI: | 3201 | + return; |
2800 | - if (inrange == TRUE) { | 3202 | + if (ethernet_enabled) |
2801 | - str = N_("Connected"); | 3203 | + gtk_button_set_label(GTK_BUTTON(data->ethernet_button), _("Disable")); |
2802 | - info = g_strdup_printf(_("%s is currently active " | 3204 | else |
2803 | - "and has the IP address %s."), | ||
2804 | - N_("Wireless"), address); | ||
2805 | - } else | ||
2806 | - str = N_("Not Connected"); | ||
2807 | - break; | ||
2808 | - | ||
2809 | - default: | ||
2810 | - if (inrange == TRUE) | ||
2811 | - str = N_("Connected"); | ||
2812 | - else | ||
2813 | - str = N_("Not Connected"); | 3205 | - str = N_("Not Connected"); |
2814 | - break; | 3206 | - break; |
3207 | + gtk_button_set_label(GTK_BUTTON(data->ethernet_button), _("Enable")); | ||
3208 | + } else if (type == CONNMAN_TYPE_LABEL_WIFI) { | ||
3209 | + if (!data->wifi_button) | ||
3210 | + return; | ||
3211 | + if (wifi_enabled) { | ||
3212 | + gtk_button_set_label(GTK_BUTTON(data->wifi_button), _("Disable")); | ||
3213 | + gtk_widget_set_sensitive(data->scan_button, 1); | ||
3214 | + } else { | ||
3215 | + gtk_button_set_label(GTK_BUTTON(data->wifi_button), _("Enable")); | ||
3216 | + gtk_widget_set_sensitive(data->scan_button, 0); | ||
3217 | + } | ||
3218 | + } else if (type == CONNMAN_TYPE_SYSCONFIG) { | ||
3219 | + if (!data->offline_button) | ||
3220 | + return; | ||
3221 | + if (offline_mode) | ||
3222 | + gtk_button_set_label(GTK_BUTTON(data->offline_button), _("OnlineMode")); | ||
3223 | + else | ||
3224 | + gtk_button_set_label(GTK_BUTTON(data->offline_button), _("OfflineMode")); | ||
2815 | } | 3225 | } |
2816 | - | 3226 | +} |
3227 | |||
2817 | - markup = g_strdup_printf("<b>%s</b>", str); | 3228 | - markup = g_strdup_printf("<b>%s</b>", str); |
2818 | - gtk_label_set_markup(GTK_LABEL(data->title), markup); | 3229 | - gtk_label_set_markup(GTK_LABEL(data->title), markup); |
2819 | - g_free(markup); | 3230 | - g_free(markup); |
@@ -2832,30 +3243,72 @@ index 01439e6..3701f16 100644 | |||
2832 | - default: | 3243 | - default: |
2833 | - break; | 3244 | - break; |
2834 | - } | 3245 | - } |
2835 | -} | 3246 | +static void set_offline_callback(GtkWidget *button, gpointer user_data) |
2836 | - | 3247 | +{ |
3248 | + struct config_data *data = user_data; | ||
3249 | + const gchar *label = gtk_button_get_label(GTK_BUTTON(data->offline_button)); | ||
3250 | + if (g_str_equal(label, "OnlineMode")) | ||
3251 | + connman_client_set_offlinemode(client, 0); | ||
3252 | + else if (g_str_equal(label, "OfflineMode")) | ||
3253 | + connman_client_set_offlinemode(client, 1); | ||
3254 | } | ||
3255 | |||
2837 | -static void update_config(struct config_data *data) | 3256 | -static void update_config(struct config_data *data) |
2838 | -{ | 3257 | +static void add_system_config(GtkWidget *mainbox, GtkTreeIter *iter, |
3258 | + struct config_data *data) | ||
3259 | { | ||
2839 | - GtkTreeIter iter; | 3260 | - GtkTreeIter iter; |
2840 | - guint type; | 3261 | - guint type; |
2841 | - gchar *network; | 3262 | - gchar *network; |
2842 | - | 3263 | + GtkWidget *vbox; |
3264 | + GtkWidget *table; | ||
3265 | + GtkWidget *label; | ||
3266 | + GtkWidget *buttonbox; | ||
3267 | + GtkWidget *button; | ||
3268 | + gboolean offline_mode; | ||
3269 | |||
2843 | - if (gtk_tree_model_get_iter_from_string(data->model, | 3270 | - if (gtk_tree_model_get_iter_from_string(data->model, |
2844 | - &iter, data->index) == FALSE) | 3271 | - &iter, data->index) == FALSE) |
2845 | - return; | 3272 | - return; |
2846 | - | 3273 | + vbox = gtk_vbox_new(TRUE, 0); |
3274 | + gtk_container_set_border_width(GTK_CONTAINER(vbox), 24); | ||
3275 | + gtk_box_pack_start(GTK_BOX(mainbox), vbox, FALSE, FALSE, 0); | ||
3276 | |||
2847 | - gtk_tree_model_get(data->model, &iter, | 3277 | - gtk_tree_model_get(data->model, &iter, |
2848 | - CONNMAN_COLUMN_TYPE, &type, | 3278 | - CONNMAN_COLUMN_TYPE, &type, |
2849 | - CONNMAN_COLUMN_NAME, &network, -1); | 3279 | - CONNMAN_COLUMN_NAME, &network, -1); |
2850 | - | 3280 | + table = gtk_table_new(1, 1, TRUE); |
3281 | + gtk_table_set_row_spacings(GTK_TABLE(table), 10); | ||
3282 | + gtk_table_set_col_spacings(GTK_TABLE(table), 10); | ||
3283 | + gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); | ||
3284 | |||
2851 | - g_free(network); | 3285 | - g_free(network); |
2852 | -} | 3286 | -} |
2853 | - | 3287 | + label = gtk_label_new(_("System Configuration")); |
3288 | + gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1); | ||
3289 | |||
2854 | -static void advanced_callback(GtkWidget *button, gpointer user_data) | 3290 | -static void advanced_callback(GtkWidget *button, gpointer user_data) |
2855 | -{ | 3291 | -{ |
2856 | - struct config_data *data = user_data; | 3292 | - struct config_data *data = user_data; |
2857 | - | 3293 | + buttonbox = gtk_hbutton_box_new(); |
3294 | + gtk_button_box_set_layout(GTK_BUTTON_BOX(buttonbox), GTK_BUTTONBOX_CENTER); | ||
3295 | + gtk_box_pack_start(GTK_BOX(mainbox), buttonbox, FALSE, FALSE, 0); | ||
3296 | + | ||
3297 | + gtk_tree_model_get(data->model, iter, | ||
3298 | + CONNMAN_COLUMN_OFFLINEMODE, &offline_mode, | ||
3299 | + -1); | ||
3300 | + | ||
3301 | + button = gtk_button_new(); | ||
3302 | + data->offline_button = button; | ||
3303 | + if (offline_mode) | ||
3304 | + gtk_button_set_label(GTK_BUTTON(button), _("OnlineMode")); | ||
3305 | + else | ||
3306 | + gtk_button_set_label(GTK_BUTTON(button), _("OfflineMode")); | ||
3307 | |||
2858 | - gtk_widget_show_all(data->dialog); | 3308 | - gtk_widget_show_all(data->dialog); |
3309 | + gtk_container_add(GTK_CONTAINER(buttonbox), button); | ||
3310 | + g_signal_connect(G_OBJECT(button), "clicked", | ||
3311 | + G_CALLBACK(set_offline_callback), data); | ||
2859 | } | 3312 | } |
2860 | 3313 | ||
2861 | static struct config_data *create_config(GtkTreeModel *model, | 3314 | static struct config_data *create_config(GtkTreeModel *model, |
@@ -2873,12 +3326,11 @@ index 01439e6..3701f16 100644 | |||
2873 | - gchar *markup, *vendor = NULL, *product = NULL; | 3326 | - gchar *markup, *vendor = NULL, *product = NULL; |
2874 | - gchar *network = NULL, *address = NULL; | 3327 | - gchar *network = NULL, *address = NULL; |
2875 | + guint type; | 3328 | + guint type; |
2876 | + gchar *vendor = NULL, *product = NULL; | 3329 | + char *state = NULL; |
2877 | + gchar *address = NULL, *state = NULL; | ||
2878 | 3330 | ||
2879 | data = g_try_new0(struct config_data, 1); | 3331 | data = g_try_new0(struct config_data, 1); |
2880 | if (data == NULL) | 3332 | if (data == NULL) |
2881 | @@ -137,14 +89,16 @@ static struct config_data *create_config(GtkTreeModel *model, | 3333 | @@ -137,15 +173,10 @@ static struct config_data *create_config(GtkTreeModel *model, |
2882 | data->client = client; | 3334 | data->client = client; |
2883 | 3335 | ||
2884 | gtk_tree_model_get(model, iter, | 3336 | gtk_tree_model_get(model, iter, |
@@ -2888,24 +3340,25 @@ index 01439e6..3701f16 100644 | |||
2888 | - CONNMAN_COLUMN_NETWORK, &network, | 3340 | - CONNMAN_COLUMN_NETWORK, &network, |
2889 | - CONNMAN_COLUMN_ADDRESS, &address, | 3341 | - CONNMAN_COLUMN_ADDRESS, &address, |
2890 | - CONNMAN_COLUMN_POLICY, &policy, -1); | 3342 | - CONNMAN_COLUMN_POLICY, &policy, -1); |
3343 | - | ||
3344 | - data->device = g_strdup(dbus_g_proxy_get_path(proxy)); | ||
3345 | - g_object_unref(proxy); | ||
2891 | + CONNMAN_COLUMN_PROXY, &proxy, | 3346 | + CONNMAN_COLUMN_PROXY, &proxy, |
2892 | + CONNMAN_COLUMN_TYPE, &type, | 3347 | + CONNMAN_COLUMN_TYPE, &type, |
2893 | + CONNMAN_COLUMN_ADDRESS, &address, | ||
2894 | + CONNMAN_COLUMN_STATE, &state, | 3348 | + CONNMAN_COLUMN_STATE, &state, |
2895 | + -1); | 3349 | + -1); |
2896 | 3350 | ||
2897 | data->device = g_strdup(dbus_g_proxy_get_path(proxy)); | ||
2898 | + data->model = model; | ||
2899 | + data->index = gtk_tree_model_get_string_from_iter(model, iter); | ||
2900 | + | ||
2901 | g_object_unref(proxy); | ||
2902 | |||
2903 | mainbox = gtk_vbox_new(FALSE, 6); | 3351 | mainbox = gtk_vbox_new(FALSE, 6); |
2904 | @@ -163,12 +117,14 @@ static struct config_data *create_config(GtkTreeModel *model, | 3352 | data->widget = mainbox; |
3353 | @@ -163,12 +194,27 @@ static struct config_data *create_config(GtkTreeModel *model, | ||
2905 | gtk_box_pack_start(GTK_BOX(mainbox), label, FALSE, FALSE, 0); | 3354 | gtk_box_pack_start(GTK_BOX(mainbox), label, FALSE, FALSE, 0); |
2906 | data->label = label; | 3355 | data->label = label; |
2907 | 3356 | ||
2908 | + data->window = user_data; | 3357 | + data->window = user_data; |
3358 | + data->model = model; | ||
3359 | + data->index = gtk_tree_model_get_string_from_iter(model, iter); | ||
3360 | + data->device = g_strdup(dbus_g_proxy_get_path(proxy)); | ||
3361 | + g_object_unref(proxy); | ||
2909 | + | 3362 | + |
2910 | switch (type) { | 3363 | switch (type) { |
2911 | case CONNMAN_TYPE_ETHERNET: | 3364 | case CONNMAN_TYPE_ETHERNET: |
@@ -2915,10 +3368,19 @@ index 01439e6..3701f16 100644 | |||
2915 | case CONNMAN_TYPE_WIFI: | 3368 | case CONNMAN_TYPE_WIFI: |
2916 | - add_wifi_policy(mainbox, data); | 3369 | - add_wifi_policy(mainbox, data); |
2917 | + add_wifi_policy(mainbox, iter, data); | 3370 | + add_wifi_policy(mainbox, iter, data); |
3371 | + break; | ||
3372 | + case CONNMAN_TYPE_LABEL_ETHERNET: | ||
3373 | + add_ethernet_switch_button(mainbox, iter, data); | ||
3374 | + break; | ||
3375 | + case CONNMAN_TYPE_LABEL_WIFI: | ||
3376 | + add_wifi_switch_button(mainbox, iter, data); | ||
3377 | + break; | ||
3378 | + case CONNMAN_TYPE_SYSCONFIG: | ||
3379 | + add_system_config(mainbox, iter, data); | ||
2918 | break; | 3380 | break; |
2919 | default: | 3381 | default: |
2920 | break; | 3382 | break; |
2921 | @@ -183,32 +139,12 @@ static struct config_data *create_config(GtkTreeModel *model, | 3383 | @@ -183,34 +229,10 @@ static struct config_data *create_config(GtkTreeModel *model, |
2922 | gtk_misc_set_alignment(GTK_MISC(label), 0.0, 1.0); | 3384 | gtk_misc_set_alignment(GTK_MISC(label), 0.0, 1.0); |
2923 | gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); | 3385 | gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); |
2924 | 3386 | ||
@@ -2941,19 +3403,21 @@ index 01439e6..3701f16 100644 | |||
2941 | - update_status(data, type, inrange, policy, network, address); | 3403 | - update_status(data, type, inrange, policy, network, address); |
2942 | - | 3404 | - |
2943 | - g_free(network); | 3405 | - g_free(network); |
2944 | g_free(address); | 3406 | - g_free(address); |
2945 | 3407 | - | |
2946 | - data->model = model; | 3408 | - data->model = model; |
2947 | - data->index = gtk_tree_model_get_string_from_iter(model, iter); | 3409 | - data->index = gtk_tree_model_get_string_from_iter(model, iter); |
2948 | - | 3410 | - |
2949 | gtk_widget_show_all(mainbox); | 3411 | gtk_widget_show_all(mainbox); |
2950 | 3412 | ||
3413 | - g_free(product); | ||
3414 | - g_free(vendor); | ||
2951 | + g_signal_connect(G_OBJECT(model), "row-changed", | 3415 | + g_signal_connect(G_OBJECT(model), "row-changed", |
2952 | + G_CALLBACK(get_state_realtime), data); | 3416 | + G_CALLBACK(status_update), data); |
2953 | g_free(product); | ||
2954 | g_free(vendor); | ||
2955 | 3417 | ||
2956 | @@ -230,67 +166,56 @@ static void select_callback(GtkTreeSelection *selection, gpointer user_data) | 3418 | return data; |
3419 | } | ||
3420 | @@ -230,112 +252,108 @@ static void select_callback(GtkTreeSelection *selection, gpointer user_data) | ||
2957 | return; | 3421 | return; |
2958 | } | 3422 | } |
2959 | 3423 | ||
@@ -2961,42 +3425,50 @@ index 01439e6..3701f16 100644 | |||
2961 | - data = create_config(model, &iter, user_data); | 3425 | - data = create_config(model, &iter, user_data); |
2962 | - if (data == NULL) | 3426 | - if (data == NULL) |
2963 | - return; | 3427 | - return; |
2964 | - | 3428 | + if (current_data) { |
3429 | + g_signal_handlers_disconnect_by_func(G_OBJECT(model), | ||
3430 | + G_CALLBACK(status_update), current_data); | ||
3431 | + g_free(current_data); | ||
3432 | + } | ||
3433 | + data = create_config(model, &iter, user_data); | ||
3434 | + if (data == NULL) | ||
3435 | + return; | ||
3436 | |||
2965 | - page = gtk_notebook_append_page(GTK_NOTEBOOK(notebook), | 3437 | - page = gtk_notebook_append_page(GTK_NOTEBOOK(notebook), |
2966 | - data->widget, NULL); | 3438 | - data->widget, NULL); |
2967 | - } else { | 3439 | - } else { |
2968 | - update_config(data); | 3440 | - update_config(data); |
2969 | - | 3441 | + current_data = data; |
3442 | |||
2970 | - page = gtk_notebook_page_num(GTK_NOTEBOOK(notebook), | 3443 | - page = gtk_notebook_page_num(GTK_NOTEBOOK(notebook), |
2971 | - data->widget); | 3444 | - data->widget); |
2972 | - } | 3445 | - } |
2973 | + data = create_config(model, &iter, user_data); | ||
2974 | + if (data == NULL) | ||
2975 | + return; | ||
2976 | |||
2977 | + page = gtk_notebook_append_page(GTK_NOTEBOOK(notebook), | 3446 | + page = gtk_notebook_append_page(GTK_NOTEBOOK(notebook), |
2978 | + data->widget, NULL); | 3447 | + data->widget, NULL); |
2979 | gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook), page); | ||
2980 | 3448 | ||
3449 | gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook), page); | ||
3450 | - | ||
2981 | gtk_widget_show(notebook); | 3451 | gtk_widget_show(notebook); |
2982 | } | 3452 | } |
2983 | 3453 | ||
2984 | -static void row_changed(GtkTreeModel *model, GtkTreePath *path, | 3454 | -static void row_changed(GtkTreeModel *model, GtkTreePath *path, |
2985 | - GtkTreeIter *iter, gpointer user_data) | 3455 | - GtkTreeIter *iter, gpointer user_data) |
2986 | -{ | 3456 | +static void device_to_text(GtkTreeViewColumn *column, GtkCellRenderer *cell, |
2987 | - guint type; | 3457 | + GtkTreeModel *model, GtkTreeIter *iter, gpointer data) |
3458 | { | ||
3459 | guint type; | ||
2988 | - gboolean powered, inrange; | 3460 | - gboolean powered, inrange; |
2989 | - | 3461 | + char *markup, *name, *state; |
2990 | - gtk_tree_model_get(model, iter, CONNMAN_COLUMN_TYPE, &type, | 3462 | + const char *title; |
3463 | |||
3464 | gtk_tree_model_get(model, iter, CONNMAN_COLUMN_TYPE, &type, | ||
2991 | - CONNMAN_COLUMN_ENABLED, &powered, | 3465 | - CONNMAN_COLUMN_ENABLED, &powered, |
2992 | - CONNMAN_COLUMN_INRANGE, &inrange, -1); | 3466 | - CONNMAN_COLUMN_INRANGE, &inrange, -1); |
2993 | -} | 3467 | -} |
2994 | - | 3468 | - |
2995 | -static void state_to_icon(GtkTreeViewColumn *column, GtkCellRenderer *cell, | 3469 | -static void state_to_icon(GtkTreeViewColumn *column, GtkCellRenderer *cell, |
2996 | - GtkTreeModel *model, GtkTreeIter *iter, gpointer data) | 3470 | - GtkTreeModel *model, GtkTreeIter *iter, gpointer data) |
2997 | +static void strength_to_icon(GtkTreeViewColumn *column, GtkCellRenderer *cell, | 3471 | -{ |
2998 | + GtkTreeModel *model, GtkTreeIter *iter, gpointer data) | ||
2999 | { | ||
3000 | - gboolean inrange; | 3472 | - gboolean inrange; |
3001 | - | 3473 | - |
3002 | - gtk_tree_model_get(model, iter, CONNMAN_COLUMN_INRANGE, &inrange, -1); | 3474 | - gtk_tree_model_get(model, iter, CONNMAN_COLUMN_INRANGE, &inrange, -1); |
@@ -3005,36 +3477,17 @@ index 01439e6..3701f16 100644 | |||
3005 | - g_object_set(cell, "icon-name", GTK_STOCK_YES, NULL); | 3477 | - g_object_set(cell, "icon-name", GTK_STOCK_YES, NULL); |
3006 | - else | 3478 | - else |
3007 | - g_object_set(cell, "icon-name", NULL, NULL); | 3479 | - g_object_set(cell, "icon-name", NULL, NULL); |
3008 | + GdkPixbuf *pix; | 3480 | -} |
3009 | + guint strength, type; | 3481 | - |
3010 | + gchar *name; | ||
3011 | + | ||
3012 | + gtk_tree_model_get(model, iter, CONNMAN_COLUMN_STRENGTH, &strength, | ||
3013 | + CONNMAN_COLUMN_TYPE, &type, | ||
3014 | + -1); | ||
3015 | + | ||
3016 | + if (type == CONNMAN_TYPE_WIFI) { | ||
3017 | + name = (gchar *)g_strdup_printf("%s/connman-signal-0%d.png", | ||
3018 | + ICONDIR, (strength-1)/20+1); | ||
3019 | + pix = gdk_pixbuf_new_from_file(name, NULL); | ||
3020 | + g_object_set(cell, "pixbuf", pix, NULL); | ||
3021 | + } else | ||
3022 | + g_object_set(cell, "pixbuf", NULL, NULL); | ||
3023 | } | ||
3024 | |||
3025 | -static void type_to_text(GtkTreeViewColumn *column, GtkCellRenderer *cell, | 3482 | -static void type_to_text(GtkTreeViewColumn *column, GtkCellRenderer *cell, |
3026 | - GtkTreeModel *model, GtkTreeIter *iter, gpointer data) | 3483 | - GtkTreeModel *model, GtkTreeIter *iter, gpointer data) |
3027 | +static void device_to_text(GtkTreeViewColumn *column, GtkCellRenderer *cell, | 3484 | -{ |
3028 | + GtkTreeModel *model, GtkTreeIter *iter, gpointer data) | 3485 | - guint type; |
3029 | { | ||
3030 | guint type; | ||
3031 | - gboolean powered, inrange; | 3486 | - gboolean powered, inrange; |
3032 | - gchar *markup; | 3487 | - gchar *markup; |
3033 | - const char *title, *info; | 3488 | - const char *title, *info; |
3034 | + gchar *markup, *name, *state; | 3489 | - |
3035 | + const char *title; | 3490 | - gtk_tree_model_get(model, iter, CONNMAN_COLUMN_TYPE, &type, |
3036 | |||
3037 | gtk_tree_model_get(model, iter, CONNMAN_COLUMN_TYPE, &type, | ||
3038 | - CONNMAN_COLUMN_ENABLED, &powered, | 3491 | - CONNMAN_COLUMN_ENABLED, &powered, |
3039 | - CONNMAN_COLUMN_INRANGE, &inrange, -1); | 3492 | - CONNMAN_COLUMN_INRANGE, &inrange, -1); |
3040 | + CONNMAN_COLUMN_NAME, &name, | 3493 | + CONNMAN_COLUMN_NAME, &name, |
@@ -3044,70 +3497,102 @@ index 01439e6..3701f16 100644 | |||
3044 | switch (type) { | 3497 | switch (type) { |
3045 | case CONNMAN_TYPE_ETHERNET: | 3498 | case CONNMAN_TYPE_ETHERNET: |
3046 | title = N_("Ethernet"); | 3499 | title = N_("Ethernet"); |
3500 | + markup = g_strdup_printf(" %s\n", title); | ||
3047 | break; | 3501 | break; |
3048 | case CONNMAN_TYPE_WIFI: | 3502 | case CONNMAN_TYPE_WIFI: |
3049 | - title = N_("Wireless"); | 3503 | - title = N_("Wireless"); |
3050 | + /* Show the AP name */ | 3504 | + /* Show the AP name */ |
3051 | + title = N_(name); | 3505 | + title = N_(name); |
3506 | + if (g_str_equal(state, "association") == TRUE) | ||
3507 | + state = "associating..."; | ||
3508 | + else if (g_str_equal(state, "configuration") == TRUE) | ||
3509 | + state = "configurating..."; | ||
3510 | + else if (g_str_equal(state, "ready") == TRUE || | ||
3511 | + g_str_equal(state, "online") == TRUE) | ||
3512 | + state = "connnected"; | ||
3513 | + else | ||
3514 | + state = ""; | ||
3515 | + markup = g_strdup_printf(" %s\n %s", title, state); | ||
3516 | + | ||
3052 | break; | 3517 | break; |
3053 | case CONNMAN_TYPE_WIMAX: | 3518 | case CONNMAN_TYPE_WIMAX: |
3054 | title = N_("WiMAX"); | 3519 | title = N_("WiMAX"); |
3055 | @@ -303,21 +228,27 @@ static void type_to_text(GtkTreeViewColumn *column, GtkCellRenderer *cell, | 3520 | + markup = g_strdup_printf(" %s\n", title); |
3521 | break; | ||
3522 | case CONNMAN_TYPE_BLUETOOTH: | ||
3523 | title = N_("Bluetooth"); | ||
3524 | + markup = g_strdup_printf(" %s\n", title); | ||
3525 | + break; | ||
3526 | + case CONNMAN_TYPE_LABEL_ETHERNET: | ||
3527 | + title = N_("Wired Networks"); | ||
3528 | + markup = g_strdup_printf("<b>\n%s\n</b>", title); | ||
3529 | + break; | ||
3530 | + case CONNMAN_TYPE_LABEL_WIFI: | ||
3531 | + title = N_("Wireless Networks"); | ||
3532 | + markup = g_strdup_printf("<b>\n%s\n</b>", title); | ||
3533 | + break; | ||
3534 | + case CONNMAN_TYPE_SYSCONFIG: | ||
3535 | + title = N_("System Configuration"); | ||
3536 | + markup = g_strdup_printf("<b>\n%s\n</b>", title); | ||
3537 | break; | ||
3538 | default: | ||
3539 | title = N_("Unknown"); | ||
3540 | + markup = g_strdup_printf(" %s\n", title); | ||
3056 | break; | 3541 | break; |
3057 | } | 3542 | } |
3058 | 3543 | ||
3059 | - if (powered == TRUE) { | 3544 | - if (powered == TRUE) { |
3060 | - if (inrange == TRUE) | 3545 | - if (inrange == TRUE) |
3061 | - info = N_("Connected"); | 3546 | - info = N_("Connected"); |
3062 | + /* Set wifi connection status. */ | 3547 | - else |
3063 | + if (type == CONNMAN_TYPE_WIFI) { | ||
3064 | + if (g_str_equal(state, "association") == TRUE) | ||
3065 | + state = "associating..."; | ||
3066 | + else if (g_str_equal(state, "configuration") == TRUE) | ||
3067 | + state = "configurating..."; | ||
3068 | + else if (g_str_equal(state, "ready") == TRUE || | ||
3069 | + g_str_equal(state, "online") == TRUE) | ||
3070 | + state = "connnected"; | ||
3071 | else | ||
3072 | - info = N_("Not Connected"); | 3548 | - info = N_("Not Connected"); |
3073 | + state = ""; | 3549 | - } else |
3074 | + markup = g_strdup_printf("<b>%s</b>\n%s\n", title, state); | ||
3075 | } else | ||
3076 | - info = N_("Disabled"); | 3550 | - info = N_("Disabled"); |
3077 | + markup = g_strdup_printf("<b>%s</b>\n", title); | 3551 | - |
3078 | |||
3079 | - markup = g_strdup_printf("<b>%s</b>\n<small>%s</small>", title, info); | 3552 | - markup = g_strdup_printf("<b>%s</b>\n<small>%s</small>", title, info); |
3080 | g_object_set(cell, "markup", markup, NULL); | 3553 | g_object_set(cell, "markup", markup, NULL); |
3081 | g_free(markup); | 3554 | - g_free(markup); |
3082 | } | 3555 | } |
3083 | 3556 | ||
3084 | static void type_to_icon(GtkTreeViewColumn *column, GtkCellRenderer *cell, | 3557 | static void type_to_icon(GtkTreeViewColumn *column, GtkCellRenderer *cell, |
3085 | - GtkTreeModel *model, GtkTreeIter *iter, gpointer data) | 3558 | - GtkTreeModel *model, GtkTreeIter *iter, gpointer data) |
3086 | + GtkTreeModel *model, GtkTreeIter *iter, gpointer data) | 3559 | + GtkTreeModel *model, GtkTreeIter *iter, gpointer data) |
3087 | { | 3560 | { |
3088 | guint type; | 3561 | - guint type; |
3562 | + guint type, strength; | ||
3563 | + char *name; | ||
3564 | |||
3565 | - gtk_tree_model_get(model, iter, CONNMAN_COLUMN_TYPE, &type, -1); | ||
3566 | + gtk_tree_model_get(model, iter, CONNMAN_COLUMN_TYPE, &type, | ||
3567 | + CONNMAN_COLUMN_STRENGTH, &strength, | ||
3568 | + -1); | ||
3089 | 3569 | ||
3090 | @@ -326,16 +257,16 @@ static void type_to_icon(GtkTreeViewColumn *column, GtkCellRenderer *cell, | ||
3091 | switch (type) { | 3570 | switch (type) { |
3092 | case CONNMAN_TYPE_ETHERNET: | 3571 | - case CONNMAN_TYPE_ETHERNET: |
3572 | + case CONNMAN_TYPE_WIFI: | ||
3573 | + name = g_strdup_printf("connman-signal-0%d", (strength-1)/20+1); | ||
3574 | + g_object_set(cell, "icon-name", name, | ||
3575 | + "stock-size", 4, NULL); | ||
3576 | + break; | ||
3577 | + case CONNMAN_TYPE_LABEL_ETHERNET: | ||
3093 | g_object_set(cell, "icon-name", "network-wired", | 3578 | g_object_set(cell, "icon-name", "network-wired", |
3094 | - "stock-size", 5, NULL); | 3579 | - "stock-size", 5, NULL); |
3095 | + "stock-size", 5, NULL); | 3580 | + "stock-size", 4, NULL); |
3096 | break; | 3581 | break; |
3097 | case CONNMAN_TYPE_WIFI: | 3582 | - case CONNMAN_TYPE_WIFI: |
3098 | case CONNMAN_TYPE_WIMAX: | 3583 | - case CONNMAN_TYPE_WIMAX: |
3584 | + case CONNMAN_TYPE_LABEL_WIFI: | ||
3099 | g_object_set(cell, "icon-name", "network-wireless", | 3585 | g_object_set(cell, "icon-name", "network-wireless", |
3100 | - "stock-size", 5, NULL); | 3586 | - "stock-size", 5, NULL); |
3101 | + "stock-size", 5, NULL); | 3587 | - break; |
3102 | break; | 3588 | - case CONNMAN_TYPE_BLUETOOTH: |
3103 | case CONNMAN_TYPE_BLUETOOTH: | 3589 | - g_object_set(cell, "icon-name", "bluetooth", |
3104 | g_object_set(cell, "icon-name", "bluetooth", | ||
3105 | - "stock-size", 5, NULL); | 3590 | - "stock-size", 5, NULL); |
3106 | + "stock-size", 5, NULL); | 3591 | + "stock-size", 4, NULL); |
3107 | break; | 3592 | break; |
3108 | default: | 3593 | default: |
3109 | g_object_set(cell, "icon-name", NULL, NULL); | 3594 | g_object_set(cell, "icon-name", NULL, NULL); |
3110 | @@ -362,9 +293,9 @@ static GtkWidget *create_interfaces(GtkWidget *window) | 3595 | @@ -362,40 +380,34 @@ static GtkWidget *create_interfaces(GtkWidget *window) |
3111 | 3596 | ||
3112 | scrolled = gtk_scrolled_window_new(NULL, NULL); | 3597 | scrolled = gtk_scrolled_window_new(NULL, NULL); |
3113 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled), | 3598 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled), |
@@ -3119,7 +3604,18 @@ index 01439e6..3701f16 100644 | |||
3119 | gtk_box_pack_start(GTK_BOX(hbox), scrolled, FALSE, TRUE, 0); | 3604 | gtk_box_pack_start(GTK_BOX(hbox), scrolled, FALSE, TRUE, 0); |
3120 | 3605 | ||
3121 | tree = gtk_tree_view_new(); | 3606 | tree = gtk_tree_view_new(); |
3122 | @@ -381,21 +312,19 @@ static GtkWidget *create_interfaces(GtkWidget *window) | 3607 | gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(tree), FALSE); |
3608 | gtk_tree_view_set_show_expanders(GTK_TREE_VIEW(tree), FALSE); | ||
3609 | gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(tree), TRUE); | ||
3610 | - gtk_widget_set_size_request(tree, 180, -1); | ||
3611 | + gtk_widget_set_size_request(tree, 220, -1); | ||
3612 | gtk_container_add(GTK_CONTAINER(scrolled), tree); | ||
3613 | |||
3614 | |||
3615 | column = gtk_tree_view_column_new(); | ||
3616 | gtk_tree_view_column_set_expand(column, TRUE); | ||
3617 | gtk_tree_view_column_set_spacing(column, 4); | ||
3618 | + gtk_tree_view_column_set_alignment(column, 0); | ||
3123 | gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column); | 3619 | gtk_tree_view_append_column(GTK_TREE_VIEW(tree), column); |
3124 | 3620 | ||
3125 | renderer = gtk_cell_renderer_pixbuf_new(); | 3621 | renderer = gtk_cell_renderer_pixbuf_new(); |
@@ -3127,28 +3623,30 @@ index 01439e6..3701f16 100644 | |||
3127 | gtk_tree_view_column_pack_start(column, renderer, FALSE); | 3623 | gtk_tree_view_column_pack_start(column, renderer, FALSE); |
3128 | gtk_tree_view_column_set_cell_data_func(column, renderer, | 3624 | gtk_tree_view_column_set_cell_data_func(column, renderer, |
3129 | - state_to_icon, NULL, NULL); | 3625 | - state_to_icon, NULL, NULL); |
3130 | - | 3626 | + type_to_icon, NULL, NULL); |
3131 | - renderer = gtk_cell_renderer_text_new(); | 3627 | |
3628 | renderer = gtk_cell_renderer_text_new(); | ||
3132 | - gtk_tree_view_column_pack_start(column, renderer, TRUE); | 3629 | - gtk_tree_view_column_pack_start(column, renderer, TRUE); |
3133 | - gtk_tree_view_column_set_cell_data_func(column, renderer, | 3630 | - gtk_tree_view_column_set_cell_data_func(column, renderer, |
3134 | - type_to_text, NULL, NULL); | 3631 | - type_to_text, NULL, NULL); |
3135 | + strength_to_icon, NULL, NULL); | 3632 | - |
3136 | 3633 | - renderer = gtk_cell_renderer_pixbuf_new(); | |
3137 | renderer = gtk_cell_renderer_pixbuf_new(); | ||
3138 | - gtk_tree_view_column_pack_end(column, renderer, FALSE); | 3634 | - gtk_tree_view_column_pack_end(column, renderer, FALSE); |
3139 | + gtk_tree_view_column_pack_start(column, renderer, FALSE); | 3635 | + gtk_tree_view_column_pack_start(column, renderer, FALSE); |
3140 | gtk_tree_view_column_set_cell_data_func(column, renderer, | 3636 | gtk_tree_view_column_set_cell_data_func(column, renderer, |
3141 | - type_to_icon, NULL, NULL); | 3637 | - type_to_icon, NULL, NULL); |
3142 | + type_to_icon, NULL, NULL); | 3638 | - |
3143 | |||
3144 | + renderer = gtk_cell_renderer_text_new(); | ||
3145 | + gtk_tree_view_column_pack_start(column, renderer, FALSE); | ||
3146 | + gtk_tree_view_column_set_cell_data_func(column, renderer, | ||
3147 | + device_to_text, NULL, NULL); | 3639 | + device_to_text, NULL, NULL); |
3148 | 3640 | ||
3149 | interface_notebook = gtk_notebook_new(); | 3641 | interface_notebook = gtk_notebook_new(); |
3150 | gtk_notebook_set_show_tabs(GTK_NOTEBOOK(interface_notebook), FALSE); | 3642 | gtk_notebook_set_show_tabs(GTK_NOTEBOOK(interface_notebook), FALSE); |
3151 | @@ -410,16 +339,13 @@ static GtkWidget *create_interfaces(GtkWidget *window) | 3643 | @@ -405,21 +417,19 @@ static GtkWidget *create_interfaces(GtkWidget *window) |
3644 | |||
3645 | model = connman_client_get_device_model(client); | ||
3646 | gtk_tree_view_set_model(GTK_TREE_VIEW(tree), model); | ||
3647 | + | ||
3648 | g_object_unref(model); | ||
3649 | |||
3152 | selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)); | 3650 | selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)); |
3153 | gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE); | 3651 | gtk_tree_selection_set_mode(selection, GTK_SELECTION_SINGLE); |
3154 | g_signal_connect(G_OBJECT(selection), "changed", | 3652 | g_signal_connect(G_OBJECT(selection), "changed", |
@@ -3167,7 +3665,7 @@ index 01439e6..3701f16 100644 | |||
3167 | { | 3665 | { |
3168 | gtk_widget_destroy(window); | 3666 | gtk_widget_destroy(window); |
3169 | 3667 | ||
3170 | @@ -451,7 +377,7 @@ static GtkWidget *create_window(void) | 3668 | @@ -451,7 +461,7 @@ static GtkWidget *create_window(void) |
3171 | gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); | 3669 | gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); |
3172 | gtk_window_set_default_size(GTK_WINDOW(window), 580, 380); | 3670 | gtk_window_set_default_size(GTK_WINDOW(window), 580, 380); |
3173 | g_signal_connect(G_OBJECT(window), "delete-event", | 3671 | g_signal_connect(G_OBJECT(window), "delete-event", |
@@ -3176,7 +3674,7 @@ index 01439e6..3701f16 100644 | |||
3176 | 3674 | ||
3177 | vbox = gtk_vbox_new(FALSE, 12); | 3675 | vbox = gtk_vbox_new(FALSE, 12); |
3178 | gtk_container_set_border_width(GTK_CONTAINER(vbox), 12); | 3676 | gtk_container_set_border_width(GTK_CONTAINER(vbox), 12); |
3179 | @@ -467,12 +393,12 @@ static GtkWidget *create_window(void) | 3677 | @@ -467,12 +477,12 @@ static GtkWidget *create_window(void) |
3180 | button = gtk_button_new_from_stock(GTK_STOCK_CLOSE); | 3678 | button = gtk_button_new_from_stock(GTK_STOCK_CLOSE); |
3181 | gtk_container_add(GTK_CONTAINER(buttonbox), button); | 3679 | gtk_container_add(GTK_CONTAINER(buttonbox), button); |
3182 | g_signal_connect(G_OBJECT(button), "clicked", | 3680 | g_signal_connect(G_OBJECT(button), "clicked", |
@@ -3191,8 +3689,17 @@ index 01439e6..3701f16 100644 | |||
3191 | 3689 | ||
3192 | gtk_widget_show_all(window); | 3690 | gtk_widget_show_all(window); |
3193 | 3691 | ||
3692 | @@ -487,6 +497,8 @@ int main(int argc, char *argv[]) | ||
3693 | bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); | ||
3694 | textdomain(GETTEXT_PACKAGE); | ||
3695 | |||
3696 | + current_data = NULL; | ||
3697 | + | ||
3698 | gtk_init(&argc, &argv); | ||
3699 | |||
3700 | gtk_window_set_default_icon_name("network-wireless"); | ||
3194 | diff --git a/properties/wifi.c b/properties/wifi.c | 3701 | diff --git a/properties/wifi.c b/properties/wifi.c |
3195 | index 320dce4..3d3cee8 100644 | 3702 | index 320dce4..42fe7d2 100644 |
3196 | --- a/properties/wifi.c | 3703 | --- a/properties/wifi.c |
3197 | +++ b/properties/wifi.c | 3704 | +++ b/properties/wifi.c |
3198 | @@ -23,6 +23,7 @@ | 3705 | @@ -23,6 +23,7 @@ |
@@ -3228,7 +3735,7 @@ index 320dce4..3d3cee8 100644 | |||
3228 | static void changed_callback(GtkWidget *editable, gpointer user_data) | 3735 | static void changed_callback(GtkWidget *editable, gpointer user_data) |
3229 | { | 3736 | { |
3230 | struct config_data *data = user_data; | 3737 | struct config_data *data = user_data; |
3231 | @@ -37,98 +56,310 @@ static void changed_callback(GtkWidget *editable, gpointer user_data) | 3738 | @@ -37,98 +56,357 @@ static void changed_callback(GtkWidget *editable, gpointer user_data) |
3232 | 3739 | ||
3233 | active = gtk_combo_box_get_active(GTK_COMBO_BOX(data->policy.config)); | 3740 | active = gtk_combo_box_get_active(GTK_COMBO_BOX(data->policy.config)); |
3234 | 3741 | ||
@@ -3251,92 +3758,163 @@ index 320dce4..3d3cee8 100644 | |||
3251 | +static void connect_reply_cb(DBusGProxy *proxy, GError *error, | 3758 | +static void connect_reply_cb(DBusGProxy *proxy, GError *error, |
3252 | + gpointer user_data) | 3759 | + gpointer user_data) |
3253 | +{ | 3760 | +{ |
3254 | + struct config_data *data = user_data; | ||
3255 | + if (error) | 3761 | + if (error) |
3256 | + { | ||
3257 | + gtk_label_set_text(GTK_LABEL(data->wifi.connect_info), | ||
3258 | + _("connection failed")); | ||
3259 | + gtk_widget_show(data->wifi.connect_info); | ||
3260 | + gtk_widget_show(data->wifi.connect); | ||
3261 | + gtk_widget_hide(data->wifi.disconnect); | ||
3262 | + data->connecting = 0; | ||
3263 | + g_error_free(error); | 3762 | + g_error_free(error); |
3264 | + } | ||
3265 | +} | 3763 | +} |
3266 | + | 3764 | + |
3267 | +static void connect_callback(GtkWidget *editable, gpointer user_data) | 3765 | +static void connect_callback(GtkWidget *editable, gpointer user_data) |
3268 | +{ | 3766 | +{ |
3269 | + struct config_data *data = user_data; | 3767 | + struct config_data *data = user_data; |
3270 | + | 3768 | + |
3271 | + const gchar *passphrase; | ||
3272 | + | ||
3273 | + gboolean ret; | 3769 | + gboolean ret; |
3274 | + gint active; | 3770 | + gint active; |
3275 | + | 3771 | + |
3276 | + gtk_widget_hide(data->wifi.connect); | ||
3277 | + gtk_widget_show(data->wifi.disconnect); | ||
3278 | + | ||
3279 | + data->connecting = 1; | ||
3280 | + | ||
3281 | + if (data->wifi.passphrase) { | 3772 | + if (data->wifi.passphrase) { |
3282 | + passphrase = gtk_entry_get_text(GTK_ENTRY(data->wifi.passphrase)); | 3773 | + char *passphrase; |
3774 | + passphrase = (gchar *)gtk_entry_get_text(GTK_ENTRY(data->wifi.passphrase)); | ||
3283 | + ret = connman_client_set_passphrase(data->client, data->device, | 3775 | + ret = connman_client_set_passphrase(data->client, data->device, |
3284 | + passphrase); | 3776 | + passphrase); |
3285 | + } | ||
3286 | + | 3777 | + |
3287 | + connman_client_connect_async(data->client, data->device, connect_reply_cb, data); | 3778 | + if (ret == FALSE) { |
3779 | + return; | ||
3780 | + } | ||
3781 | } | ||
3288 | + | 3782 | + |
3289 | + active = gtk_combo_box_get_active(GTK_COMBO_BOX(data->policy.config)); | 3783 | + active = gtk_combo_box_get_active(GTK_COMBO_BOX(data->policy.config)); |
3290 | + data->ipv4_config.method = active ? "manual" : "dhcp"; | 3784 | + data->ipv4_config.method = active ? "manual" : "dhcp"; |
3291 | + data->ipv4_config.address = active ? gtk_entry_get_text(GTK_ENTRY(data->ipv4.entry[0])) : NULL; | 3785 | + data->ipv4_config.address = active ? gtk_entry_get_text(GTK_ENTRY(data->ipv4.entry[0])) : NULL; |
3292 | + data->ipv4_config.netmask = active ? gtk_entry_get_text(GTK_ENTRY(data->ipv4.entry[1])) : NULL; | 3786 | + data->ipv4_config.netmask = active ? gtk_entry_get_text(GTK_ENTRY(data->ipv4.entry[1])) : NULL; |
3293 | + data->ipv4_config.gateway = active ? gtk_entry_get_text(GTK_ENTRY(data->ipv4.entry[2])) : NULL; | 3787 | + data->ipv4_config.gateway = active ? gtk_entry_get_text(GTK_ENTRY(data->ipv4.entry[2])) : NULL; |
3788 | + ret = connman_client_set_ipv4(data->client, data->device, &data->ipv4_config); | ||
3789 | + if (ret == FALSE) { | ||
3790 | + return; | ||
3791 | + } | ||
3294 | + | 3792 | + |
3295 | + connman_client_set_ipv4(data->client, data->device, &data->ipv4_config); | 3793 | + connman_client_connect_async(data->client, data->device, connect_reply_cb, data); |
3794 | } | ||
3795 | |||
3796 | -void add_wifi_policy(GtkWidget *mainbox, struct config_data *data) | ||
3797 | +static void disconnect_callback(GtkWidget *editable, gpointer user_data) | ||
3798 | +{ | ||
3799 | + struct config_data *data = user_data; | ||
3296 | + | 3800 | + |
3801 | + connman_client_disconnect(data->client, data->device); | ||
3297 | +} | 3802 | +} |
3298 | + | 3803 | + |
3299 | +static void disconnect_callback(GtkWidget *editable, gpointer user_data) | 3804 | +static void switch_callback(GtkWidget *editable, gpointer user_data) |
3300 | +{ | 3805 | +{ |
3301 | + struct config_data *data = user_data; | 3806 | + struct config_data *data = user_data; |
3302 | + gboolean ret; | 3807 | + const gchar *label = gtk_button_get_label(GTK_BUTTON(data->wifi_button)); |
3303 | + | 3808 | + |
3304 | + data->connecting = 0; | 3809 | + if (g_str_equal(label, "Disable")) |
3810 | + connman_client_disable_technology(data->client, data->device, "wifi"); | ||
3811 | + else | ||
3812 | + connman_client_enable_technology(data->client, data->device, "wifi"); | ||
3813 | +} | ||
3305 | + | 3814 | + |
3306 | + ret = connman_client_disconnect(data->client, data->device); | 3815 | +static void scan_reply_cb(DBusGProxy *proxy, GError *error, |
3307 | + if (ret == TRUE) { | 3816 | + gpointer user_data) |
3308 | + gtk_widget_show(data->wifi.connect); | 3817 | +{ |
3309 | + gtk_widget_hide(data->wifi.disconnect); | 3818 | + GtkWidget *button = user_data; |
3310 | } | 3819 | + gtk_widget_set_sensitive(button, 1); |
3311 | } | 3820 | + |
3312 | 3821 | + if (error) | |
3313 | -void add_wifi_policy(GtkWidget *mainbox, struct config_data *data) | 3822 | + g_error_free(error); |
3314 | +static void wifi_ipconfig(GtkWidget *table, struct config_data *data, GtkTreeIter *iter) | 3823 | +} |
3824 | + | ||
3825 | +static void scan_callback(GtkWidget *button, gpointer user_data) | ||
3826 | +{ | ||
3827 | + struct config_data *data = user_data; | ||
3828 | + gtk_widget_set_sensitive(button, 0); | ||
3829 | + connman_client_request_scan(data->client, "", scan_reply_cb, button); | ||
3830 | +} | ||
3831 | + | ||
3832 | +void add_wifi_switch_button(GtkWidget *mainbox, GtkTreeIter *iter, | ||
3833 | + struct config_data *data) | ||
3315 | { | 3834 | { |
3316 | GtkWidget *vbox; | 3835 | GtkWidget *vbox; |
3317 | - GtkWidget *table; | 3836 | GtkWidget *table; |
3318 | + GtkWidget *dialog; | ||
3319 | + GtkWidget *entry; | ||
3320 | GtkWidget *label; | 3837 | GtkWidget *label; |
3321 | GtkWidget *combo; | 3838 | - GtkWidget *combo; |
3322 | + GtkWidget *buttonbox; | 3839 | + GtkWidget *buttonbox; |
3323 | + GtkWidget *button; | 3840 | + GtkWidget *button; |
3324 | + DBusGProxy *proxy; | 3841 | + gboolean wifi_enabled; |
3325 | 3842 | ||
3326 | - vbox = gtk_vbox_new(FALSE, 0); | 3843 | - vbox = gtk_vbox_new(FALSE, 0); |
3327 | - gtk_container_set_border_width(GTK_CONTAINER(vbox), 24); | 3844 | + gtk_tree_model_get(data->model, iter, |
3328 | - gtk_box_pack_start(GTK_BOX(mainbox), vbox, FALSE, FALSE, 0); | 3845 | + CONNMAN_COLUMN_WIFI_ENABLED, &wifi_enabled, |
3846 | + -1); | ||
3847 | + | ||
3848 | + vbox = gtk_vbox_new(TRUE, 0); | ||
3849 | gtk_container_set_border_width(GTK_CONTAINER(vbox), 24); | ||
3850 | gtk_box_pack_start(GTK_BOX(mainbox), vbox, FALSE, FALSE, 0); | ||
3851 | |||
3852 | - table = gtk_table_new(2, 4, FALSE); | ||
3853 | - gtk_table_set_row_spacings(GTK_TABLE(table), 8); | ||
3854 | - gtk_table_set_col_spacings(GTK_TABLE(table), 8); | ||
3855 | + table = gtk_table_new(1, 1, TRUE); | ||
3856 | + gtk_table_set_row_spacings(GTK_TABLE(table), 10); | ||
3857 | + gtk_table_set_col_spacings(GTK_TABLE(table), 10); | ||
3858 | gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); | ||
3859 | |||
3860 | -#if 0 | ||
3861 | - label = gtk_label_new(_("Network Name:")); | ||
3862 | - gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_RIGHT); | ||
3863 | - gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); | ||
3864 | + label = gtk_label_new(_("Configure Wifi Networks.")); | ||
3865 | gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1); | ||
3866 | |||
3867 | - combo = gtk_combo_box_new_text(); | ||
3868 | - gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Guest"); | ||
3869 | - gtk_combo_box_append_text(GTK_COMBO_BOX(combo), ""); | ||
3870 | - gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Off"); | ||
3871 | - gtk_combo_box_set_row_separator_func(GTK_COMBO_BOX(combo), | ||
3872 | - separator_function, NULL, NULL); | ||
3873 | - gtk_table_attach_defaults(GTK_TABLE(table), combo, 1, 4, 0, 1); | ||
3874 | - data->policy.config = combo; | ||
3875 | -#endif | ||
3876 | + buttonbox = gtk_hbutton_box_new(); | ||
3877 | + gtk_button_box_set_layout(GTK_BUTTON_BOX(buttonbox), GTK_BUTTONBOX_CENTER); | ||
3878 | + gtk_box_pack_start(GTK_BOX(mainbox), buttonbox, FALSE, FALSE, 0); | ||
3879 | + | ||
3880 | + button = gtk_button_new(); | ||
3881 | + data->wifi_button = button; | ||
3882 | + | ||
3883 | + if (wifi_enabled) | ||
3884 | + gtk_button_set_label(GTK_BUTTON(button), _("Disable")); | ||
3885 | + else | ||
3886 | + gtk_button_set_label(GTK_BUTTON(button), _("Enable")); | ||
3887 | + | ||
3888 | + gtk_container_add(GTK_CONTAINER(buttonbox), button); | ||
3889 | + g_signal_connect(G_OBJECT(button), "clicked", | ||
3890 | + G_CALLBACK(switch_callback), data); | ||
3891 | + | ||
3892 | + button = gtk_button_new_with_label(_("Scan")); | ||
3893 | + data->scan_button = button; | ||
3894 | + | ||
3895 | + if (!wifi_enabled) | ||
3896 | + gtk_widget_set_sensitive(button, 0); | ||
3897 | + | ||
3898 | + gtk_container_add(GTK_CONTAINER(buttonbox), button); | ||
3899 | + g_signal_connect(G_OBJECT(button), "clicked", | ||
3900 | + G_CALLBACK(scan_callback), data); | ||
3901 | +} | ||
3902 | + | ||
3903 | + | ||
3904 | +static void wifi_ipconfig(GtkWidget *table, struct config_data *data, GtkTreeIter *iter) | ||
3905 | +{ | ||
3906 | + GtkWidget *entry; | ||
3907 | + GtkWidget *label; | ||
3908 | + GtkWidget *combo; | ||
3909 | + DBusGProxy *proxy; | ||
3910 | + | ||
3329 | + struct ipv4_config ipv4_config = { | 3911 | + struct ipv4_config ipv4_config = { |
3330 | + .method = NULL, | 3912 | + .method = NULL, |
3331 | + .address = NULL, | 3913 | + .address = NULL, |
3332 | + .netmask = NULL, | 3914 | + .netmask = NULL, |
3333 | + .gateway = NULL, | 3915 | + .gateway = NULL, |
3334 | + }; | 3916 | + }; |
3335 | 3917 | + | |
3336 | - table = gtk_table_new(2, 4, FALSE); | ||
3337 | - gtk_table_set_row_spacings(GTK_TABLE(table), 8); | ||
3338 | - gtk_table_set_col_spacings(GTK_TABLE(table), 8); | ||
3339 | - gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); | ||
3340 | + gtk_tree_model_get(data->model, iter, | 3918 | + gtk_tree_model_get(data->model, iter, |
3341 | + CONNMAN_COLUMN_PROXY, &proxy, | 3919 | + CONNMAN_COLUMN_PROXY, &proxy, |
3342 | + CONNMAN_COLUMN_METHOD, &ipv4_config.method, | 3920 | + CONNMAN_COLUMN_METHOD, &ipv4_config.method, |
@@ -3345,19 +3923,16 @@ index 320dce4..3d3cee8 100644 | |||
3345 | + CONNMAN_COLUMN_GATEWAY, &ipv4_config.gateway, | 3923 | + CONNMAN_COLUMN_GATEWAY, &ipv4_config.gateway, |
3346 | + -1); | 3924 | + -1); |
3347 | 3925 | ||
3348 | -#if 0 | 3926 | label = gtk_label_new(_("Configuration:")); |
3349 | - label = gtk_label_new(_("Network Name:")); | ||
3350 | - gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_RIGHT); | 3927 | - gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_RIGHT); |
3351 | - gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); | 3928 | - gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); |
3352 | - gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1); | 3929 | - gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1); |
3353 | + label = gtk_label_new(_("Configuration:")); | ||
3354 | + gtk_table_attach_defaults(GTK_TABLE(table), label, 1, 2, 3, 4); | 3930 | + gtk_table_attach_defaults(GTK_TABLE(table), label, 1, 2, 3, 4); |
3355 | +// gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); | ||
3356 | +// gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0); | ||
3357 | + data->ipv4.label[0] = label; | 3931 | + data->ipv4.label[0] = label; |
3358 | 3932 | ||
3359 | combo = gtk_combo_box_new_text(); | 3933 | combo = gtk_combo_box_new_text(); |
3360 | - gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Guest"); | 3934 | - gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Automatically"); |
3935 | - gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Manually"); | ||
3361 | - gtk_combo_box_append_text(GTK_COMBO_BOX(combo), ""); | 3936 | - gtk_combo_box_append_text(GTK_COMBO_BOX(combo), ""); |
3362 | - gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Off"); | 3937 | - gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Off"); |
3363 | + gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "DHCP"); | 3938 | + gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "DHCP"); |
@@ -3369,27 +3944,13 @@ index 320dce4..3d3cee8 100644 | |||
3369 | + | 3944 | + |
3370 | + gtk_table_attach_defaults(GTK_TABLE(table), combo, 2, 4, 3, 4); | 3945 | + gtk_table_attach_defaults(GTK_TABLE(table), combo, 2, 4, 3, 4); |
3371 | data->policy.config = combo; | 3946 | data->policy.config = combo; |
3372 | -#endif | ||
3373 | 3947 | ||
3374 | - label = gtk_label_new(_("Configuration:")); | 3948 | - label = gtk_label_new(NULL); |
3375 | - gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_RIGHT); | 3949 | - gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); |
3376 | - gtk_misc_set_alignment(GTK_MISC(label), 1.0, 0.5); | ||
3377 | - gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1); | ||
3378 | + label = gtk_label_new(_("IP address:")); | 3950 | + label = gtk_label_new(_("IP address:")); |
3379 | + gtk_table_attach_defaults(GTK_TABLE(table), label, 1, 2, 4, 5); | 3951 | + gtk_table_attach_defaults(GTK_TABLE(table), label, 1, 2, 4, 5); |
3380 | +// gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); | ||
3381 | +// gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0); | ||
3382 | + data->ipv4.label[0] = label; | 3952 | + data->ipv4.label[0] = label; |
3383 | 3953 | + | |
3384 | - combo = gtk_combo_box_new_text(); | ||
3385 | - gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Automatically"); | ||
3386 | - gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Manually"); | ||
3387 | - gtk_combo_box_append_text(GTK_COMBO_BOX(combo), ""); | ||
3388 | - gtk_combo_box_append_text(GTK_COMBO_BOX(combo), "Off"); | ||
3389 | - gtk_combo_box_set_row_separator_func(GTK_COMBO_BOX(combo), | ||
3390 | - separator_function, NULL, NULL); | ||
3391 | - gtk_table_attach_defaults(GTK_TABLE(table), combo, 1, 4, 0, 1); | ||
3392 | - data->policy.config = combo; | ||
3393 | + entry = gtk_entry_new(); | 3954 | + entry = gtk_entry_new(); |
3394 | + gtk_entry_set_max_length (GTK_ENTRY (entry), 15); | 3955 | + gtk_entry_set_max_length (GTK_ENTRY (entry), 15); |
3395 | + if (ipv4_config.address) | 3956 | + if (ipv4_config.address) |
@@ -3399,12 +3960,8 @@ index 320dce4..3d3cee8 100644 | |||
3399 | + | 3960 | + |
3400 | + label = gtk_label_new(_("Netmask:")); | 3961 | + label = gtk_label_new(_("Netmask:")); |
3401 | + gtk_table_attach_defaults(GTK_TABLE(table), label, 1, 2, 5, 6); | 3962 | + gtk_table_attach_defaults(GTK_TABLE(table), label, 1, 2, 5, 6); |
3402 | +// gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); | ||
3403 | +// gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0); | ||
3404 | + data->ipv4.label[1] = label; | 3963 | + data->ipv4.label[1] = label; |
3405 | 3964 | + | |
3406 | - label = gtk_label_new(NULL); | ||
3407 | - gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | ||
3408 | + entry = gtk_entry_new(); | 3965 | + entry = gtk_entry_new(); |
3409 | + gtk_entry_set_max_length (GTK_ENTRY (entry), 15); | 3966 | + gtk_entry_set_max_length (GTK_ENTRY (entry), 15); |
3410 | + if (ipv4_config.netmask) | 3967 | + if (ipv4_config.netmask) |
@@ -3414,8 +3971,6 @@ index 320dce4..3d3cee8 100644 | |||
3414 | + | 3971 | + |
3415 | + label = gtk_label_new(_("Gateway:")); | 3972 | + label = gtk_label_new(_("Gateway:")); |
3416 | + gtk_table_attach_defaults(GTK_TABLE(table), label, 1, 2, 6, 7); | 3973 | + gtk_table_attach_defaults(GTK_TABLE(table), label, 1, 2, 6, 7); |
3417 | +// gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); | ||
3418 | +// gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0); | ||
3419 | + data->ipv4.label[2] = label; | 3974 | + data->ipv4.label[2] = label; |
3420 | + | 3975 | + |
3421 | + entry = gtk_entry_new(); | 3976 | + entry = gtk_entry_new(); |
@@ -3454,7 +4009,7 @@ index 320dce4..3d3cee8 100644 | |||
3454 | + GtkWidget *entry; | 4009 | + GtkWidget *entry; |
3455 | + GtkWidget *button; | 4010 | + GtkWidget *button; |
3456 | + | 4011 | + |
3457 | + const gchar *name, *security, *icon, *state; | 4012 | + const char *name, *security, *icon, *state; |
3458 | + guint strength; | 4013 | + guint strength; |
3459 | + | 4014 | + |
3460 | + gtk_tree_model_get(data->model, iter, | 4015 | + gtk_tree_model_get(data->model, iter, |
@@ -3465,6 +4020,9 @@ index 320dce4..3d3cee8 100644 | |||
3465 | + CONNMAN_COLUMN_STRENGTH, &strength, | 4020 | + CONNMAN_COLUMN_STRENGTH, &strength, |
3466 | + -1); | 4021 | + -1); |
3467 | + | 4022 | + |
4023 | + if (g_str_equal(state, "failure") == TRUE) | ||
4024 | + connman_client_remove(data->client, data->device); | ||
4025 | + | ||
3468 | + vbox = gtk_vbox_new(TRUE, 0); | 4026 | + vbox = gtk_vbox_new(TRUE, 0); |
3469 | + gtk_container_set_border_width(GTK_CONTAINER(vbox), 24); | 4027 | + gtk_container_set_border_width(GTK_CONTAINER(vbox), 24); |
3470 | + gtk_box_pack_start(GTK_BOX(mainbox), vbox, FALSE, FALSE, 0); | 4028 | + gtk_box_pack_start(GTK_BOX(mainbox), vbox, FALSE, FALSE, 0); |
@@ -3475,31 +4033,24 @@ index 320dce4..3d3cee8 100644 | |||
3475 | + | 4033 | + |
3476 | + label = gtk_label_new(_("Access Point:")); | 4034 | + label = gtk_label_new(_("Access Point:")); |
3477 | + gtk_table_attach_defaults(GTK_TABLE(table), label, 1, 2, 0, 1); | 4035 | + gtk_table_attach_defaults(GTK_TABLE(table), label, 1, 2, 0, 1); |
3478 | +// gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); | ||
3479 | +// gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0); | ||
3480 | + | 4036 | + |
3481 | + label = gtk_label_new(_(name)); | 4037 | + label = gtk_label_new(_(name)); |
3482 | + gtk_table_attach_defaults(GTK_TABLE(table), label, 2, 4, 0, 1); | 4038 | + gtk_table_attach_defaults(GTK_TABLE(table), label, 2, 4, 0, 1); |
3483 | + gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); | 4039 | gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); |
3484 | + gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); | 4040 | + gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); |
3485 | + data->wifi.name = label; | 4041 | + data->wifi.name = label; |
3486 | + | 4042 | + |
3487 | + label = gtk_label_new(_("Security:")); | 4043 | + label = gtk_label_new(_("Security:")); |
3488 | + gtk_table_attach_defaults(GTK_TABLE(table), label, 1, 2, 1, 2); | 4044 | + gtk_table_attach_defaults(GTK_TABLE(table), label, 1, 2, 1, 2); |
3489 | +// gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); | ||
3490 | +// gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0); | ||
3491 | + | 4045 | + |
3492 | + label = gtk_label_new(_(security)); | 4046 | + label = gtk_label_new(_(security)); |
3493 | + gtk_table_attach_defaults(GTK_TABLE(table), label, 2, 4, 1, 2); | 4047 | + gtk_table_attach_defaults(GTK_TABLE(table), label, 2, 4, 1, 2); |
3494 | gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); | 4048 | + gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); |
3495 | + gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); | 4049 | + gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); |
3496 | + data->wifi.security = label; | 4050 | + data->wifi.security = label; |
3497 | + | 4051 | + |
3498 | + label = gtk_label_new(_("Passphrase:")); | 4052 | + label = gtk_label_new(_("Passphrase:")); |
3499 | + gtk_table_attach_defaults(GTK_TABLE(table), label, 1, 2, 2, 3); | 4053 | + gtk_table_attach_defaults(GTK_TABLE(table), label, 1, 2, 2, 3); |
3500 | +// gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT); | ||
3501 | +// gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0); | ||
3502 | + | ||
3503 | + | 4054 | + |
3504 | + if (g_str_equal(security, "none") != TRUE && | 4055 | + if (g_str_equal(security, "none") != TRUE && |
3505 | + g_str_equal(security, "unknown") != TRUE) { | 4056 | + g_str_equal(security, "unknown") != TRUE) { |
@@ -3532,7 +4083,9 @@ index 320dce4..3d3cee8 100644 | |||
3532 | - data->policy.label = label; | 4083 | - data->policy.label = label; |
3533 | + gtk_widget_hide(label); | 4084 | + gtk_widget_hide(label); |
3534 | + data->wifi.connect_info = label; | 4085 | + data->wifi.connect_info = label; |
3535 | + | 4086 | |
4087 | - g_signal_connect(G_OBJECT(combo), "changed", | ||
4088 | - G_CALLBACK(changed_callback), data); | ||
3536 | + button = gtk_button_new_with_label(_("Connect")); | 4089 | + button = gtk_button_new_with_label(_("Connect")); |
3537 | + gtk_table_attach_defaults(GTK_TABLE(table), button, 3, 4, 8, 9); | 4090 | + gtk_table_attach_defaults(GTK_TABLE(table), button, 3, 4, 8, 9); |
3538 | + g_signal_connect(G_OBJECT(button), "clicked", | 4091 | + g_signal_connect(G_OBJECT(button), "clicked", |
@@ -3557,17 +4110,14 @@ index 320dce4..3d3cee8 100644 | |||
3557 | + } | 4110 | + } |
3558 | + | 4111 | + |
3559 | + wifi_ipconfig(table, data, iter); | 4112 | + wifi_ipconfig(table, data, iter); |
3560 | |||
3561 | - g_signal_connect(G_OBJECT(combo), "changed", | ||
3562 | - G_CALLBACK(changed_callback), data); | ||
3563 | } | 4113 | } |
3564 | 4114 | ||
3565 | -void update_wifi_policy(struct config_data *data, guint policy) | 4115 | -void update_wifi_policy(struct config_data *data, guint policy) |
3566 | +void update_wifi_ipv4(struct config_data *data, guint policy) | 4116 | +void update_wifi_ipv4(struct config_data *data, guint policy) |
3567 | { | 4117 | { |
3568 | GtkWidget *combo = data->policy.config; | 4118 | GtkWidget *combo = data->policy.config; |
4119 | - gchar *info = NULL; | ||
3569 | + GtkWidget *entry[3]; | 4120 | + GtkWidget *entry[3]; |
3570 | gchar *info = NULL; | ||
3571 | + int i; | 4121 | + int i; |
3572 | + | 4122 | + |
3573 | + for (i = 0; i < 3; i++) | 4123 | + for (i = 0; i < 3; i++) |
@@ -3599,14 +4149,14 @@ index 320dce4..3d3cee8 100644 | |||
3599 | break; | 4149 | break; |
3600 | default: | 4150 | default: |
3601 | gtk_combo_box_set_active(GTK_COMBO_BOX(combo), -1); | 4151 | gtk_combo_box_set_active(GTK_COMBO_BOX(combo), -1); |
3602 | @@ -136,9 +367,7 @@ void update_wifi_policy(struct config_data *data, guint policy) | 4152 | @@ -136,9 +414,5 @@ void update_wifi_policy(struct config_data *data, guint policy) |
3603 | } | 4153 | } |
3604 | 4154 | ||
3605 | g_signal_handlers_unblock_by_func(G_OBJECT(combo), | 4155 | g_signal_handlers_unblock_by_func(G_OBJECT(combo), |
3606 | - G_CALLBACK(changed_callback), data); | 4156 | - G_CALLBACK(changed_callback), data); |
3607 | - | 4157 | - |
3608 | - gtk_label_set_markup(GTK_LABEL(data->policy.label), info); | 4158 | - gtk_label_set_markup(GTK_LABEL(data->policy.label), info); |
4159 | - | ||
4160 | - g_free(info); | ||
3609 | + G_CALLBACK(changed_callback), data); | 4161 | + G_CALLBACK(changed_callback), data); |
3610 | |||
3611 | g_free(info); | ||
3612 | } | 4162 | } |
diff --git a/meta/recipes-connectivity/connman/connman-gnome_0.5.bb b/meta/recipes-connectivity/connman/connman-gnome_0.5.bb index 6958ee57bb..7660048111 100644 --- a/meta/recipes-connectivity/connman/connman-gnome_0.5.bb +++ b/meta/recipes-connectivity/connman/connman-gnome_0.5.bb | |||
@@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=eb723b61539feef013de476e68b5c50a \ | |||
6 | file://properties/main.c;beginline=1;endline=20;md5=50c77c81871308b033ab7a1504626afb \ | 6 | file://properties/main.c;beginline=1;endline=20;md5=50c77c81871308b033ab7a1504626afb \ |
7 | file://common/connman-dbus.c;beginline=1;endline=20;md5=de6b485c0e717a0236402d220187717a" | 7 | file://common/connman-dbus.c;beginline=1;endline=20;md5=de6b485c0e717a0236402d220187717a" |
8 | DEPENDS = "gtk+ dbus" | 8 | DEPENDS = "gtk+ dbus" |
9 | PR = "r0" | 9 | PR = "r1" |
10 | 10 | ||
11 | RRECOMMENDS_${PN} = "python python-dbus connman connman-plugin-ethernet connman-plugin-loopback connman-plugin-udhcp connman-plugin-wifi connman-plugin-fake connman-plugin-bluetooth connman-plugin-dnsproxy" | 11 | RRECOMMENDS_${PN} = "python python-dbus connman connman-plugin-ethernet connman-plugin-loopback connman-plugin-udhcp connman-plugin-wifi connman-plugin-fake connman-plugin-bluetooth connman-plugin-dnsproxy" |
12 | 12 | ||