From: Jaroslav Kysela Date: Mon, 29 Jan 2018 16:35:07 +0000 (+0100) Subject: EPG: Replace 'subtitle or summary' with extratext X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=76818c0cf3cdb17444b79545857251d2c4699109;p=thirdparty%2Ftvheadend.git EPG: Replace 'subtitle or summary' with extratext --- diff --git a/src/api/api_epg.c b/src/api/api_epg.c index efe62ea15..ec4a33137 100644 --- a/src/api/api_epg.c +++ b/src/api/api_epg.c @@ -245,6 +245,8 @@ api_epg_filter_add_str api_epg_filter_set_str(&eq->summary, v, comp); else if (!strcmp(k, "description")) api_epg_filter_set_str(&eq->description, v, comp); + else if (!strcmp(k, "extratext")) + api_epg_filter_set_str(&eq->extratext, v, comp); } static void @@ -294,6 +296,7 @@ static struct strtab sortcmptab[] = { { "subtitle", ESK_SUBTITLE }, { "summary", ESK_SUMMARY }, { "description", ESK_DESCRIPTION }, + { "extratext", ESK_EXTRATEXT }, { "channelName", ESK_CHANNEL }, { "channelNumber", ESK_CHANNEL_NUM }, { "starRating", ESK_STARS }, diff --git a/src/epg.c b/src/epg.c index ee9f56305..7e7299061 100644 --- a/src/epg.c +++ b/src/epg.c @@ -3153,6 +3153,22 @@ static int _epg_sort_description_descending ( const void *a, const void *b, void return _epg_sort_description_ascending(a, b, eq) * -1; } +static int _epg_sort_extratext_ascending ( const void *a, const void *b, void *eq ) +{ + int r = _epg_sort_subtitle_ascending(a, b, eq); + if (r == 0) { + r = _epg_sort_summary_ascending(a, b, eq); + if (r == 0) + return _epg_sort_description_ascending(a, b, eq); + } + return r; +} + +static int _epg_sort_extratext_descending ( const void *a, const void *b, void *eq ) +{ + return _epg_sort_extratext_ascending(a, b, eq) * -1; +} + static int _epg_sort_channel_ascending ( const void *a, const void *b, void *eq ) { char *s1 = strdup(channel_get_name((*(epg_broadcast_t**)a)->channel, "")); @@ -3238,6 +3254,7 @@ epg_query ( epg_query_t *eq, access_t *perm ) if (_eq_init_str(&eq->subtitle)) goto fin; if (_eq_init_str(&eq->summary)) goto fin; if (_eq_init_str(&eq->description)) goto fin; + if (_eq_init_str(&eq->extratext)) goto fin; if (_eq_init_str(&eq->channel_name)) goto fin; if (eq->stitle) @@ -3283,6 +3300,7 @@ epg_query ( epg_query_t *eq, access_t *perm ) case ESK_SUBTITLE: fcn = _epg_sort_subtitle_ascending; break; case ESK_SUMMARY: fcn = _epg_sort_summary_ascending; break; case ESK_DESCRIPTION: fcn = _epg_sort_description_ascending; break; + case ESK_EXTRATEXT: fcn = _epg_sort_extratext_ascending; break; case ESK_CHANNEL: fcn = _epg_sort_channel_ascending; break; case ESK_CHANNEL_NUM: fcn = _epg_sort_channel_num_ascending; break; case ESK_STARS: fcn = _epg_sort_stars_ascending; break; @@ -3299,6 +3317,7 @@ epg_query ( epg_query_t *eq, access_t *perm ) case ESK_SUBTITLE: fcn = _epg_sort_subtitle_descending; break; case ESK_SUMMARY: fcn = _epg_sort_summary_descending; break; case ESK_DESCRIPTION: fcn = _epg_sort_description_descending; break; + case ESK_EXTRATEXT: fcn = _epg_sort_extratext_descending; break; case ESK_CHANNEL: fcn = _epg_sort_channel_descending; break; case ESK_CHANNEL_NUM: fcn = _epg_sort_channel_num_descending; break; case ESK_STARS: fcn = _epg_sort_stars_descending; break; @@ -3315,6 +3334,7 @@ fin: _eq_done_str(&eq->subtitle); _eq_done_str(&eq->summary); _eq_done_str(&eq->description); + _eq_done_str(&eq->extratext); _eq_done_str(&eq->channel_name); if (eq->stitle) diff --git a/src/epg.h b/src/epg.h index e5f860972..2effa80f3 100644 --- a/src/epg.h +++ b/src/epg.h @@ -694,6 +694,7 @@ typedef struct epg_query { epg_filter_str_t subtitle; epg_filter_str_t summary; epg_filter_str_t description; + epg_filter_str_t extratext; epg_filter_num_t episode; epg_filter_num_t stars; epg_filter_num_t age; @@ -720,6 +721,7 @@ typedef struct epg_query { ESK_SUBTITLE, ESK_SUMMARY, ESK_DESCRIPTION, + ESK_EXTRATEXT, ESK_CHANNEL, ESK_CHANNEL_NUM, ESK_STARS, diff --git a/src/webui/static/app/epg.js b/src/webui/static/app/epg.js index 1cf216853..73f573f1a 100644 --- a/src/webui/static/app/epg.js +++ b/src/webui/static/app/epg.js @@ -1,4 +1,4 @@ -insertContentGroupClearOption = function( scope, records, options ){ +insertContentGroupClearOption = function(scope, records, options) { var placeholder = Ext.data.Record.create(['val', 'key']); scope.insert(0,new placeholder({val: _('(Clear filter)'), key: '-1'})); }; @@ -10,7 +10,7 @@ tvheadend.ContentGroupStore = tvheadend.idnode_get_enum({ } }); -insertCategoryClearOption = function( scope, records, options ){ +insertCategoryClearOption = function(scope, records, options) { var placeholder = Ext.data.Record.create(['key', 'val']); scope.insert(0,new placeholder({key: '-1', val: _('(Clear filter)')})); }; @@ -457,6 +457,7 @@ tvheadend.epg = function() { { name: 'subtitle' }, { name: 'summary' }, { name: 'description' }, + { name: 'extratext' }, { name: 'episodeOnscreen' }, { name: 'image' }, { @@ -538,11 +539,15 @@ tvheadend.epg = function() { return value; } - function renderTextSubtitle(value, meta, record) { + function renderExtraText(value, meta, record) { setMetaAttr(meta, record); - if (!value) + value = record.data.subtitle; + if (!value) { value = record.data.summary; + if (!value) + value = record.data.description; + } return value; } @@ -603,11 +608,11 @@ tvheadend.epg = function() { }, { width: 250, - id: 'subtitle', - header: _("Subtitle or summary"), - tooltip: _("Subtitle or summary"), - dataIndex: 'subtitle', - renderer: renderTextSubtitle + id: 'extratext', + header: _("Extra text"), + tooltip: _("Extra text: subtitle or summary or description"), + dataIndex: 'extratext', + renderer: renderExtraText }, { width: 100, @@ -711,7 +716,7 @@ tvheadend.epg = function() { local: false, filters: [ { type: 'string', dataIndex: 'title' }, - { type: 'string', dataIndex: 'subtitle' }, + { type: 'string', dataIndex: 'extratext' }, { type: 'string', dataIndex: 'episodeOnscreen' }, { type: 'intsplit', dataIndex: 'channelNumber', intsplit: 1000000 }, { type: 'string', dataIndex: 'channelName' },