]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
EPG: Replace 'subtitle or summary' with extratext
authorJaroslav Kysela <perex@perex.cz>
Mon, 29 Jan 2018 16:35:07 +0000 (17:35 +0100)
committerJaroslav Kysela <perex@perex.cz>
Mon, 29 Jan 2018 16:42:28 +0000 (17:42 +0100)
src/api/api_epg.c
src/epg.c
src/epg.h
src/webui/static/app/epg.js

index efe62ea15b2857da9299c0fb1caf3f106b4a6b1e..ec4a33137b10ee52d386151de49bfe7dc6e0e8b0 100644 (file)
@@ -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 },
index ee9f563058a915c8f3469d4988fc7920dda5951b..7e72990614e82017867e5b982f94d459308e4971 100644 (file)
--- 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)
index e5f8609721095e6472cc03187717cfd2da9181e6..2effa80f37ebe1b6123df85f714ef7eef983d997 100644 (file)
--- 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,
index 1cf216853fc53d90a656b55b17b65e555f0f1771..73f573f1aecfc9214d82e33f909f11ef20729828 100644 (file)
@@ -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' },