DVR: Add all weekdays as default

This commit is contained in:
Jaroslav Kysela 2014-09-15 21:27:46 +02:00
parent 6de4fb94ea
commit e9d4a61cc5
5 changed files with 68 additions and 51 deletions

View file

@ -505,6 +505,7 @@ dvr_autorec_find_by_uuid(const char *uuid)
htsmsg_t * dvr_autorec_entry_class_time_list(void *o, const char *null);
htsmsg_t * dvr_autorec_entry_class_weekdays_get(uint32_t weekdays);
htsmsg_t * dvr_autorec_entry_class_weekdays_list ( void *o );
char * dvr_autorec_entry_class_weekdays_rend(uint32_t weekdays);

View file

@ -554,18 +554,30 @@ dvr_autorec_entry_class_weekdays_set(void *o, const void *v)
return 0;
}
static const void *
dvr_autorec_entry_class_weekdays_get(void *o)
htsmsg_t *
dvr_autorec_entry_class_weekdays_get(uint32_t weekdays)
{
dvr_autorec_entry_t *dae = (dvr_autorec_entry_t *)o;
htsmsg_t *m = htsmsg_create_list();
int i;
for (i = 0; i < 7; i++)
if (dae->dae_weekdays & (1 << i))
if (weekdays & (1 << i))
htsmsg_add_u32(m, NULL, i + 1);
return m;
}
static htsmsg_t *
dvr_autorec_entry_class_weekdays_default(void)
{
return dvr_autorec_entry_class_weekdays_get(0x7f);
}
static const void *
dvr_autorec_entry_class_weekdays_get_(void *o)
{
dvr_autorec_entry_t *dae = (dvr_autorec_entry_t *)o;
return dvr_autorec_entry_class_weekdays_get(dae->dae_weekdays);
}
static const struct strtab dvr_autorec_entry_class_weekdays_tab[] = {
{ "Mon", 1 },
{ "Tue", 2 },
@ -799,10 +811,10 @@ const idclass_t dvr_autorec_entry_class = {
.id = "weekdays",
.name = "Week Days",
.set = dvr_autorec_entry_class_weekdays_set,
.get = dvr_autorec_entry_class_weekdays_get,
.get = dvr_autorec_entry_class_weekdays_get_,
.list = dvr_autorec_entry_class_weekdays_list,
.rend = dvr_autorec_entry_class_weekdays_rend_,
.def.u32 = 0x7f
.def.list = dvr_autorec_entry_class_weekdays_default
},
{
.type = PT_INT,

View file

@ -402,12 +402,13 @@ static const void *
dvr_timerec_entry_class_weekdays_get(void *o)
{
dvr_timerec_entry_t *dte = (dvr_timerec_entry_t *)o;
htsmsg_t *m = htsmsg_create_list();
int i;
for (i = 0; i < 7; i++)
if (dte->dte_weekdays & (1 << i))
htsmsg_add_u32(m, NULL, i + 1);
return m;
return dvr_autorec_entry_class_weekdays_get(dte->dte_weekdays);
}
static htsmsg_t *
dvr_timerec_entry_class_weekdays_default(void)
{
return dvr_autorec_entry_class_weekdays_get(0x7f);
}
static char *
@ -479,7 +480,7 @@ const idclass_t dvr_timerec_entry_class = {
.get = dvr_timerec_entry_class_weekdays_get,
.list = dvr_autorec_entry_class_weekdays_list,
.rend = dvr_timerec_entry_class_weekdays_rend,
.def.u32 = 0x7f
.def.list = dvr_timerec_entry_class_weekdays_default
},
{
.type = PT_U32,

View file

@ -390,45 +390,47 @@ prop_serialize_value
/* Metadata */
htsmsg_add_str(m, "caption", pl->name);
if (pl->islist)
if (pl->islist) {
htsmsg_add_u32(m, "list", 1);
/* Default */
// TODO: currently no support for list defaults
switch (pl->type) {
case PT_BOOL:
htsmsg_add_bool(m, "default", pl->def.i);
break;
case PT_INT:
htsmsg_add_s32(m, "default", pl->def.i);
break;
case PT_U16:
htsmsg_add_u32(m, "default", pl->def.u16);
break;
case PT_U32:
htsmsg_add_u32(m, "default", pl->def.u32);
break;
case PT_S64:
htsmsg_add_s64(m, "default", pl->def.s64);
break;
case PT_DBL:
htsmsg_add_dbl(m, "default", pl->def.d);
break;
case PT_STR:
htsmsg_add_str(m, "default", pl->def.s ?: "");
break;
case PT_TIME:
htsmsg_add_s64(m, "default", pl->def.tm);
break;
case PT_LANGSTR:
/* TODO? */
break;
case PT_PERM:
snprintf(buf, sizeof(buf), "%04o", pl->def.u32);
htsmsg_add_str(m, "default", buf);
break;
case PT_NONE:
break;
if (pl->def.list)
htsmsg_add_msg(m, "default", pl->def.list());
} else {
/* Default */
switch (pl->type) {
case PT_BOOL:
htsmsg_add_bool(m, "default", pl->def.i);
break;
case PT_INT:
htsmsg_add_s32(m, "default", pl->def.i);
break;
case PT_U16:
htsmsg_add_u32(m, "default", pl->def.u16);
break;
case PT_U32:
htsmsg_add_u32(m, "default", pl->def.u32);
break;
case PT_S64:
htsmsg_add_s64(m, "default", pl->def.s64);
break;
case PT_DBL:
htsmsg_add_dbl(m, "default", pl->def.d);
break;
case PT_STR:
htsmsg_add_str(m, "default", pl->def.s ?: "");
break;
case PT_TIME:
htsmsg_add_s64(m, "default", pl->def.tm);
break;
case PT_LANGSTR:
/* TODO? */
break;
case PT_PERM:
snprintf(buf, sizeof(buf), "%04o", pl->def.u32);
htsmsg_add_str(m, "default", buf);
break;
case PT_NONE:
break;
}
}
/* Options */

View file

@ -85,6 +85,7 @@ typedef struct property {
int64_t s64; // PT_S64
double d; // PT_DBL
time_t tm; // PT_TIME
htsmsg_t *(*list)(void); // islist != 0
} def;
/* Extended options */