idnode: make tree's default sorted by title

This commit is contained in:
Adam Sutton 2013-09-11 10:00:22 +01:00
parent 05dd018b5a
commit 95c76059f7
3 changed files with 20 additions and 0 deletions

View file

@ -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]));

View file

@ -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 )
{

View file

@ -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__ */