67
68
gboolean menu_enabled;
69
70
Manager *network_service;
71
ConnmanManager *connman;
73
75
network_menu_dispose (GObject *object)
77
NetworkMenu *self = NETWORK_MENU(object);
78
NetworkMenuPrivate *priv = GET_PRIVATE(self);
80
/* FIXME: unref all objects from NetworkMenuPrivate */
82
if (priv->connman != NULL) {
83
g_object_unref(priv->connman);
75
87
G_OBJECT_CLASS (network_menu_parent_class)->dispose (object);
401
static void tech_state_changed(Manager *manager, const gchar *tech,
402
gboolean state, gpointer user_data)
413
static void wifi_state_changed(ConnmanManager *connman, GParamSpec *pspec,
404
416
NetworkMenu *self = NETWORK_MENU(user_data);
405
417
NetworkMenuPrivate *priv = GET_PRIVATE(self);
406
418
const gchar *str;
419
ConnmanTechnologyState state;
408
421
g_return_if_fail(IS_NETWORK_MENU(self));
409
422
g_return_if_fail(priv != NULL);
410
423
g_return_if_fail(priv->wireless_header != NULL);
412
if (g_strcmp0(tech, CONNMAN_TECHNOLOGY_WIFI) != 0 )
425
state = connman_manager_get_wifi_state(priv->connman);
428
case CONNMAN_TECHNOLOGY_STATE_ENABLED:
429
case CONNMAN_TECHNOLOGY_STATE_CONNECTED:
416
430
str = _("Wi-Fi: ON");
431
priv->wireless_enabled = TRUE;
433
case CONNMAN_TECHNOLOGY_STATE_UNKNOWN:
434
case CONNMAN_TECHNOLOGY_STATE_UNAVAILABLE:
435
case CONNMAN_TECHNOLOGY_STATE_AVAILABLE:
436
case CONNMAN_TECHNOLOGY_STATE_OFFLINE:
418
438
str = _("Wi-Fi: OFF");
439
priv->wireless_enabled = FALSE;
420
443
dbusmenu_menuitem_property_set(priv->wireless_header,
421
444
DBUSMENU_MENUITEM_PROP_LABEL,
423
priv->wireless_enabled = state;
426
448
static void toggle_wireless_cb(DbusmenuMenuitem *mi, guint timestamp,
427
449
gpointer user_data)
429
NetworkMenu *self = user_data;
451
NetworkMenu *self = NETWORK_MENU(user_data);
430
452
NetworkMenuPrivate *priv = GET_PRIVATE(self);
431
Manager *ns = priv->network_service;
433
g_return_if_fail(ns != NULL);
435
/* FIXME: enable or disable wireless accordingly */
454
g_return_if_fail(priv != NULL);
455
g_return_if_fail(priv->connman != NULL);
457
if (priv->wireless_enabled)
458
connman_manager_disable_technology(priv->connman,
459
CONNMAN_TECHNOLOGY_TYPE_WIFI,
464
connman_manager_enable_technology(priv->connman,
465
CONNMAN_TECHNOLOGY_TYPE_WIFI,
438
471
static void network_settings_activated(DbusmenuMenuitem *mi, guint timestamp,
474
507
priv = GET_PRIVATE(self);
476
509
priv->network_service = ns;
510
g_return_val_if_fail(manager_get_connman(ns) != NULL, NULL);
511
priv->connman = g_object_ref(manager_get_connman(ns));
478
513
sm = manager_get_service_manager(ns);
479
514
g_signal_connect(G_OBJECT(sm), "services-updated",
481
516
g_signal_connect(G_OBJECT(sm), "state-changed",
482
517
G_CALLBACK(connect_state_changed), self);
484
g_signal_connect(G_OBJECT(ns), "technology-state-changed",
485
G_CALLBACK(tech_state_changed), self);
519
g_signal_connect(G_OBJECT(priv->connman), "notify::wifi-state",
520
G_CALLBACK(wifi_state_changed), self);
487
522
server = dbusmenu_server_new(INDICATOR_NETWORK_DBUS_OBJECT);
488
523
dbusmenu_server_set_root(server, DBUSMENU_MENUITEM(self));