summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhorchi <vdr@jwendel.de>2017-03-14 07:30:24 +0100
committerhorchi <vdr@jwendel.de>2017-03-14 07:30:24 +0100
commit3345d4c5afa59a3a7f536fec61fb314bc00640c6 (patch)
treecaeb9c570da706f088ddea3727d8a704b1810255
parentfc75b2cfa67c6b910293059614325c10a720f995 (diff)
downloadvdr-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.h7
-rw-r--r--epg2vdr.c1
-rw-r--r--menu.h2
-rw-r--r--menusched.c33
-rw-r--r--menutimers.c3
-rw-r--r--service.c34
-rw-r--r--service.h9
7 files changed, 80 insertions, 9 deletions
diff --git a/HISTORY.h b/HISTORY.h
index e8e524c..860be1f 100644
--- a/HISTORY.h
+++ b/HISTORY.h
@@ -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
diff --git a/epg2vdr.c b/epg2vdr.c
index 1002c65..6858d8d 100644
--- a/epg2vdr.c
+++ b/epg2vdr.c
@@ -9,6 +9,7 @@
#include <vdr/tools.h>
#include "plgconfig.h"
+
#include "update.h"
#include "menu.h"
#include "handler.h"
diff --git a/menu.h b/menu.h
index afde73e..40a1197 100644
--- a/menu.h
+++ b/menu.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);
diff --git a/service.c b/service.c
index 20ccf14..f0185ff 100644
--- a/service.c
+++ b/service.c
@@ -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;
+}
diff --git a/service.h b/service.h
index 7651316..8e40f75 100644
--- a/service.h
+++ b/service.h
@@ -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; }
};
//***************************************************************************