dvr: fix processing of autorec weekdays field

This commit is contained in:
Adam Sutton 2013-10-11 18:44:28 +01:00
parent cc478b3ba4
commit 7bf4b17bce
2 changed files with 20 additions and 22 deletions

View file

@ -224,29 +224,27 @@ autorec_entry_destroy(dvr_autorec_entry_t *dae)
*
*/
static void
build_weekday_tags(char *buf, size_t buflen, int mask)
build_weekday_tags(htsmsg_t *l, int mask)
{
int i, p = 0;
int i;
for(i = 0; i < 7; i++) {
if(mask & (1 << i) && p < buflen - 3) {
if(p != 0)
buf[p++] = ',';
buf[p++] = '1' + i;
}
if(mask & (1 << i))
htsmsg_add_u32(l, NULL, i+1);
}
buf[p] = 0;
}
/**
*
*/
static int
build_weekday_mask(const char *str)
build_weekday_mask(htsmsg_t *l)
{
int r = 0;
for(; *str; str++)
if(*str >= '1' && *str <= '7')
r |= 1 << (*str - '1');
uint32_t u32;
htsmsg_field_t *f;
HTSMSG_FOREACH(f, l)
if (!htsmsg_field_get_u32(f, &u32))
r |= 1 << (u32 - 1);
return r;
}
@ -257,8 +255,8 @@ build_weekday_mask(const char *str)
static htsmsg_t *
autorec_record_build(dvr_autorec_entry_t *dae)
{
char str[30];
htsmsg_t *e = htsmsg_create_map();
htsmsg_t *l = htsmsg_create_list();
htsmsg_add_str(e, "id", dae->dae_id);
htsmsg_add_u32(e, "enabled", !!dae->dae_enabled);
@ -282,8 +280,8 @@ autorec_record_build(dvr_autorec_entry_t *dae)
htsmsg_add_u32(e, "approx_time", dae->dae_approx_time);
build_weekday_tags(str, sizeof(str), dae->dae_weekdays);
htsmsg_add_str(e, "weekdays", str);
build_weekday_tags(l, dae->dae_weekdays);
htsmsg_add_msg(e, "weekdays", l);
htsmsg_add_str(e, "pri", dvr_val2pri(dae->dae_pri));
@ -349,6 +347,7 @@ autorec_record_update(void *opaque, const char *id, htsmsg_t *values,
channel_t *ch;
channel_tag_t *ct;
uint32_t u32;
htsmsg_t *l;
if((dae = autorec_entry_find(id, maycreate)) == NULL)
return NULL;
@ -408,8 +407,8 @@ autorec_record_update(void *opaque, const char *id, htsmsg_t *values,
}
}
if((s = htsmsg_get_str(values, "weekdays")) != NULL)
dae->dae_weekdays = build_weekday_mask(s);
if((l = htsmsg_get_list(values, "weekdays")) != NULL)
dae->dae_weekdays = build_weekday_mask(l);
if(!htsmsg_get_u32(values, "enabled", &u32))
dae->dae_enabled = u32;

View file

@ -505,12 +505,11 @@ tvheadend.autoreceditor = function() {
header : "Weekdays",
dataIndex : 'weekdays',
renderer : function(value, metadata, record, row, col, store) {
if (typeof value === 'undefined' || value.length < 1) return 'No days';
if (value == '1,2,3,4,5,6,7') return 'All days';
if (value.split) value = value.split(',')
if (value.length == 7) return 'All days';
if (value.length == 0 || value[0] == "") return 'No days';
ret = [];
tags = value.split(',');
tags = value;
for ( var i = 0; i < tags.length; i++) {
var tag = tvheadend.weekdays.getById(tags[i]);
if (typeof tag !== 'undefined') ret.push(tag.data.name);