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 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 <dennis.noordsij@wiral.com>
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
'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).

3
MANUAL
View File

@ -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

View File

@ -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);

View File

@ -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;

4
epg.c
View File

@ -7,7 +7,7 @@
* Original version (as used in VDR before 1.3.0) written by
* 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"
@ -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--;
}

20
i18n.c
View File

@ -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",

8
menu.c
View File

@ -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));