summaryrefslogtreecommitdiff
path: root/menusched.c
diff options
context:
space:
mode:
authorhorchi <vdr@jwendel.de>2017-03-15 20:05:03 +0100
committerhorchi <vdr@jwendel.de>2017-03-15 20:05:03 +0100
commit484b744d47a901e2537edcab5f4b10bbc5e9b22e (patch)
tree5032215691c36d9a8f6da184fb0d1969a62b8c48 /menusched.c
parent3345d4c5afa59a3a7f536fec61fb314bc00640c6 (diff)
downloadvdr-plugin-epg2vdr-484b744d47a901e2537edcab5f4b10bbc5e9b22e.tar.gz
vdr-plugin-epg2vdr-484b744d47a901e2537edcab5f4b10bbc5e9b22e.tar.bz2
added extra data to plugin interface
Diffstat (limited to 'menusched.c')
-rw-r--r--menusched.c81
1 files changed, 72 insertions, 9 deletions
diff --git a/menusched.c b/menusched.c
index 82f4a31..8ed2b64 100644
--- a/menusched.c
+++ b/menusched.c
@@ -196,7 +196,8 @@ cMenuEpgScheduleItem::eScheduleSortMode cMenuEpgScheduleItem::sortMode = ssmAllT
cMenuEpgScheduleItem::cMenuEpgScheduleItem(cMenuDb* db, const cEvent* Event,
const cChannel* Channel, bool WithDate)
{
- ownEvent = 0;
+ event = 0;
+ eventReady = no;
menuDb = db;
if (Event)
@@ -211,17 +212,13 @@ cMenuEpgScheduleItem::cMenuEpgScheduleItem(cMenuDb* db, const cEvent* Event,
fflush(inMem);
fclose(inMem);
- ownEvent = new cEpgEvent(Event->EventID());
+ event = new cEpgEvent(Event->EventID());
inMem = fmemopen(bp, strlen(bp), "r");
- ownEvent->Read(inMem);
+ event->Read(inMem);
fclose(inMem);
-
- ownEvent->setImageCount(1);
}
}
- event = ownEvent ? ownEvent : Event;
-
channel = Channel;
withDate = WithDate;
timerMatch = tmNone;
@@ -230,7 +227,7 @@ cMenuEpgScheduleItem::cMenuEpgScheduleItem(cMenuDb* db, const cEvent* Event,
cMenuEpgScheduleItem::~cMenuEpgScheduleItem()
{
- delete ownEvent;
+ delete event;
}
//***************************************************************************
@@ -306,12 +303,78 @@ bool cMenuEpgScheduleItem::Update(bool Force)
}
//***************************************************************************
-// SetMenuItem
+// Set Menu Item
//***************************************************************************
void cMenuEpgScheduleItem::SetMenuItem(cSkinDisplayMenu* DisplayMenu,
int Index, bool Current, bool Selectable)
{
+ if (event && !eventReady)
+ {
+ // lookup and enrich event with data of events table
+
+ menuDb->useeventsDb->clear();
+ menuDb->useeventsDb->setValue("USEID", (int)event->EventID());
+
+ if (menuDb->selectEventById->find())
+ {
+ const char* fields[] =
+ {
+ "imagecount", // int
+ "numrating", // int
+ "year", // ascii 10
+ "category", // ascii 50
+ "country", // ascii 50
+ "audio", // ascii 50
+
+ "txtrating", // ascii 100
+ "genre", // ascii 100
+ "flags", // ascii 100
+ "commentator", // ascii 200
+ "tipp", // ascii 250
+ "rating", // ascii 250
+ "moderator", // ascii 250
+ "music", // ascii 250
+ "screenplay", // ascii 500
+ "shortreview", // ascii 500
+
+ "guest", // text 1000
+ "producer", // text 1000
+ "camera", // text 1000
+ "director", // text 1000
+ "topic", // ascii 1000
+
+ "other", // text 2000
+ "shortdescription", // mtext 3000
+ "actor", // mtext 5000
+ "longdescription", // mtext 25000
+ "cntlongdescription", // MText 25000
+
+ 0
+ };
+
+ for (int i = 0; fields[i]; i++)
+ {
+ cDbValue* value = menuDb->useeventsDb->getValue(fields[i]);
+
+ if (!value || value->isEmpty())
+ continue;
+
+ if (value->getField()->hasFormat(cDBS::ffAscii) || value->getField()->hasFormat(cDBS::ffText) || value->getField()->hasFormat(cDBS::ffMText))
+ event->setValue(fields[i], value->getStrValue());
+ else
+ event->setValue(fields[i], value->getIntValue());
+ }
+ }
+ else
+ {
+ tell(0, "Info: Event (%d) not found", event->EventID());
+ }
+
+ menuDb->selectEventById->freeResult();
+ eventReady = yes;
+ }
+
if (!DisplayMenu->SetItemEvent(event, Index, Current, Selectable, channel,
withDate, (eTimerMatch)timerMatch))
{