From cb0ede968567669d5e1fe805dc71a67449963929 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Mon, 20 Nov 2006 03:09:15 +0000 Subject: [PATCH] 2006-11-19 Dan Williams Patch from Dan Berrange * gnome/applet/applet-dbus-vpn.c - (nma_dbus_vpn_properties_cb): sort VPN connections * gnome/vpn-properties/nm-vpn-properties.c - (init_app): sort VPN connections git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@2110 4912f4e0-d625-0410-9fb7-b9a5a253dbdc --- ChangeLog | 9 +++++++ gnome/applet/applet-dbus-vpn.c | 11 +++++++- gnome/vpn-properties/nm-vpn-properties.c | 33 ++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 34883438f8..dc4511b4c9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2006-11-19 Dan Williams + + Patch from Dan Berrange + * gnome/applet/applet-dbus-vpn.c + - (nma_dbus_vpn_properties_cb): sort VPN connections + + * gnome/vpn-properties/nm-vpn-properties.c + - (init_app): sort VPN connections + 2006-11-09 Dan Williams * src/NetworkManagerAPList.c diff --git a/gnome/applet/applet-dbus-vpn.c b/gnome/applet/applet-dbus-vpn.c index d0d0ab279e..9d8ecf2381 100644 --- a/gnome/applet/applet-dbus-vpn.c +++ b/gnome/applet/applet-dbus-vpn.c @@ -95,6 +95,15 @@ static void free_vpn_props_cb_data (VpnPropsCBData *data) } } +static gint vpn_sorter (gconstpointer a, + gconstpointer b) { + VPNConnection *va = (VPNConnection *)a; + VPNConnection *vb = (VPNConnection *)b; + + return strcmp(nma_vpn_connection_get_name(va), + nma_vpn_connection_get_name(vb)); +} + /* * nma_dbus_vpn_properties_cb * @@ -154,7 +163,7 @@ static void nma_dbus_vpn_properties_cb (DBusPendingCall *pcall, void *user_data) vpn = nma_vpn_connection_new (name); nma_vpn_connection_set_service (vpn, service); nma_vpn_connection_set_stage (vpn, stage); - applet->vpn_connections = g_slist_append (applet->vpn_connections, vpn); + applet->vpn_connections = g_slist_insert_sorted (applet->vpn_connections, vpn, vpn_sorter); } } dbus_message_unref (reply); diff --git a/gnome/vpn-properties/nm-vpn-properties.c b/gnome/vpn-properties/nm-vpn-properties.c index 16d6109a4e..3f59a79403 100644 --- a/gnome/vpn-properties/nm-vpn-properties.c +++ b/gnome/vpn-properties/nm-vpn-properties.c @@ -876,6 +876,29 @@ out: #define VPN_NAME_FILES_DIR SYSCONFDIR"/NetworkManager/VPN" +static gint +vpn_list_sorter(GtkTreeModel *model, + GtkTreeIter *a, + GtkTreeIter *b, + gpointer user_data) +{ + GValue aval = {0}; + GValue bval = {0}; + const char *aname; + const char *bname; + gint res; + + gtk_tree_model_get_value(model, a, VPNCONN_NAME_COLUMN, &aval); + gtk_tree_model_get_value(model, b, VPNCONN_NAME_COLUMN, &bval); + aname = g_value_get_string(&aval); + bname = g_value_get_string(&bval); + res = strcmp(aname, bname); + g_value_unset(&aval); + g_value_unset(&bval); + return res; +} + + static gboolean init_app (void) { @@ -966,6 +989,16 @@ init_app (void) vpn_conn_view = GTK_TREE_VIEW (glade_xml_get_widget (xml, "vpnlist")); vpn_conn_list = gtk_list_store_new (VPNCONN_N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN); + + gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(vpn_conn_list), + VPNCONN_NAME_COLUMN, + vpn_list_sorter, + NULL, + NULL); + gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(vpn_conn_list), + VPNCONN_NAME_COLUMN, + GTK_SORT_ASCENDING); + gtk_signal_connect_after (GTK_OBJECT (vpn_conn_view), "cursor-changed", GTK_SIGNAL_FUNC (vpn_list_cursor_changed_cb), NULL);