diff options
author | horchi <vdr@jwendel.de> | 2017-03-15 20:05:03 +0100 |
---|---|---|
committer | horchi <vdr@jwendel.de> | 2017-03-15 20:05:03 +0100 |
commit | 484b744d47a901e2537edcab5f4b10bbc5e9b22e (patch) | |
tree | 5032215691c36d9a8f6da184fb0d1969a62b8c48 /menusched.c | |
parent | 3345d4c5afa59a3a7f536fec61fb314bc00640c6 (diff) | |
download | vdr-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.c | 81 |
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)) { |