diff options
author | horchi <vdr@jwendel.de> | 2017-03-14 07:30:24 +0100 |
---|---|---|
committer | horchi <vdr@jwendel.de> | 2017-03-14 07:30:24 +0100 |
commit | 3345d4c5afa59a3a7f536fec61fb314bc00640c6 (patch) | |
tree | caeb9c570da706f088ddea3727d8a704b1810255 | |
parent | fc75b2cfa67c6b910293059614325c10a720f995 (diff) | |
download | vdr-plugin-epg2vdr-3345d4c5afa59a3a7f536fec61fb314bc00640c6.tar.gz vdr-plugin-epg2vdr-3345d4c5afa59a3a7f536fec61fb314bc00640c6.tar.bz2 |
2017-03-146: version 1.1.47 (horchi)\n - added: Started extended event interface for skins\n\n1.1.47
-rw-r--r-- | HISTORY.h | 7 | ||||
-rw-r--r-- | epg2vdr.c | 1 | ||||
-rw-r--r-- | menu.h | 2 | ||||
-rw-r--r-- | menusched.c | 33 | ||||
-rw-r--r-- | menutimers.c | 3 | ||||
-rw-r--r-- | service.c | 34 | ||||
-rw-r--r-- | service.h | 9 |
7 files changed, 80 insertions, 9 deletions
@@ -5,8 +5,8 @@ * */ -#define _VERSION "1.1.46" -#define VERSION_DATE "06.03.2017" +#define _VERSION "1.1.47" +#define VERSION_DATE "14.03.2017" #define DB_API 4 @@ -19,6 +19,9 @@ /* * ------------------------------------ +2017-03-146: version 1.1.47 (horchi) + - added: Started extended event interface for skins + 2017-03-06: version 1.1.46 (horchi) - added: Added column for future features to vdrs table @@ -9,6 +9,7 @@ #include <vdr/tools.h> #include "plgconfig.h" + #include "update.h" #include "menu.h" #include "handler.h" @@ -400,6 +400,7 @@ class cMenuEpgScheduleItem : public cOsdItem enum eScheduleSortMode { ssmAllThis, ssmThisThis, ssmThisAll, ssmAllAll }; // "which event(s) on which channel(s)" cMenuEpgScheduleItem(cMenuDb* db, const cEvent* Event, const cChannel* Channel = 0, bool WithDate = no); + ~cMenuEpgScheduleItem(); static void SetSortMode(eScheduleSortMode SortMode) { sortMode = SortMode; } static void IncSortMode() { sortMode = eScheduleSortMode((sortMode == ssmAllAll) ? ssmAllThis : sortMode + 1); } @@ -417,6 +418,7 @@ class cMenuEpgScheduleItem : public cOsdItem private: cMenuDb* menuDb; + cEpgEvent* ownEvent; static eScheduleSortMode sortMode; }; diff --git a/menusched.c b/menusched.c index 452c7b4..82f4a31 100644 --- a/menusched.c +++ b/menusched.c @@ -193,17 +193,46 @@ cMenuEpgScheduleItem::eScheduleSortMode cMenuEpgScheduleItem::sortMode = ssmAllT // Object //*************************************************************************** -cMenuEpgScheduleItem::cMenuEpgScheduleItem(cMenuDb* db, const cEvent* Event, const cChannel* Channel, bool WithDate) +cMenuEpgScheduleItem::cMenuEpgScheduleItem(cMenuDb* db, const cEvent* Event, + const cChannel* Channel, bool WithDate) { + ownEvent = 0; menuDb = db; - event = Event; + if (Event) + { + FILE* inMem = 0; + char* bp; + size_t size; + + if (inMem = open_memstream(&bp, &size)) + { + Event->Dump(inMem, "", yes); + fflush(inMem); + fclose(inMem); + + ownEvent = new cEpgEvent(Event->EventID()); + inMem = fmemopen(bp, strlen(bp), "r"); + ownEvent->Read(inMem); + fclose(inMem); + + ownEvent->setImageCount(1); + } + } + + event = ownEvent ? ownEvent : Event; + channel = Channel; withDate = WithDate; timerMatch = tmNone; Update(yes); } +cMenuEpgScheduleItem::~cMenuEpgScheduleItem() +{ + delete ownEvent; +} + //*************************************************************************** // Compare //*************************************************************************** diff --git a/menutimers.c b/menutimers.c index 011cc39..9c7b8d3 100644 --- a/menutimers.c +++ b/menutimers.c @@ -290,7 +290,8 @@ void cMenuEpgTimerItem::Set() File)); } -void cMenuEpgTimerItem::SetMenuItem(cSkinDisplayMenu *DisplayMenu, int Index, bool Current, bool Selectable) +void cMenuEpgTimerItem::SetMenuItem(cSkinDisplayMenu* DisplayMenu, int Index, + bool Current, bool Selectable) { if (!DisplayMenu->SetItemTimer(timer, Index, Current, Selectable)) DisplayMenu->SetItem(Text(), Index, Current, Selectable); @@ -69,3 +69,37 @@ cEpgEvent::cEpgEvent(tEventID EventID) { } + +bool cEpgEvent::Read(FILE *f) +{ + char *s; + int line = 0; + cReadLine ReadLine; + + while ((s = ReadLine.Read(f)) != NULL) { + line++; + char *t = skipspace(s + 1); + switch (*s) { + case 'E': { + unsigned int EventID; + time_t StartTime; + int Duration; + unsigned int TableID = 0; + unsigned int Version = 0xFF; // actual value is ignored + int n = sscanf(t, "%u %ld %d %X %X", &EventID, &StartTime, &Duration, &TableID, &Version); + if (n >= 3 && n <= 5) { + SetTableID(TableID); + SetStartTime(StartTime); + SetDuration(Duration); + } + break; + } + default: if (!Parse(s)) { + esyslog("ERROR: EPG data problem in line %d", line); + return false; + } + } + } + + return true; +} @@ -22,13 +22,13 @@ class cEpgEvent_Interface_V1 : public cEvent public: cEpgEvent_Interface_V1(tEventID EventID) - : cEvent(EventID) {} + : cEvent(EventID) { imageCount = 0; } - // #TODO ... getter + int getImageCount() const { return imageCount; } protected: - // #TODO ... attributes + int imageCount; }; //*************************************************************************** @@ -99,7 +99,8 @@ class cEpgEvent : public cEpgEvent_Interface_V1 cEpgEvent(tEventID EventID); virtual ~cEpgEvent() {} - // #TODO ... setter + bool Read(FILE *f); + void setImageCount(int count) { imageCount = count; } }; //*************************************************************************** |