diff options
| author | Dave <vdr@pickles.me.uk> | 2016-05-04 17:43:19 +0100 |
|---|---|---|
| committer | Dave <vdr@pickles.me.uk> | 2016-05-04 17:43:19 +0100 |
| commit | 457dc3cf0c6a92c6546ceb73793efe3377ca1394 (patch) | |
| tree | 097d9abd19b3c817c4673deccde1ee70650bb0f6 | |
| parent | f881c2c4d6c882f83140867389514adeffeec0e5 (diff) | |
| download | vdrtva-457dc3cf0c6a92c6546ceb73793efe3377ca1394.tar.gz vdrtva-457dc3cf0c6a92c6546ceb73793efe3377ca1394.tar.bz2 | |
OSD: Display future timers for each series link.
| -rw-r--r-- | vdrtva-2.3.c | 25 | ||||
| -rw-r--r-- | vdrtva.c | 25 | ||||
| -rw-r--r-- | vdrtva.h | 2 |
3 files changed, 39 insertions, 13 deletions
diff --git a/vdrtva-2.3.c b/vdrtva-2.3.c index 76808ea..b09ed2c 100644 --- a/vdrtva-2.3.c +++ b/vdrtva-2.3.c @@ -1612,10 +1612,10 @@ int cMenuLinkItem::Compare(const cListObject &ListObject) const // How many active timers are there for this series? -int cMenuLinkItem::TimerCount(void) { +int cMenuLinkItem::getTimers(cTvaLog *timerslist) { int count = 0; LOCK_TIMERS_READ; - if ((Timers->Count() == 0) || (!captureComplete)) return 99; + if ((Timers->Count() == 0) || (!captureComplete)) return 0; for (const cTimer *ti = Timers->First(); ti; ti = Timers->Next(ti)) { const cEvent *event = ti->Event(); if (event && ti->HasFlags(tfActive) && (ti->WeekDays() == 0)) { @@ -1625,7 +1625,12 @@ int cMenuLinkItem::TimerCount(void) { cEventCRID *eventcrid = EventCRIDs.GetByID(channel->Number(), event->EventID()); if (eventcrid && chanda) { cString scrid = cString::sprintf("%s%s", chanda->DA(),eventcrid->sCRID()); - if (!strcmp(scrid, sCRID())) count++; + if (!strcmp(scrid, sCRID())) { + if(timerslist) { + timerslist->Append(" %s %s\n", *DayDateTime(event->StartTime()), channel->Name()); + } + count++; + } } } } @@ -1682,7 +1687,7 @@ eOSState cMenuLinks::Delete(void) } int Index = Current(); cMenuLinkItem *item = (cMenuLinkItem *)Get(Index); - int timercount = item->TimerCount(); + int timercount = item->getTimers(NULL); cString prompt; if (timercount > 1) { prompt = cString::sprintf(tr("Delete series link & %d timers?"), timercount); @@ -1719,8 +1724,16 @@ eOSState cMenuLinks::Info(void) eventcount++; icrids++; } - cString message = cString::sprintf("Series CRID: %s\nTotal Events: %d\nActive Timers: %d", - menuitem->sCRID(), eventcount, menuitem->TimerCount()); + cTvaLog timerslist; // Abuse our logging class for string-handling + cString message; + if (menuitem->getTimers(&timerslist)) { + message = cString::sprintf("Series CRID: %s\nTotal Events: %d\nActive Timers:\n\n%s", + menuitem->sCRID(), eventcount, timerslist.Buffer()); + } + else { + message = cString::sprintf("Series CRID: %s\nTotal Events: %d\nNo Active Timers", + menuitem->sCRID(), eventcount); + } if (linkitem->Title()) { return AddSubMenu(new cMenuText(linkitem->Title(), message, fontOsd)); } @@ -1594,9 +1594,9 @@ int cMenuLinkItem::Compare(const cListObject &ListObject) const // How many active timers are there for this series? -int cMenuLinkItem::TimerCount(void) { +int cMenuLinkItem::getTimers(cTvaLog *timerslist) { int count = 0; - if ((Timers.Count() == 0) || (!captureComplete)) return 99; + if ((Timers.Count() == 0) || (!captureComplete)) return 0; for (cTimer *ti = Timers.First(); ti; ti = Timers.Next(ti)) { const cEvent *event = ti->Event(); if (event && ti->HasFlags(tfActive) && (ti->WeekDays() == 0)) { @@ -1605,7 +1605,12 @@ int cMenuLinkItem::TimerCount(void) { cEventCRID *eventcrid = EventCRIDs.GetByID(channel->Number(), event->EventID()); if (eventcrid && chanda) { cString scrid = cString::sprintf("%s%s", chanda->DA(),eventcrid->sCRID()); - if (!strcmp(scrid, sCRID())) count++; + if (!strcmp(scrid, sCRID())) { + if(timerslist) { + timerslist->Append(" %s %s\n", *DayDateTime(event->StartTime()), channel->Name()); + } + count++; + } } } } @@ -1662,7 +1667,7 @@ eOSState cMenuLinks::Delete(void) } int Index = Current(); cMenuLinkItem *item = (cMenuLinkItem *)Get(Index); - int timercount = item->TimerCount(); + int timercount = item->getTimers(NULL); cString prompt; if (timercount > 1) { prompt = cString::sprintf(tr("Delete series link & %d timers?"), timercount); @@ -1699,8 +1704,16 @@ eOSState cMenuLinks::Info(void) eventcount++; icrids++; } - cString message = cString::sprintf("Series CRID: %s\nTotal Events: %d\nActive Timers: %d", - menuitem->sCRID(), eventcount, menuitem->TimerCount()); + cTvaLog timerslist; // Abuse our logging class for string-handling + cString message; + if (menuitem->getTimers(&timerslist)) { + message = cString::sprintf("Series CRID: %s\nTotal Events: %d\nActive Timers:\n\n%s", + menuitem->sCRID(), eventcount, timerslist.Buffer()); + } + else { + message = cString::sprintf("Series CRID: %s\nTotal Events: %d\nNo Active Timers", + menuitem->sCRID(), eventcount); + } if (linkitem->Title()) { return AddSubMenu(new cMenuText(linkitem->Title(), message, fontOsd)); } @@ -207,7 +207,7 @@ public: cMenuLinkItem(cLinkItem *LinkItem); char * sCRID(void) { return linkitem->sCRID(); } cLinkItem * LinkItem(void) { return linkitem; } - int TimerCount(void); + int getTimers(cTvaLog *timerslist); virtual void Set(void); virtual int Compare(const cListObject &ListObject) const; }; |
