From 16ef58096bc1e1680534289bd38b6950dc98da84 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Sun, 15 May 2005 00:58:26 +0000 Subject: [PATCH] 2005-05-14 Dan Williams * gnome/applet/nm-device.c - (network_device_sort_wireless_networks, sort_networks_function): New functions to sort wireless networks alphabetically * gnome/applet/applet-dbus-devices.c - (mwa_dbus_devices_lock_and_copy): Sort network device's wireless network lists before copying them over to the GUI git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@629 4912f4e0-d625-0410-9fb7-b9a5a253dbdc --- ChangeLog | 10 ++++++++++ gnome/applet/applet-dbus-devices.c | 11 +++++++++++ gnome/applet/nm-device.c | 31 ++++++++++++++++++++++++++++++ gnome/applet/nm-device.h | 2 ++ 4 files changed, 54 insertions(+) diff --git a/ChangeLog b/ChangeLog index c37b03f265..833cdc7507 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2005-05-14 Dan Williams + + * gnome/applet/nm-device.c + - (network_device_sort_wireless_networks, sort_networks_function): New functions to + sort wireless networks alphabetically + + * gnome/applet/applet-dbus-devices.c + - (mwa_dbus_devices_lock_and_copy): Sort network device's wireless network lists + before copying them over to the GUI + 2005-05-14 Dan Williams * src/NetworkManager.c diff --git a/gnome/applet/applet-dbus-devices.c b/gnome/applet/applet-dbus-devices.c index bd115af08e..c05f74de9d 100644 --- a/gnome/applet/applet-dbus-devices.c +++ b/gnome/applet/applet-dbus-devices.c @@ -1343,11 +1343,22 @@ static gboolean nmwa_dbus_devices_lock_and_copy (NMWirelessApplet *applet) /* Only copy over if we have a complete data model */ if (g_slist_length (applet->dev_pending_call_list) == 0) { + GSList *elt; + nmwa_dbus_check_drivers (applet); /* Sort the devices for display */ applet->dbus_device_list = g_slist_sort (applet->dbus_device_list, sort_devices_function); + /* Sort the wireless networks of each device */ + for (elt = applet->dbus_device_list; elt; elt = g_slist_next (elt)) + { + NetworkDevice *dev = (NetworkDevice *)(elt->data); + + if (dev && network_device_is_wireless (dev)) + network_device_sort_wireless_networks (dev); + } + /* Now copy the data over to the GUI side */ g_mutex_lock (applet->data_mutex); nmwa_copy_data_model (applet); diff --git a/gnome/applet/nm-device.c b/gnome/applet/nm-device.c index 098d19447e..71127509af 100644 --- a/gnome/applet/nm-device.c +++ b/gnome/applet/nm-device.c @@ -344,6 +344,37 @@ void network_device_remove_wireless_network (NetworkDevice *dev, WirelessNetwork } +static int sort_networks_function (WirelessNetwork *a, WirelessNetwork *b) +{ + const char *name_a = wireless_network_get_essid (a); + const char *name_b = wireless_network_get_essid (b); + + if (name_a && !name_b) + return -1; + else if (!name_a && name_b) + return 1; + else if (!name_a && !name_b) + return 0; + else + return strcasecmp (name_a, name_b); +} + + +/* + * network_device_sort_wireless_networks + * + * Alphabetize the wireless networks list + * + */ +void network_device_sort_wireless_networks (NetworkDevice *dev) +{ + g_return_if_fail (dev != NULL); + g_return_if_fail (dev->type == DEVICE_TYPE_WIRELESS_ETHERNET); + + dev->networks = g_slist_sort (dev->networks, (GCompareFunc) sort_networks_function); +} + + /* * network_device_get_num_wireless_networks * diff --git a/gnome/applet/nm-device.h b/gnome/applet/nm-device.h index d8c76851b7..1a05b1db6d 100644 --- a/gnome/applet/nm-device.h +++ b/gnome/applet/nm-device.h @@ -53,6 +53,8 @@ void network_device_add_wireless_network (NetworkDevice *dev, WirelessNetwo void network_device_remove_wireless_network (NetworkDevice *dev, WirelessNetwork *net); void network_device_clear_wireless_networks (NetworkDevice *dev); +void network_device_sort_wireless_networks (NetworkDevice *dev); + guint network_device_get_num_wireless_networks (NetworkDevice *dev); const char * network_device_get_address (NetworkDevice *dev);