Commit 3d6810a6 authored by Dan Williams's avatar Dan Williams
Browse files

editor: show Bluetooth connections as Mobile Broadband (bgo #740658)

Show Bluetooth connections in the list as Mobile Broadband and
show the Bluetooth tab when editing them.

https://bugzilla.gnome.org/show_bug.cgi?id=740658
parent 1bb881d4
......@@ -75,21 +75,41 @@ sort_types (gconstpointer a, gconstpointer b)
else if (typeb->virtual && !typea->virtual)
return -1;
if (typea->setting_type == NM_TYPE_SETTING_VPN &&
typeb->setting_type != NM_TYPE_SETTING_VPN)
if (typea->setting_types[0] == NM_TYPE_SETTING_VPN &&
typeb->setting_types[0] != NM_TYPE_SETTING_VPN)
return 1;
else if (typeb->setting_type == NM_TYPE_SETTING_VPN &&
typea->setting_type != NM_TYPE_SETTING_VPN)
else if (typeb->setting_types[0] == NM_TYPE_SETTING_VPN &&
typea->setting_types[0] != NM_TYPE_SETTING_VPN)
return -1;
return g_utf8_collate (typea->name, typeb->name);
}
#define add_type_data_full(a, n, new_func, type0, type1, type2, v) \
{ \
ConnectionTypeData data; \
\
memset (&data, 0, sizeof (data)); \
data.name = n; \
data.new_connection_func = new_func; \
data.setting_types[0] = type0; \
data.setting_types[1] = type1; \
data.setting_types[2] = type2; \
data.setting_types[3] = G_TYPE_INVALID; \
data.virtual = v; \
g_array_append_val (a, data); \
}
#define add_type_data_real(a, n, new_func, type0) \
add_type_data_full(a, n, new_func, type0, G_TYPE_INVALID, G_TYPE_INVALID, FALSE)
#define add_type_data_virtual(a, n, new_func, type0) \
add_type_data_full(a, n, new_func, type0, G_TYPE_INVALID, G_TYPE_INVALID, TRUE)
ConnectionTypeData *
get_connection_type_list (void)
{
GArray *array;
ConnectionTypeData data;
static ConnectionTypeData *list;
GHashTable *vpn_plugins_hash;
gboolean have_vpn_plugins;
......@@ -99,65 +119,22 @@ get_connection_type_list (void)
array = g_array_new (TRUE, FALSE, sizeof (ConnectionTypeData));
data.name = _("Ethernet");
data.new_connection_func = ethernet_connection_new;
data.setting_type = NM_TYPE_SETTING_WIRED;
data.virtual = FALSE;
g_array_append_val (array, data);
data.name = _("Wi-Fi");
data.new_connection_func = wifi_connection_new;
data.setting_type = NM_TYPE_SETTING_WIRELESS;
data.virtual = FALSE;
g_array_append_val (array, data);
data.name = _("Mobile Broadband");
data.new_connection_func = mobile_connection_new;
data.setting_type = NM_TYPE_SETTING_GSM;
data.virtual = FALSE;
g_array_append_val (array, data);
data.name = _("WiMAX");
data.new_connection_func = wimax_connection_new;
data.setting_type = NM_TYPE_SETTING_WIMAX;
data.virtual = FALSE;
g_array_append_val (array, data);
data.name = _("DSL");
data.new_connection_func = dsl_connection_new;
data.setting_type = NM_TYPE_SETTING_PPPOE;
data.virtual = FALSE;
g_array_append_val (array, data);
data.name = _("InfiniBand");
data.new_connection_func = infiniband_connection_new;
data.setting_type = NM_TYPE_SETTING_INFINIBAND;
data.virtual = FALSE;
g_array_append_val (array, data);
data.name = _("Bond");
data.new_connection_func = bond_connection_new;
data.setting_type = NM_TYPE_SETTING_BOND;
data.virtual = TRUE;
g_array_append_val (array, data);
data.name = _("Team");
data.new_connection_func = team_connection_new;
data.setting_type = NM_TYPE_SETTING_TEAM;
data.virtual = TRUE;
g_array_append_val (array, data);
data.name = _("Bridge");
data.new_connection_func = bridge_connection_new;
data.setting_type = NM_TYPE_SETTING_BRIDGE;
data.virtual = TRUE;
g_array_append_val (array, data);
data.name = _("VLAN");
data.new_connection_func = vlan_connection_new;
data.setting_type = NM_TYPE_SETTING_VLAN;
data.virtual = TRUE;
g_array_append_val (array, data);
add_type_data_real (array, _("Ethernet"), ethernet_connection_new, NM_TYPE_SETTING_WIRED);
add_type_data_real (array, _("Wi-Fi"), wifi_connection_new, NM_TYPE_SETTING_WIRELESS);
add_type_data_full (array,
_("Mobile Broadband"),
mobile_connection_new,
NM_TYPE_SETTING_GSM,
NM_TYPE_SETTING_CDMA,
NM_TYPE_SETTING_BLUETOOTH,
FALSE);
add_type_data_real (array, _("WiMAX"), wimax_connection_new, NM_TYPE_SETTING_WIMAX);
add_type_data_real (array, _("DSL"), dsl_connection_new, NM_TYPE_SETTING_PPPOE);
add_type_data_real (array, _("InfiniBand"), infiniband_connection_new, NM_TYPE_SETTING_INFINIBAND);
add_type_data_virtual (array, _("Bond"), bond_connection_new, NM_TYPE_SETTING_BOND);
add_type_data_virtual (array, _("Team"), team_connection_new, NM_TYPE_SETTING_TEAM);
add_type_data_virtual (array, _("Bridge"), bridge_connection_new, NM_TYPE_SETTING_BRIDGE);
add_type_data_virtual (array, _("VLAN"), vlan_connection_new, NM_TYPE_SETTING_VLAN);
/* Add "VPN" only if there are plugins */
vpn_plugins_hash = vpn_get_plugins (NULL);
......@@ -166,11 +143,7 @@ get_connection_type_list (void)
GHashTableIter iter;
gpointer name, plugin;
data.name = _("VPN");
data.new_connection_func = vpn_connection_new;
data.setting_type = NM_TYPE_SETTING_VPN;
data.virtual = TRUE;
g_array_append_val (array, data);
add_type_data_virtual (array, _("VPN"), vpn_connection_new, NM_TYPE_SETTING_VPN);
vpn_plugins = NULL;
g_hash_table_iter_init (&iter, vpn_plugins_hash);
......@@ -266,13 +239,17 @@ set_up_connection_type_combo (GtkComboBox *combo,
}
for (i = 0; list[i].name; i++) {
if (type_filter_func && !type_filter_func (list[i].setting_type, user_data))
continue;
if (type_filter_func) {
if ( !type_filter_func (list[i].setting_types[0], user_data)
&& !type_filter_func (list[i].setting_types[1], user_data)
&& !type_filter_func (list[i].setting_types[2], user_data))
continue;
}
if (list[i].setting_type == NM_TYPE_SETTING_VPN) {
if (list[i].setting_types[0] == NM_TYPE_SETTING_VPN) {
vpn_index = i;
continue;
} else if (list[i].setting_type == NM_TYPE_SETTING_WIRED)
} else if (list[i].setting_types[0] == NM_TYPE_SETTING_WIRED)
active = added;
if (list[i].virtual && !added_virtual_header && show_headers) {
......
......@@ -26,7 +26,7 @@
typedef struct {
const char *name;
GType setting_type;
GType setting_types[4];
PageNewConnectionFunc new_connection_func;
gboolean virtual;
} ConnectionTypeData;
......
......@@ -68,8 +68,10 @@ static guint list_signals[LIST_LAST_SIGNAL] = { 0 };
#define COL_LAST_USED 1
#define COL_TIMESTAMP 2
#define COL_CONNECTION 3
#define COL_GTYPE 4
#define COL_ORDER 5
#define COL_GTYPE0 4
#define COL_GTYPE1 5
#define COL_GTYPE2 6
#define COL_ORDER 7
static NMRemoteConnection *
get_active_connection (GtkTreeView *treeview)
......@@ -608,7 +610,14 @@ initialize_treeview (NMConnectionList *self)
int i;
/* Model */
self->model = GTK_TREE_MODEL (gtk_tree_store_new (6, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_UINT64, G_TYPE_OBJECT, G_TYPE_GTYPE, G_TYPE_INT));
self->model = GTK_TREE_MODEL (gtk_tree_store_new (8, G_TYPE_STRING,
G_TYPE_STRING,
G_TYPE_UINT64,
G_TYPE_OBJECT,
G_TYPE_GTYPE,
G_TYPE_GTYPE,
G_TYPE_GTYPE,
G_TYPE_INT));
/* Filter */
self->filter = GTK_TREE_MODEL_FILTER (gtk_tree_model_filter_new (self->model, NULL));
......@@ -661,7 +670,9 @@ initialize_treeview (NMConnectionList *self)
gtk_tree_store_append (GTK_TREE_STORE (self->model), &iter, NULL);
gtk_tree_store_set (GTK_TREE_STORE (self->model), &iter,
COL_ID, id,
COL_GTYPE, types[i].setting_type,
COL_GTYPE0, types[i].setting_types[0],
COL_GTYPE1, types[i].setting_types[1],
COL_GTYPE2, types[i].setting_types[2],
COL_ORDER, i,
-1);
g_free (id);
......@@ -746,7 +757,7 @@ get_parent_iter_for_connection (NMConnectionList *list,
{
NMSettingConnection *s_con;
const char *str_type;
GType type, row_type;
GType type, row_type0, row_type1, row_type2;
s_con = nm_connection_get_setting_connection (NM_CONNECTION (connection));
g_assert (s_con);
......@@ -756,16 +767,16 @@ get_parent_iter_for_connection (NMConnectionList *list,
return FALSE;
}
if (!strcmp (str_type, NM_SETTING_CDMA_SETTING_NAME))
str_type = NM_SETTING_GSM_SETTING_NAME;
type = nm_connection_lookup_setting_type (str_type);
if (gtk_tree_model_get_iter_first (list->model, iter)) {
do {
gtk_tree_model_get (list->model, iter,
COL_GTYPE, &row_type,
COL_GTYPE0, &row_type0,
COL_GTYPE1, &row_type1,
COL_GTYPE2, &row_type2,
-1);
if (row_type == type)
if (row_type0 == type || row_type1 == type || row_type2 == type)
return TRUE;
} while (gtk_tree_model_iter_next (list->model, iter));
}
......@@ -803,12 +814,16 @@ connection_added (NMRemoteSettings *settings,
g_free (last_used);
if (self->displayed_type) {
GType added_type;
GType added_type0, added_type1, added_type2;
gtk_tree_model_get (self->model, &parent_iter,
COL_GTYPE, &added_type,
COL_GTYPE0, &added_type0,
COL_GTYPE1, &added_type1,
COL_GTYPE2, &added_type2,
-1);
if (added_type != self->displayed_type)
if ( added_type0 != self->displayed_type
&& added_type1 != self->displayed_type
&& added_type2 != self->displayed_type)
expand = FALSE;
}
......@@ -925,7 +940,9 @@ nm_connection_list_create (NMConnectionList *self, GType ctype, const char *deta
types = get_connection_type_list ();
for (i = 0; types[i].name; i++) {
if (types[i].setting_type == ctype)
if ( types[i].setting_types[0] == ctype
|| types[i].setting_types[1] == ctype
|| types[i].setting_types[2] == ctype)
break;
}
if (!types[i].name) {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment