Add proper sort order for recording schedule
This commit is contained in:
parent
cf54890d14
commit
982a8798e1
3 changed files with 24 additions and 9 deletions
|
@ -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);
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Reference in a new issue