Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
DVR: Add all weekdays as default
  • Loading branch information
perexg committed Sep 15, 2014
1 parent 6de4fb9 commit e9d4a61
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 51 deletions.
1 change: 1 addition & 0 deletions src/dvr/dvr.h
Expand Up @@ -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);

Expand Down
24 changes: 18 additions & 6 deletions src/dvr/dvr_autorec.c
Expand Up @@ -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 },
Expand Down Expand Up @@ -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,
Expand Down
15 changes: 8 additions & 7 deletions src/dvr/dvr_timerec.c
Expand Up @@ -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 *
Expand Down Expand Up @@ -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,
Expand Down
78 changes: 40 additions & 38 deletions src/prop.c
Expand Up @@ -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 */
Expand Down
1 change: 1 addition & 0 deletions src/prop.h
Expand Up @@ -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 */
Expand Down

0 comments on commit e9d4a61

Please sign in to comment.