From 6fef98aa971f8ee51b21d95f9fe3f975a13858f1 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sat, 21 Feb 2004 15:30:35 +0100 Subject: [PATCH] Implemented an "EPG linger time" --- CONTRIBUTORS | 1 + HISTORY | 2 ++ MANUAL | 3 +++ config.c | 5 ++++- config.h | 3 ++- epg.c | 4 ++-- i18n.c | 20 +++++++++++++++++++- menu.c | 8 +++++--- 8 files changed, 38 insertions(+), 8 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 6719ef41..bc19b3ea 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -561,6 +561,7 @@ Jaakko Hyv for fixing the minimum lifespan of deleted recordings for suggesting to improve channel switching in case of numerical input by switching as soon as the channel is unique + for implementing an "EPG linger time" Dennis Noordsij for reporting a small glitch when switching channels diff --git a/HISTORY b/HISTORY index 5749d91a..613d48a9 100644 --- a/HISTORY +++ b/HISTORY @@ -2689,3 +2689,5 @@ Video Disk Recorder Revision History will still be shown in the display (provided the broadcasters handle the 'running status' flag correctly). This also applies to programmes that have a start time that is in the future, but are already running. +- Implemented an "EPG linger time", which can be set to have older EPG information + still displayed in the "Schedule" menu (thanks to Jaakko Hyvätti). diff --git a/MANUAL b/MANUAL index 80977a90..beb7444c 100644 --- a/MANUAL +++ b/MANUAL @@ -462,6 +462,9 @@ Version 1.2 be fixed accordingly. Restart VDR if you want to make sure all data is fixed. + EPG linger time = 0 The time (in minutes) within which old EPG information + shall still be displayed in the "Schedule" menu. + Set system time = no Defines whether the system time will be set according to the time received from the DVB data stream. Note that this works only if VDR is running under a user diff --git a/config.c b/config.c index 25b64d32..530da577 100644 --- a/config.c +++ b/config.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: config.c 1.123 2004/02/09 16:57:59 kls Exp $ + * $Id: config.c 1.124 2004/02/21 15:05:40 kls Exp $ */ #include "config.h" @@ -262,6 +262,7 @@ cSetup::cSetup(void) EPGLanguages[0] = -1; EPGScanTimeout = 5; EPGBugfixLevel = 2; + EPGLinger = 0; SVDRPTimeout = 300; ZapTimeout = 3; SortTimers = 1; @@ -406,6 +407,7 @@ bool cSetup::Parse(const char *Name, const char *Value) else if (!strcasecmp(Name, "EPGLanguages")) return ParseLanguages(Value, EPGLanguages); else if (!strcasecmp(Name, "EPGScanTimeout")) EPGScanTimeout = atoi(Value); else if (!strcasecmp(Name, "EPGBugfixLevel")) EPGBugfixLevel = atoi(Value); + else if (!strcasecmp(Name, "EPGLinger")) EPGLinger = atoi(Value); else if (!strcasecmp(Name, "SVDRPTimeout")) SVDRPTimeout = atoi(Value); else if (!strcasecmp(Name, "ZapTimeout")) ZapTimeout = atoi(Value); else if (!strcasecmp(Name, "SortTimers")) SortTimers = atoi(Value); @@ -457,6 +459,7 @@ bool cSetup::Save(void) StoreLanguages("EPGLanguages", EPGLanguages); Store("EPGScanTimeout", EPGScanTimeout); Store("EPGBugfixLevel", EPGBugfixLevel); + Store("EPGLinger", EPGLinger); Store("SVDRPTimeout", SVDRPTimeout); Store("ZapTimeout", ZapTimeout); Store("SortTimers", SortTimers); diff --git a/config.h b/config.h index 14b3a1ba..34cad46f 100644 --- a/config.h +++ b/config.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: config.h 1.187 2004/02/09 17:04:09 kls Exp $ + * $Id: config.h 1.188 2004/02/21 15:04:53 kls Exp $ */ #ifndef __CONFIG_H @@ -220,6 +220,7 @@ public: int EPGLanguages[I18nNumLanguages + 1]; int EPGScanTimeout; int EPGBugfixLevel; + int EPGLinger; int SVDRPTimeout; int ZapTimeout; int SortTimers; diff --git a/epg.c b/epg.c index fc5cc830..1cd0d446 100644 --- a/epg.c +++ b/epg.c @@ -7,7 +7,7 @@ * Original version (as used in VDR before 1.3.0) written by * Robert Schneider and Rolf Hakenes . * - * $Id: epg.c 1.9 2004/02/21 14:33:11 kls Exp $ + * $Id: epg.c 1.10 2004/02/21 15:15:47 kls Exp $ */ #include "epg.h" @@ -523,7 +523,7 @@ void cSchedule::Cleanup(time_t Time) Event = events.Get(a); if (!Event) break; - if (Event->StartTime() + Event->Duration() + 3600 < Time) { // adding one hour for safety + if (Event->StartTime() + Event->Duration() + Setup.EPGLinger * 60 + 3600 < Time) { // adding one hour for safety events.Del(Event); a--; } diff --git a/i18n.c b/i18n.c index abf7ff15..bdd88348 100644 --- a/i18n.c +++ b/i18n.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: i18n.c 1.147 2004/02/20 13:58:14 kls Exp $ + * $Id: i18n.c 1.148 2004/02/21 15:14:36 kls Exp $ * * Translations provided by: * @@ -2355,6 +2355,24 @@ const tI18nPhrase Phrases[] = { "Nivell de correcció de la Guia", "ÃàÞÒÕÝì ÚÞààÕÚæØØ ÞèØÑÞÚ", }, + { "Setup.EPG$EPG linger time (min)", + "Alte EPG-Daten anzeigen (min)",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "",// TODO + "Vanha tieto näkyy (min)", + "",// TODO + "",// TODO + "",// TODO + "Visa gammal info (min)", + "",// TODO + "",// TODO + "",// TODO + "",// TODO + }, { "Setup.EPG$Set system time", "Systemzeit stellen", "Nastavi sistemski cas", diff --git a/menu.c b/menu.c index bf189692..15ce09b2 100644 --- a/menu.c +++ b/menu.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 1.287 2004/02/21 13:53:25 kls Exp $ + * $Id: menu.c 1.288 2004/02/21 15:26:47 kls Exp $ */ #include "menu.h" @@ -1366,12 +1366,13 @@ void cMenuSchedule::PrepareSchedule(cChannel *Channel) if (schedules) { const cSchedule *Schedule = schedules->GetSchedule(Channel->GetChannelID()); if (Schedule) { + const cEvent *PresentEvent = Schedule->GetPresentEvent(); int num = Schedule->NumEvents(); - time_t now = time(NULL); + time_t now = time(NULL) - Setup.EPGLinger * 60; for (int a = 0; a < num; a++) { const cEvent *Event = Schedule->GetEventNumber(a); if (Event->StartTime() + Event->Duration() > now) - Add(new cMenuScheduleItem(Event)); + Add(new cMenuScheduleItem(Event), Event == PresentEvent); } } } @@ -2026,6 +2027,7 @@ void cMenuSetupEPG::Setup(void) Add(new cMenuEditIntItem( tr("Setup.EPG$EPG scan timeout (h)"), &data.EPGScanTimeout)); Add(new cMenuEditIntItem( tr("Setup.EPG$EPG bugfix level"), &data.EPGBugfixLevel, 0, MAXEPGBUGFIXLEVEL)); + Add(new cMenuEditIntItem( tr("Setup.EPG$EPG linger time (min)"), &data.EPGLinger, 0)); Add(new cMenuEditBoolItem(tr("Setup.EPG$Set system time"), &data.SetSystemTime)); if (data.SetSystemTime) Add(new cMenuEditTranItem(tr("Setup.EPG$Use time from transponder"), &data.TimeTransponder));