From 95c76059f74f5eeb3104829b8b1ee180336ab7b4 Mon Sep 17 00:00:00 2001 From: Adam Sutton Date: Wed, 11 Sep 2013 10:00:22 +0100 Subject: [PATCH] idnode: make tree's default sorted by title --- src/api/api_idnode.c | 1 + src/idnode.c | 18 ++++++++++++++++++ src/idnode.h | 1 + 3 files changed, 20 insertions(+) diff --git a/src/api/api_idnode.c b/src/api/api_idnode.c index 3554bc2a..c075ab0c 100644 --- a/src/api/api_idnode.c +++ b/src/api/api_idnode.c @@ -333,6 +333,7 @@ api_idnode_tree idnode_set_t *v = node ? idnode_get_childs(node) : rootfn(); if (v) { int i; + idnode_set_sort_by_title(v); for(i = 0; i < v->is_count; i++) { htsmsg_t *m = idnode_serialize(v->is_array[i]); htsmsg_add_u32(m, "leaf", idnode_is_leaf(v->is_array[i])); diff --git a/src/idnode.c b/src/idnode.c index 2b711a93..92ad4c1a 100644 --- a/src/idnode.c +++ b/src/idnode.c @@ -427,6 +427,17 @@ idnode_find_all ( const idclass_t *idc ) * Set processing * *************************************************************************/ +static int +idnode_cmp_title + ( const void *a, const void *b ) +{ + idnode_t *ina = *(idnode_t**)a; + idnode_t *inb = *(idnode_t**)b; + const char *sa = idnode_get_title(ina); + const char *sb = idnode_get_title(inb); + return strcmp(sa, sb); +} + static int idnode_cmp_sort ( const void *a, const void *b, void *s ) @@ -613,6 +624,13 @@ idnode_set_sort qsort_r(is->is_array, is->is_count, sizeof(idnode_t*), idnode_cmp_sort, sort); } +void +idnode_set_sort_by_title + ( idnode_set_t *is ) +{ + qsort(is->is_array, is->is_count, sizeof(idnode_t*), idnode_cmp_title); +} + void idnode_set_free ( idnode_set_t *is ) { diff --git a/src/idnode.h b/src/idnode.h index f456cab2..a815c410 100644 --- a/src/idnode.h +++ b/src/idnode.h @@ -157,6 +157,7 @@ int idnode_filter void idnode_set_add ( idnode_set_t *is, idnode_t *in, idnode_filter_t *filt ); void idnode_set_sort ( idnode_set_t *is, idnode_sort_t *s ); +void idnode_set_sort_by_title ( idnode_set_t *is ); void idnode_set_free ( idnode_set_t *is ); #endif /* __TVH_IDNODE_H__ */