Implemented an "EPG linger time"

This commit is contained in:
Klaus Schmidinger 2004-02-21 15:30:35 +01:00
parent c969c77d9c
commit 6fef98aa97
8 changed files with 38 additions and 8 deletions

View File

@ -561,6 +561,7 @@ Jaakko Hyv
for fixing the minimum lifespan of deleted recordings for fixing the minimum lifespan of deleted recordings
for suggesting to improve channel switching in case of numerical input by switching for suggesting to improve channel switching in case of numerical input by switching
as soon as the channel is unique as soon as the channel is unique
for implementing an "EPG linger time"
Dennis Noordsij <dennis.noordsij@wiral.com> Dennis Noordsij <dennis.noordsij@wiral.com>
for reporting a small glitch when switching channels for reporting a small glitch when switching channels

View File

@ -2689,3 +2689,5 @@ Video Disk Recorder Revision History
will still be shown in the display (provided the broadcasters handle the will still be shown in the display (provided the broadcasters handle the
'running status' flag correctly). This also applies to programmes that have 'running status' flag correctly). This also applies to programmes that have
a start time that is in the future, but are already running. 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).

3
MANUAL
View File

@ -462,6 +462,9 @@ Version 1.2
be fixed accordingly. Restart VDR if you want to make sure be fixed accordingly. Restart VDR if you want to make sure
all data is fixed. 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 Set system time = no Defines whether the system time will be set according to
the time received from the DVB data stream. the time received from the DVB data stream.
Note that this works only if VDR is running under a user Note that this works only if VDR is running under a user

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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" #include "config.h"
@ -262,6 +262,7 @@ cSetup::cSetup(void)
EPGLanguages[0] = -1; EPGLanguages[0] = -1;
EPGScanTimeout = 5; EPGScanTimeout = 5;
EPGBugfixLevel = 2; EPGBugfixLevel = 2;
EPGLinger = 0;
SVDRPTimeout = 300; SVDRPTimeout = 300;
ZapTimeout = 3; ZapTimeout = 3;
SortTimers = 1; 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, "EPGLanguages")) return ParseLanguages(Value, EPGLanguages);
else if (!strcasecmp(Name, "EPGScanTimeout")) EPGScanTimeout = atoi(Value); else if (!strcasecmp(Name, "EPGScanTimeout")) EPGScanTimeout = atoi(Value);
else if (!strcasecmp(Name, "EPGBugfixLevel")) EPGBugfixLevel = 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, "SVDRPTimeout")) SVDRPTimeout = atoi(Value);
else if (!strcasecmp(Name, "ZapTimeout")) ZapTimeout = atoi(Value); else if (!strcasecmp(Name, "ZapTimeout")) ZapTimeout = atoi(Value);
else if (!strcasecmp(Name, "SortTimers")) SortTimers = atoi(Value); else if (!strcasecmp(Name, "SortTimers")) SortTimers = atoi(Value);
@ -457,6 +459,7 @@ bool cSetup::Save(void)
StoreLanguages("EPGLanguages", EPGLanguages); StoreLanguages("EPGLanguages", EPGLanguages);
Store("EPGScanTimeout", EPGScanTimeout); Store("EPGScanTimeout", EPGScanTimeout);
Store("EPGBugfixLevel", EPGBugfixLevel); Store("EPGBugfixLevel", EPGBugfixLevel);
Store("EPGLinger", EPGLinger);
Store("SVDRPTimeout", SVDRPTimeout); Store("SVDRPTimeout", SVDRPTimeout);
Store("ZapTimeout", ZapTimeout); Store("ZapTimeout", ZapTimeout);
Store("SortTimers", SortTimers); Store("SortTimers", SortTimers);

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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 #ifndef __CONFIG_H
@ -220,6 +220,7 @@ public:
int EPGLanguages[I18nNumLanguages + 1]; int EPGLanguages[I18nNumLanguages + 1];
int EPGScanTimeout; int EPGScanTimeout;
int EPGBugfixLevel; int EPGBugfixLevel;
int EPGLinger;
int SVDRPTimeout; int SVDRPTimeout;
int ZapTimeout; int ZapTimeout;
int SortTimers; int SortTimers;

4
epg.c
View File

@ -7,7 +7,7 @@
* Original version (as used in VDR before 1.3.0) written by * Original version (as used in VDR before 1.3.0) written by
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>. * Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
* *
* $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" #include "epg.h"
@ -523,7 +523,7 @@ void cSchedule::Cleanup(time_t Time)
Event = events.Get(a); Event = events.Get(a);
if (!Event) if (!Event)
break; 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); events.Del(Event);
a--; a--;
} }

20
i18n.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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: * Translations provided by:
* *
@ -2355,6 +2355,24 @@ const tI18nPhrase Phrases[] = {
"Nivell de correcció de la Guia", "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", { "Setup.EPG$Set system time",
"Systemzeit stellen", "Systemzeit stellen",
"Nastavi sistemski cas", "Nastavi sistemski cas",

8
menu.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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" #include "menu.h"
@ -1366,12 +1366,13 @@ void cMenuSchedule::PrepareSchedule(cChannel *Channel)
if (schedules) { if (schedules) {
const cSchedule *Schedule = schedules->GetSchedule(Channel->GetChannelID()); const cSchedule *Schedule = schedules->GetSchedule(Channel->GetChannelID());
if (Schedule) { if (Schedule) {
const cEvent *PresentEvent = Schedule->GetPresentEvent();
int num = Schedule->NumEvents(); int num = Schedule->NumEvents();
time_t now = time(NULL); time_t now = time(NULL) - Setup.EPGLinger * 60;
for (int a = 0; a < num; a++) { for (int a = 0; a < num; a++) {
const cEvent *Event = Schedule->GetEventNumber(a); const cEvent *Event = Schedule->GetEventNumber(a);
if (Event->StartTime() + Event->Duration() > now) 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 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 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)); Add(new cMenuEditBoolItem(tr("Setup.EPG$Set system time"), &data.SetSystemTime));
if (data.SetSystemTime) if (data.SetSystemTime)
Add(new cMenuEditTranItem(tr("Setup.EPG$Use time from transponder"), &data.TimeTransponder)); Add(new cMenuEditTranItem(tr("Setup.EPG$Use time from transponder"), &data.TimeTransponder));