diff options
-rw-r--r-- | HISTORY | 2 | ||||
-rw-r--r-- | HISTORY.DE | 2 | ||||
-rw-r--r-- | doc-src/de/epgsearchcats.conf.5.txt | 4 | ||||
-rw-r--r-- | doc-src/en/epgsearchcats.conf.5.txt | 4 | ||||
-rw-r--r-- | epgsearchcats.c | 24 | ||||
-rw-r--r-- | epgsearchcats.h | 1 | ||||
-rw-r--r-- | epgsearchtools.c | 18 | ||||
-rw-r--r-- | epgsearchtools.h | 2 | ||||
-rw-r--r-- | recdone.c | 4 |
9 files changed, 47 insertions, 14 deletions
@@ -1,7 +1,7 @@ VDR Plugin 'epgsearch' Revision History --------------------------------------- -2011-xx-xx; Version 1.0.1 +2012-05-xx; Version 1.0.1 new: - in the menu 'recordings done' you can now toggle the blue key to 'Orphaned' to show recordings with vanished search timers. @@ -1,7 +1,7 @@ VDR Plugin 'epgsearch' Revision History --------------------------------------- -2011-xx-xx: Version 1.0.1 +2012-05-xx: Version 1.0.1 neu: - Im Menu 'Erledigte Aufnahmen' kann nun mit der blauen Taste zu 'Verwaiste' umgeschaltet werden, um Aufnahmen anzuzeigen, zu denen es keine Suchtimer mehr gibt. diff --git a/doc-src/de/epgsearchcats.conf.5.txt b/doc-src/de/epgsearchcats.conf.5.txt index 884dbe1..69a9bb0 100644 --- a/doc-src/de/epgsearchcats.conf.5.txt +++ b/doc-src/de/epgsearchcats.conf.5.txt @@ -34,10 +34,12 @@ Auszug aus einer F<epgsearchcats.conf>: The order of items determines the order listed in epgsearch. It does not depend on the ID, which is used by epgsearch. Format: - ID|category name|name in menu|values separated by ',' (option)|searchmode + ID|category name(,format)|name in menu|values separated by ',' (option)|searchmode - 'ID' should be a unique positive integer (changing the id later on will force you to reedit your search timers!) - 'category name' is the name in your epg.data + you can optinally add a format specifier for numeric values e.g. + Episode,%02i - 'name in menu' is the name displayed in epgsearch. - 'values' is an optional list of possible values if you omit the list, the entry turns to an edit field in epgsearch, diff --git a/doc-src/en/epgsearchcats.conf.5.txt b/doc-src/en/epgsearchcats.conf.5.txt index 149e269..2aae3a5 100644 --- a/doc-src/en/epgsearchcats.conf.5.txt +++ b/doc-src/en/epgsearchcats.conf.5.txt @@ -32,11 +32,13 @@ the category name as also the value. =head1 SYNTAX - ID|category name|name in menu|values separated by ','(option)|searchmode(option) + ID|category name(,format)|name in menu|values separated by ','(option)|searchmode(option) - 'ID' should be a unique positive integer (changing the id later on will force you to re-edit your search timers!) - 'category name' is the name as delivered by the EPG provider, e.g. 'Genre' + you can optionally provide a format specifier for numeric values, e.g. + Episode,%02i - 'name in menu' is the name displayed in epgsearch. - 'values' is an optional list of possible values - 'searchmode' specifies the search mode: diff --git a/epgsearchcats.c b/epgsearchcats.c index 5458369..8428ac2 100644 --- a/epgsearchcats.c +++ b/epgsearchcats.c @@ -34,6 +34,7 @@ cSearchExtCat::cSearchExtCat(void) { id = 0; name = NULL; + format = NULL; menuname = NULL; searchmode = 1; // default: all substrings must exist values = NULL; @@ -82,8 +83,19 @@ bool cSearchExtCat::Parse(const char *s) switch (parameter) { case 1: id = atoi(value); break; - case 2: name = strdup(value); - break; + case 2: + { + name = strdup(value); + format=strchr(name,','); + if (format) + { + *format=0; + format++; + char cset[]="%0123456789di"; + if (strspn(format,cset)!=strlen(format)) format=NULL; + } + break; + } case 3: menuname = strdup(value); break; case 4: @@ -128,8 +140,14 @@ const char *cSearchExtCat::ToText(void) for(int i=0; i<nvalues; i++) sValues += string(values[i]) + ((i<nvalues-1)?", ":""); - msprintf(&buffer, "%d|%s|%s|%s|%d", + if (format) + { + msprintf(&buffer, "%d|%s,%s|%s|%s|%d", + id, name, format, menuname, sValues.c_str(), searchmode); + } else { + msprintf(&buffer, "%d|%s|%s|%s|%d", id, name, menuname, sValues.c_str(), searchmode); + } return buffer; } diff --git a/epgsearchcats.h b/epgsearchcats.h index 7909c90..68aef94 100644 --- a/epgsearchcats.h +++ b/epgsearchcats.h @@ -33,6 +33,7 @@ class cSearchExtCat : public cListObject { public: int id; char* name; + char* format; char* menuname; int searchmode; // text comarison: // 0 - substring, diff --git a/epgsearchtools.c b/epgsearchtools.c index c744a6e..ae1915f 100644 --- a/epgsearchtools.c +++ b/epgsearchtools.c @@ -216,10 +216,10 @@ char* GetExtEPGValue(const cEvent* e, cSearchExtCat* SearchExtCat) { if (!e || !SearchExtCat) return NULL; - return GetExtEPGValue(e->Description(), SearchExtCat->name); + return GetExtEPGValue(e->Description(), SearchExtCat->name, SearchExtCat->format); } -char* GetExtEPGValue(const char* description, const char* catname) +char* GetExtEPGValue(const char* description, const char* catname, const char *format) { if (isempty(description)) return NULL; @@ -247,6 +247,16 @@ char* GetExtEPGValue(const char* description, const char* catname) char* value = NULL; msprintf(&value, "%s", cat + strlen(tmp)-1); + if (format) + { + int ivalue; + if (sscanf(value,"%8i",&ivalue)==1) + { + free(value); + value = NULL; + msprintf(&value, format, ivalue); + } + } free(descr); free(tmp); @@ -659,8 +669,8 @@ bool EventsMatch(const cEvent* event1, const cEvent* event2, bool compareTitle, { if (catvaluesAvoidRepeat & (1<<index)) { - char* CatValue1 = GetExtEPGValue(Descr1, SearchExtCat->name); - char* CatValue2 = GetExtEPGValue(Descr2, SearchExtCat->name); + char* CatValue1 = GetExtEPGValue(Descr1, SearchExtCat->name, SearchExtCat->format); + char* CatValue2 = GetExtEPGValue(Descr2, SearchExtCat->name, SearchExtCat->format); if ((!CatValue1 && CatValue2) || (!CatValue2 && CatValue1) || (CatValue1 && CatValue2 && strcmp(CatValue1, CatValue2) != 0)) diff --git a/epgsearchtools.h b/epgsearchtools.h index 27ba968..ea70cf8 100644 --- a/epgsearchtools.h +++ b/epgsearchtools.h @@ -117,7 +117,7 @@ class cEvent; char* IndentMenuItem(const char*, int indentions=1); bool MatchesSearchMode(const char* test, const char* values, int searchmode, const char* delim, int tolerance); char* GetExtEPGValue(const cEvent* e, cSearchExtCat* SearchExtCat); -char* GetExtEPGValue(const char* description, const char* catname); +char* GetExtEPGValue(const char* description, const char* catname, const char *format); char* GetAuxValue(const char* aux, const char* name); char* GetAuxValue(const cRecording *recording, const char* name); char* GetAuxValue(const cTimer* timer, const char* name); @@ -248,8 +248,8 @@ bool CatValuesMatch(unsigned long catvaluesAvoidRepeat, const string& rDescr, co { if (catvaluesAvoidRepeat & (1<<index)) { - char* eCatValue = GetExtEPGValue(eDescr.c_str(), SearchExtCat->name); - char* rCatValue = GetExtEPGValue(rDescr.c_str(), SearchExtCat->name); + char* eCatValue = GetExtEPGValue(eDescr.c_str(), SearchExtCat->name, SearchExtCat->format); + char* rCatValue = GetExtEPGValue(rDescr.c_str(), SearchExtCat->name, SearchExtCat->format); if ((!eCatValue && rCatValue) || (!rCatValue && eCatValue) || (eCatValue && rCatValue && strcmp(eCatValue, rCatValue) != 0)) |