summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave <vdr@pickles.me.uk>2016-05-04 17:43:19 +0100
committerDave <vdr@pickles.me.uk>2016-05-04 17:43:19 +0100
commit457dc3cf0c6a92c6546ceb73793efe3377ca1394 (patch)
tree097d9abd19b3c817c4673deccde1ee70650bb0f6
parentf881c2c4d6c882f83140867389514adeffeec0e5 (diff)
downloadvdrtva-457dc3cf0c6a92c6546ceb73793efe3377ca1394.tar.gz
vdrtva-457dc3cf0c6a92c6546ceb73793efe3377ca1394.tar.bz2
OSD: Display future timers for each series link.
-rw-r--r--vdrtva-2.3.c25
-rw-r--r--vdrtva.c25
-rw-r--r--vdrtva.h2
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));
}
diff --git a/vdrtva.c b/vdrtva.c
index 71aed33..9933fe2 100644
--- a/vdrtva.c
+++ b/vdrtva.c
@@ -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));
}
diff --git a/vdrtva.h b/vdrtva.h
index 810ec01..96736ac 100644
--- a/vdrtva.h
+++ b/vdrtva.h
@@ -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;
};