From e7c9d4c38dd674f33e2a58ca99cf5798a043aee7 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 29 Jan 2018 17:19:45 +0100 Subject: [PATCH] DVR: add disp_extratext which shows subtitle or summary or description, fixes #4899 --- src/dvr/dvr_db.c | 24 ++++++++++++++++++++++++ src/webui/static/app/dvr.js | 28 ++++++++++++---------------- 2 files changed, 36 insertions(+), 16 deletions(-) diff --git a/src/dvr/dvr_db.c b/src/dvr/dvr_db.c index fd43b8c13..aabca9690 100644 --- a/src/dvr/dvr_db.c +++ b/src/dvr/dvr_db.c @@ -3214,6 +3214,22 @@ dvr_entry_class_disp_description_get(void *o) return &prop_ptr; } +static const void * +dvr_entry_class_disp_extratext_get(void *o) +{ + dvr_entry_t *de = (dvr_entry_t *)o; + prop_ptr = NULL; + if (de->de_subtitle) + prop_ptr = lang_str_get(de->de_subtitle, idnode_lang(o)); + if (prop_ptr == NULL || prop_ptr[0] == '\0') + prop_ptr = lang_str_get(de->de_summary, idnode_lang(o)); + if (prop_ptr == NULL || prop_ptr[0] == '\0') + prop_ptr = lang_str_get(de->de_desc, idnode_lang(o)); + if (prop_ptr == NULL) + prop_ptr = ""; + return &prop_ptr; +} + static int dvr_entry_class_disp_episode_set(void *o, const void *v) { @@ -3693,6 +3709,14 @@ const idclass_t dvr_entry_class = { .get = dvr_entry_class_disp_description_get, .opts = PO_RDONLY | PO_NOSAVE | PO_HIDDEN, }, + { + .type = PT_STR, + .id = "disp_extratext", + .name = N_("Extra text"), + .desc = N_("Subtitle, summary or description of the program (if any) (display only)."), + .get = dvr_entry_class_disp_extratext_get, + .opts = PO_RDONLY | PO_NOSAVE, + }, { .type = PT_INT, .id = "pri", diff --git a/src/webui/static/app/dvr.js b/src/webui/static/app/dvr.js index 749a2b692..0df5df9b6 100644 --- a/src/webui/static/app/dvr.js +++ b/src/webui/static/app/dvr.js @@ -239,7 +239,7 @@ tvheadend.displayDuplicate = function(value, meta, record) { tvheadend.displayWithDuplicateRenderer = function(value, meta, record) { return function() { return function(value, meta, record) { - return tvheadend.displayDuplicate(value, meta, record); + return tvheadend.displayDuplicate(value, meta, record); } } } @@ -247,7 +247,7 @@ tvheadend.displayWithDuplicateRenderer = function(value, meta, record) { tvheadend.displayWithYearAndDuplicateRenderer = function(value, meta, record) { return function() { return function(value, meta, record) { - value = tvheadend.getDisplayTitle(value, record); + var value = tvheadend.getDisplayTitle(value, record); return tvheadend.displayDuplicate(value, meta, record); } } @@ -256,8 +256,7 @@ tvheadend.displayWithYearAndDuplicateRenderer = function(value, meta, record) { tvheadend.displayWithYearRenderer = function(value, meta, record) { return function() { return function(value, meta, record) { - value = tvheadend.getDisplayTitle(value, record); - return value; + return tvheadend.getDisplayTitle(value, record); } } } @@ -419,18 +418,15 @@ tvheadend.dvr_upcoming = function(panel, index) { } }, del: true, - list: 'category,enabled,duplicate,disp_title,disp_subtitle,disp_summary,episode_disp,' + + list: 'category,enabled,duplicate,disp_title,disp_extratext,episode_disp,' + 'channel,image,copyright_year,start_real,stop_real,duration,pri,filesize,' + 'sched_status,errors,data_errors,config_name,owner,creator,comment,genre', columns: { disp_title: { - renderer: tvheadend.displayWithYearAndDuplicateRenderer() - }, - disp_subtitle: { - renderer: tvheadend.displayWithDuplicateRenderer() + renderer: tvheadend.displayWithYearAndDuplicateRenderer() }, - disp_summary: { - renderer: tvheadend.displayWithDuplicateRenderer() + disp_extratext: { + renderer: tvheadend.displayWithDuplicateRenderer() }, filesize: { renderer: tvheadend.filesizeRenderer() @@ -597,12 +593,12 @@ tvheadend.dvr_finished = function(panel, index) { } }, del: false, - list: 'disp_title,disp_subtitle,disp_summary,episode_disp,channelname,' + + list: 'disp_title,disp_extratext,episode_disp,channelname,' + 'start_real,stop_real,duration,filesize,copyright_year,' + 'sched_status,errors,data_errors,playcount,url,config_name,owner,creator,comment,', columns: { disp_title: { - renderer: tvheadend.displayWithYearRenderer(), + renderer: tvheadend.displayWithYearRenderer(), }, filesize: { renderer: tvheadend.filesizeRenderer() @@ -713,7 +709,7 @@ tvheadend.dvr_failed = function(panel, index) { del: true, delquestion: _('Do you really want to delete the selected recordings?') + '

' + _('The associated file will be removed from storage.'), - list: 'disp_title,disp_subtitle,disp_summary,episode_disp,channelname,' + + list: 'disp_title,disp_extratext,episode_disp,channelname,' + 'image,copyright_year,start_real,stop_real,duration,filesize,status,' + 'sched_status,errors,data_errors,playcount,url,config_name,owner,creator,comment', columns: { @@ -788,12 +784,12 @@ tvheadend.dvr_removed = function(panel, index) { uilevel: 'expert', edit: { params: { list: tvheadend.admin ? "retention,owner,comment" : "retention,comment" } }, del: true, - list: 'disp_title,disp_subtitle,disp_summary,episode_disp,channelname,image,' + + list: 'disp_title,disp_extratext,episode_disp,channelname,image,' + 'copyright_year,start_real,stop_real,duration,status,' + 'sched_status,errors,data_errors,url,config_name,owner,creator,comment', columns: { disp_title: { - renderer: tvheadend.displayWithYearRenderer(), + renderer: tvheadend.displayWithYearRenderer(), }, }, sort: { -- 2.47.3