Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
DVR: return back title/subtitle set functions, fixes #2990
  • Loading branch information
perexg committed Jul 3, 2015
1 parent 51f4b17 commit 6c74cb5
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 6 deletions.
49 changes: 43 additions & 6 deletions src/dvr/dvr_db.c
Expand Up @@ -1740,30 +1740,66 @@ dvr_entry_class_broadcast_get(void *o)
return &id;
}

static int
dvr_entry_class_disp_title_set(void *o, const void *v)
{
dvr_entry_t *de = (dvr_entry_t *)o;
const char *lang = idnode_lang(&de->de_id);
const char *s = "";
if (v == NULL || *((char *)v) == '\0')
v = "UnknownTitle";
if (de->de_title)
s = lang_str_get(de->de_title, lang);
if (strcmp(s, v)) {
lang_str_destroy(de->de_title);
de->de_title = lang_str_create();
lang_str_add(de->de_title, v, lang, 0);
return 1;
}
return 0;
}

static const void *
dvr_entry_class_disp_title_get(void *o)
{
dvr_entry_t *de = (dvr_entry_t *)o;
static const char *s;
const char *lang = de->de_id.in_access ? de->de_id.in_access->aa_lang : NULL;
s = "";
if (de->de_title) {
s = lang_str_get(de->de_title, lang);
s = lang_str_get(de->de_title, idnode_lang(o));
if (s == NULL)
s = "";
}
return &s;
}

static int
dvr_entry_class_disp_subtitle_set(void *o, const void *v)
{
dvr_entry_t *de = (dvr_entry_t *)o;
const char *lang = idnode_lang(o);
const char *s = "";
if (v == NULL || *((char *)v) == '\0')
v = "UnknownSubtitle";
if (de->de_subtitle)
s = lang_str_get(de->de_subtitle, lang);
if (strcmp(s, v)) {
lang_str_destroy(de->de_subtitle);
de->de_subtitle = lang_str_create();
lang_str_add(de->de_subtitle, v, lang, 0);
return 1;
}
return 0;
}

static const void *
dvr_entry_class_disp_subtitle_get(void *o)
{
dvr_entry_t *de = (dvr_entry_t *)o;
static const char *s;
const char *lang = de->de_id.in_access ? de->de_id.in_access->aa_lang : NULL;
s = "";
if (de->de_subtitle) {
s = lang_str_get(de->de_subtitle, lang);
s = lang_str_get(de->de_subtitle, idnode_lang(o));
if (s == NULL)
s = "";
}
Expand All @@ -1775,10 +1811,9 @@ dvr_entry_class_disp_description_get(void *o)
{
dvr_entry_t *de = (dvr_entry_t *)o;
static const char *s;
const char *lang = de->de_id.in_access ? de->de_id.in_access->aa_lang : NULL;
s = "";
if (de->de_desc) {
s = lang_str_get(de->de_desc, lang);
s = lang_str_get(de->de_desc, idnode_lang(o));
if (s == NULL)
s = "";
}
Expand Down Expand Up @@ -2045,6 +2080,7 @@ const idclass_t dvr_entry_class = {
.id = "disp_title",
.name = N_("Title"),
.get = dvr_entry_class_disp_title_get,
.set = dvr_entry_class_disp_title_set,
.opts = PO_NOSAVE,
},
{
Expand All @@ -2059,6 +2095,7 @@ const idclass_t dvr_entry_class = {
.id = "disp_subtitle",
.name = N_("Subtitle"),
.get = dvr_entry_class_disp_subtitle_get,
.set = dvr_entry_class_disp_subtitle_set,
.opts = PO_NOSAVE,
},
{
Expand Down
4 changes: 4 additions & 0 deletions src/idnode.h
Expand Up @@ -205,6 +205,10 @@ int idnode_write0 (idnode_t *self, htsmsg_t *m, int optmask, int dosave);
int idnode_perm(idnode_t *self, struct access *a, htsmsg_t *msg_to_write);
static inline void idnode_perm_unset(idnode_t *self) { self->in_access = NULL; }

#define idnode_lang(self) \
(((idnode_t *)self)->in_access ? \
((idnode_t *)self)->in_access->aa_lang : NULL)

idnode_list_mapping_t * idnode_list_link
( idnode_t *in1, idnode_list_head_t *in1_list,
idnode_t *in2, idnode_list_head_t *in2_list,
Expand Down

0 comments on commit 6c74cb5

Please sign in to comment.