From 982a8798e1bcb9e986fc329f90df1388ce3db458 Mon Sep 17 00:00:00 2001 From: Kristofer Karlsson Date: Wed, 5 Dec 2012 09:24:44 +0100 Subject: [PATCH] Add proper sort order for recording schedule --- src/dvr/dvr.h | 6 ++++++ src/dvr/dvr_db.c | 18 +++++++++++++----- src/webui/extjs.c | 9 +++++---- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/dvr/dvr.h b/src/dvr/dvr.h index e1935fbf..604400a2 100644 --- a/src/dvr/dvr.h +++ b/src/dvr/dvr.h @@ -332,12 +332,18 @@ typedef struct dvr_query_result { } dvr_query_result_t; typedef int (dvr_entry_filter)(dvr_entry_t *entry); +typedef int (dvr_entry_comparator)(const void *a, const void *b); void dvr_query(dvr_query_result_t *dqr); void dvr_query_filter(dvr_query_result_t *dqr, dvr_entry_filter filter); void dvr_query_free(dvr_query_result_t *dqr); + +void dvr_query_sort_cmp(dvr_query_result_t *dqr, dvr_entry_comparator cmp); void dvr_query_sort(dvr_query_result_t *dqr); +int dvr_sort_start_descending(const void *A, const void *B); +int dvr_sort_start_ascending(const void *A, const void *B); + /** * */ diff --git a/src/dvr/dvr_db.c b/src/dvr/dvr_db.c index 91165f55..88e871e5 100644 --- a/src/dvr/dvr_db.c +++ b/src/dvr/dvr_db.c @@ -1337,7 +1337,7 @@ dvr_query_free(dvr_query_result_t *dqr) /** * Sorting functions */ -static int +int dvr_sort_start_descending(const void *A, const void *B) { dvr_entry_t *a = *(dvr_entry_t **)A; @@ -1345,22 +1345,30 @@ dvr_sort_start_descending(const void *A, const void *B) return b->de_start - a->de_start; } +int +dvr_sort_start_ascending(const void *A, const void *B) +{ + return -dvr_sort_start_descending(A, B); +} + /** * */ void -dvr_query_sort(dvr_query_result_t *dqr) +dvr_query_sort_cmp(dvr_query_result_t *dqr, dvr_entry_comparator sf) { - int (*sf)(const void *a, const void *b); - if(dqr->dqr_array == NULL) return; - sf = dvr_sort_start_descending; qsort(dqr->dqr_array, dqr->dqr_entries, sizeof(dvr_entry_t *), sf); } +void +dvr_query_sort(dvr_query_result_t *dqr) +{ + dvr_query_sort_cmp(dqr, dvr_sort_start_descending); +} /** * diff --git a/src/webui/extjs.c b/src/webui/extjs.c index 85b70c74..63381eb5 100644 --- a/src/webui/extjs.c +++ b/src/webui/extjs.c @@ -1287,7 +1287,8 @@ extjs_dvr(http_connection_t *hc, const char *remain, void *opaque) * */ static int -extjs_dvrlist(http_connection_t *hc, const char *remain, void *opaque, dvr_entry_filter filter) +extjs_dvrlist(http_connection_t *hc, const char *remain, void *opaque, + dvr_entry_filter filter, dvr_entry_comparator cmp) { htsbuf_queue_t *hq = &hc->hc_reply; htsmsg_t *out, *array, *m; @@ -1319,7 +1320,7 @@ extjs_dvrlist(http_connection_t *hc, const char *remain, void *opaque, dvr_entry dvr_query_filter(&dqr, filter); - dvr_query_sort(&dqr); + dvr_query_sort_cmp(&dqr, cmp); htsmsg_add_u32(out, "totalCount", dqr.dqr_entries); @@ -1407,13 +1408,13 @@ static int is_dvr_entry_new(dvr_entry_t *entry) static int extjs_dvrlist_old(http_connection_t *hc, const char *remain, void *opaque) { - return extjs_dvrlist(hc, remain, opaque, is_dvr_entry_old); + return extjs_dvrlist(hc, remain, opaque, is_dvr_entry_old, dvr_sort_start_descending); } static int extjs_dvrlist_new(http_connection_t *hc, const char *remain, void *opaque) { - return extjs_dvrlist(hc, remain, opaque, is_dvr_entry_new); + return extjs_dvrlist(hc, remain, opaque, is_dvr_entry_new, dvr_sort_start_ascending); } /**