summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Härdeman <david@hardeman.nu>2015-08-14 11:19:08 +0200
committerDavid Härdeman <david@hardeman.nu>2015-08-14 11:19:08 +0200
commit5f34ccb1fdce368b26586870fe3d2e0cf0e41dd1 (patch)
treee9fcbae8aa0f7c8ab0ead0619c8536b93ebefb4d
parentbaba493b7cdb3b162aab65ba44b4ea964ec33c39 (diff)
Sort the list of hardware devices
-rw-r--r--rcm-client-hardware-list.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/rcm-client-hardware-list.c b/rcm-client-hardware-list.c
index 81f0707..ec29b46 100644
--- a/rcm-client-hardware-list.c
+++ b/rcm-client-hardware-list.c
@@ -84,6 +84,13 @@ hardware_properties_cb(GtkButton *button, gpointer user_data)
gtk_widget_hide(dialog);
}
+static gint
+rcdev_sort(GtkListBoxRow *a, GtkListBoxRow *b, gpointer user_data)
+{
+ return strcmp(g_object_get_data(G_OBJECT(a), "rcdev"),
+ g_object_get_data(G_OBJECT(b), "rcdev"));
+}
+
void rcng_client_hardware_list_add(GDBusObject *hw)
{
GList *interfaces;
@@ -122,6 +129,8 @@ void rcng_client_hardware_list_add(GDBusObject *hw)
rcdevice_get_hardware_type(object));
row = gtk_list_box_row_new();
+ g_object_set_data_full(G_OBJECT(row), "rcdev", rcdevice_dup_sys_name(object), g_free);
+
box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 12);
gtk_widget_set_margin_top(box, 6);
gtk_widget_set_margin_bottom(box, 6);
@@ -165,6 +174,7 @@ void rcng_client_hardware_list_add(GDBusObject *hw)
if (!hw_list_box) {
hw_list_box = gtk_list_box_new();
gtk_list_box_set_selection_mode(GTK_LIST_BOX(hw_list_box), GTK_SELECTION_NONE);
+ gtk_list_box_set_sort_func(GTK_LIST_BOX(hw_list_box), rcdev_sort, NULL, NULL);
gtk_container_add(GTK_CONTAINER(hw_list_swin), hw_list_box);
gtk_widget_show_all(hw_list_swin);
}