88
88
static void refresh_ui (CcNetworkPanel *panel);
89
89
static NetObject *find_in_model_by_id (CcNetworkPanel *panel, const gchar *id);
90
static gboolean find_model_iter_by_object (GtkTreeModel *model, const NetObject *object, GtkTreeIter *iter);
92
93
cc_network_panel_get_property (GObject *object,
1000
get_ipv4_config_address_as_string (NMIP4Config *ip4_config, const char *what)
1003
struct in_addr addr;
1005
gchar tmp[INET_ADDRSTRLEN];
1006
NMIP4Address *address;
1009
list = nm_ip4_config_get_addresses (ip4_config);
1013
/* we only care about one address */
1014
address = list->data;
1015
if (!strcmp (what, "address"))
1016
addr.s_addr = nm_ip4_address_get_address (address);
1017
else if (!strcmp (what, "gateway"))
1018
addr.s_addr = nm_ip4_address_get_gateway (address);
1019
else if (!strcmp (what, "netmask"))
1020
addr.s_addr = nm_utils_ip4_prefix_to_netmask (nm_ip4_address_get_prefix (address));
1024
if (!inet_ntop (AF_INET, &addr, tmp, sizeof(tmp)))
1026
str = g_strdup (tmp);
1032
get_ipv4_config_name_servers_as_string (NMIP4Config *ip4_config)
1034
const GArray *array;
1036
struct in_addr addr;
1037
gchar tmp[INET_ADDRSTRLEN];
1040
dns = g_string_new (NULL);
1042
array = nm_ip4_config_get_nameservers (ip4_config);
1044
for (i = 0; i < array->len; i++) {
1045
addr.s_addr = g_array_index (array, guint32, i);
1046
if (inet_ntop (AF_INET, &addr, tmp, sizeof(tmp)))
1047
g_string_append_printf (dns, "%s ", tmp);
1051
return g_string_free (dns, FALSE);
1000
1055
get_ipv6_config_address_as_string (NMIP6Config *ip6_config)
1002
1057
const GSList *list;
1003
1058
const struct in6_addr *addr;
1004
1059
gchar *str = NULL;
1060
gchar tmp[INET6_ADDRSTRLEN];
1006
1061
NMIP6Address *address;
1008
1063
/* get address */
1126
1181
case NM_DEVICE_TYPE_WIMAX:
1127
1182
nm_client_wimax_set_enabled (panel->priv->client, active);
1184
case NM_DEVICE_TYPE_MODEM:
1185
nm_client_wwan_set_enabled (panel->priv->client, active);
1130
1188
/* FIXME: handle other device types */
1248
mobilebb_enabled_toggled (NMClient *client,
1250
CcNetworkPanel *panel)
1257
object = get_selected_object (panel);
1260
device = net_device_get_nm_device (NET_DEVICE (object));
1262
if (nm_device_get_device_type (device) != NM_DEVICE_TYPE_MODEM)
1265
enabled = nm_client_wwan_get_enabled (client);
1266
sw = GTK_SWITCH (gtk_builder_get_object (panel->priv->builder,
1267
"device_mobilebb_off_switch"));
1269
panel->priv->updating_device = TRUE;
1270
gtk_switch_set_active (sw, enabled);
1271
panel->priv->updating_device = FALSE;
1190
1275
update_off_switch_from_device_state (GtkSwitch *sw, NMDeviceState state, CcNetworkPanel *panel)
1192
1277
panel->priv->updating_device = TRUE;
1385
1470
gtk_widget_show (widget);
1386
1471
wimax_enabled_toggled (panel->priv->client, NULL, panel);
1473
case NM_DEVICE_TYPE_MODEM:
1474
gtk_widget_show (widget);
1475
mobilebb_enabled_toggled (panel->priv->client, NULL, panel);
1389
1478
gtk_widget_hide (widget);
1601
1690
if ((caps & NM_DEVICE_MODEM_CAPABILITY_GSM_UMTS) ||
1602
1691
(caps & NM_DEVICE_MODEM_CAPABILITY_CDMA_EVDO)) {
1604
str = g_object_get_data (G_OBJECT (device),
1693
str = g_object_get_data (G_OBJECT (nm_device),
1605
1694
"ControlCenter::EquipmentIdentifier");
1606
1695
panel_set_widget_data (panel,
1611
1700
/* operator name */
1612
str = g_object_get_data (G_OBJECT (device),
1701
str = g_object_get_data (G_OBJECT (nm_device),
1613
1702
"ControlCenter::OperatorName");
1614
1703
panel_set_widget_data (panel,
1628
1717
nm_device_refresh_device_ui (CcNetworkPanel *panel, NetDevice *device)
1630
1719
CcNetworkPanelPrivate *priv = panel->priv;
1632
1720
const gchar *sub_pane = NULL;
1633
1721
gchar *str_tmp;
1634
GHashTable *options = NULL;
1635
1722
GtkWidget *widget;
1636
1723
NMDeviceType type;
1637
NMDHCP4Config *config_dhcp4 = NULL;
1724
NMIP4Config *ip4_config = NULL;
1638
1725
NMIP6Config *ip6_config = NULL;
1639
1726
NMDevice *nm_device;
1640
1727
gboolean has_ip4;
1685
1772
/* get IP4 parameters */
1686
config_dhcp4 = nm_device_get_dhcp4_config (nm_device);
1687
if (!is_hotspot && config_dhcp4 != NULL) {
1688
g_object_get (G_OBJECT (config_dhcp4),
1689
NM_DHCP4_CONFIG_OPTIONS, &options,
1773
ip4_config = nm_device_get_ip4_config (nm_device);
1774
if (!is_hotspot && ip4_config != NULL) {
1692
1775
/* IPv4 address */
1693
str = nm_dhcp4_config_get_one_option (config_dhcp4,
1777
str_tmp = get_ipv4_config_address_as_string (ip4_config, "address");
1695
1778
panel_set_widget_data (panel,
1699
has_ip4 = str != NULL;
1782
has_ip4 = str_tmp != NULL;
1786
str_tmp = get_ipv4_config_name_servers_as_string (ip4_config);
1702
1787
panel_set_widget_data (panel,
1705
nm_dhcp4_config_get_one_option (config_dhcp4,
1706
"domain_name_servers"));
1708
1793
/* IPv4 route */
1794
str_tmp = get_ipv4_config_address_as_string (ip4_config, "gateway");
1709
1795
panel_set_widget_data (panel,
1712
nm_dhcp4_config_get_one_option (config_dhcp4,
1715
1801
/* IPv4 netmask */
1716
1802
if (type == NM_DEVICE_TYPE_ETHERNET) {
1803
str_tmp = get_ipv4_config_address_as_string (ip4_config, "netmask");
1717
1804
panel_set_widget_data (panel,
1720
nm_dhcp4_config_get_one_option (config_dhcp4,
1724
1811
/* IPv4 address */
1790
1877
const gchar *path;
1791
1878
const gchar *apath;
1792
1879
NMVPNConnectionState state;
1881
GtkListStore *liststore_devices;
1794
1884
sw = GTK_WIDGET (gtk_builder_get_object (priv->builder,
1795
1885
"device_vpn_off_switch"));
1813
1903
GTK_ICON_SIZE_DIALOG);
1816
1906
widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
1817
1907
"label_vpn_device"));
1818
gtk_label_set_label (GTK_LABEL (widget), net_object_get_title (NET_OBJECT (vpn)));
1908
title = g_strdup_printf (_("%s VPN"), nm_connection_get_id (net_vpn_get_connection (vpn)));
1909
net_object_set_title (NET_OBJECT (vpn), title);
1910
gtk_label_set_label (GTK_LABEL (widget), title);
1912
/* update list store title */
1913
liststore_devices = GTK_LIST_STORE (gtk_builder_get_object (panel->priv->builder,
1914
"liststore_devices"));
1915
if (find_model_iter_by_object (GTK_TREE_MODEL (liststore_devices), NET_OBJECT (vpn), &iter)) {
1916
gtk_list_store_set (liststore_devices,
1918
PANEL_DEVICES_COLUMN_TITLE, title,
1820
1923
/* use status */
1821
1924
state = net_vpn_get_state (vpn);
1844
1947
state != NM_VPN_CONNECTION_STATE_DISCONNECTED);
1845
1948
priv->updating_device = FALSE;
1951
panel_set_widget_data (panel,
1954
net_vpn_get_service_type (vpn));
1848
1957
panel_set_widget_data (panel,
1851
net_vpn_get_gateway (vpn));
1960
net_vpn_get_gateway (vpn));
1853
1962
/* groupname */
1854
1963
panel_set_widget_data (panel,
1857
net_vpn_get_id (vpn));
1966
net_vpn_get_id (vpn));
1860
1969
panel_set_widget_data (panel,
1863
net_vpn_get_username (vpn));
1972
net_vpn_get_username (vpn));
1866
1975
panel_set_widget_data (panel,
1868
1977
"group_password",
1869
net_vpn_get_password (vpn));
1978
net_vpn_get_password (vpn));
1872
1981
static gboolean
2234
find_model_iter_by_object (GtkTreeModel *model, const NetObject *object, GtkTreeIter *iter)
2237
NetObject *object_tmp;
2239
/* find iter in model according to the passed object */
2240
valid = gtk_tree_model_get_iter_first (model, iter);
2242
gtk_tree_model_get (model, iter,
2243
PANEL_DEVICES_COLUMN_OBJECT, &object_tmp,
2245
if (object_tmp != NULL)
2246
g_object_unref (object_tmp);
2247
if (object_tmp == object)
2249
valid = gtk_tree_model_iter_next (model, iter);
2125
2256
panel_add_vpn_device (CcNetworkPanel *panel, NMConnection *connection)
3191
3326
G_CALLBACK (wireless_enabled_toggled), panel);
3192
3327
g_signal_connect (panel->priv->client, "notify::wimax-enabled",
3193
3328
G_CALLBACK (wimax_enabled_toggled), panel);
3329
g_signal_connect (panel->priv->client, "notify::wwan-enabled",
3330
G_CALLBACK (mobilebb_enabled_toggled), panel);
3195
3332
widget = GTK_WIDGET (gtk_builder_get_object (panel->priv->builder,
3196
3333
"start_hotspot_button"));
3213
3350
G_CALLBACK (edit_connection), panel);
3215
3352
widget = GTK_WIDGET (gtk_builder_get_object (panel->priv->builder,
3353
"button_mobilebb_options"));
3354
g_signal_connect (widget, "clicked",
3355
G_CALLBACK (edit_connection), panel);
3357
widget = GTK_WIDGET (gtk_builder_get_object (panel->priv->builder,
3216
3358
"button_vpn_options"));
3217
3359
g_signal_connect (widget, "clicked",
3218
3360
G_CALLBACK (edit_connection), panel);