mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
The 'summary' field of a timer definition has been renamed to 'aux'
This commit is contained in:
parent
6b74723336
commit
bc2e59909f
11
HISTORY
11
HISTORY
@ -4371,3 +4371,14 @@ Video Disk Recorder Revision History
|
||||
in libsi/descriptor.c obsolete (thanks to Marcel Wiesweg).
|
||||
- The "Ok" key in the "Jump" mode of the replay progress display now confirms the
|
||||
jump instead of closing the display (thanks to Christoph Haubrich).
|
||||
- The 'summary' field of a timer definition has been renamed to 'aux', and is now
|
||||
only used for external applications to store auxiliary information with a timer,
|
||||
which has no meaning whatsoever to VDR itself.
|
||||
The contents of the 'aux' field of a timer is copied into the recording's
|
||||
'info.vdr' file, using the tag character '@'.
|
||||
- The description of a recording is now taken exclusively from its related EPG
|
||||
data. If an application wants to use a different description it needs to set
|
||||
it with SVDRP/PUTE and use table ID 0x00, so that it won't be overwritten (as
|
||||
a side effect, however, this also disables VPS for such an event).
|
||||
- There is no more "Summary" menu when pressing "Ok" in the "Timers" menu.
|
||||
The "Ok" key now always opens the "Edit timer" menu.
|
||||
|
24
i18n.c
24
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.247 2006/02/04 14:17:54 kls Exp $
|
||||
* $Id: i18n.c 1.248 2006/02/25 12:07:27 kls Exp $
|
||||
*
|
||||
* Translations provided by:
|
||||
*
|
||||
@ -569,28 +569,6 @@ const tI18nPhrase Phrases[] = {
|
||||
"Hvad vises som det næste?",
|
||||
"Následující program",
|
||||
},
|
||||
{ "Summary",
|
||||
"Inhalt",
|
||||
"Vsebina",
|
||||
"Sommario",
|
||||
"Inhoud",
|
||||
"Resumo",
|
||||
"Résumé",
|
||||
"Sammendrag",
|
||||
"Yhteenveto",
|
||||
"Podsumowanie",
|
||||
"Resumen",
|
||||
"Ðåñéå÷üìåíï",
|
||||
"Sammanfattning",
|
||||
"Cuprins",
|
||||
"Tartalom",
|
||||
"Resum",
|
||||
"¾ßØáÐÝØÕ",
|
||||
"Sadr¾aj",
|
||||
"Ülevaade",
|
||||
"Omtale",
|
||||
"Obsah",
|
||||
},
|
||||
// Button texts (should not be more than 10 characters!):
|
||||
{ "Button$Edit",
|
||||
"Editieren",
|
||||
|
17
menu.c
17
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.416 2006/02/25 10:27:03 kls Exp $
|
||||
* $Id: menu.c 1.417 2006/02/25 12:09:22 kls Exp $
|
||||
*/
|
||||
|
||||
#include "menu.h"
|
||||
@ -776,7 +776,6 @@ private:
|
||||
eOSState Delete(void);
|
||||
eOSState OnOff(void);
|
||||
virtual void Move(int From, int To);
|
||||
eOSState Summary(void);
|
||||
cTimer *CurrentTimer(void);
|
||||
public:
|
||||
cMenuTimers(void);
|
||||
@ -870,16 +869,6 @@ void cMenuTimers::Move(int From, int To)
|
||||
isyslog("timer %d moved to %d", From + 1, To + 1);
|
||||
}
|
||||
|
||||
eOSState cMenuTimers::Summary(void)
|
||||
{
|
||||
if (HasSubMenu() || Count() == 0)
|
||||
return osContinue;
|
||||
cTimer *ti = CurrentTimer();
|
||||
if (ti && !isempty(ti->Summary()))
|
||||
return AddSubMenu(new cMenuText(tr("Summary"), ti->Summary()));
|
||||
return Edit(); // convenience for people not using the Summary feature ;-)
|
||||
}
|
||||
|
||||
eOSState cMenuTimers::ProcessKey(eKeys Key)
|
||||
{
|
||||
int TimerNumber = HasSubMenu() ? Count() : -1;
|
||||
@ -887,8 +876,8 @@ eOSState cMenuTimers::ProcessKey(eKeys Key)
|
||||
|
||||
if (state == osUnknown) {
|
||||
switch (Key) {
|
||||
case kOk: return Summary();
|
||||
case kRed: return Edit();
|
||||
case kOk: return Edit();
|
||||
case kRed: return Edit();//XXX
|
||||
case kGreen: return New();
|
||||
case kYellow: return Delete();
|
||||
case kBlue: if (Setup.SortTimers)
|
||||
|
21
recording.c
21
recording.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: recording.c 1.137 2006/02/19 13:09:29 kls Exp $
|
||||
* $Id: recording.c 1.138 2006/02/25 11:49:48 kls Exp $
|
||||
*/
|
||||
|
||||
#include "recording.h"
|
||||
@ -261,6 +261,7 @@ cRecordingInfo::cRecordingInfo(const cChannel *Channel, const cEvent *Event)
|
||||
channelID = Channel ? Channel->GetChannelID() : tChannelID::InvalidID;
|
||||
ownEvent = Event ? NULL : new cEvent(0);
|
||||
event = ownEvent ? ownEvent : Event;
|
||||
aux = NULL;
|
||||
if (Channel) {
|
||||
// Since the EPG data's component records can carry only a single
|
||||
// language code, let's see whether the channel's PID data has
|
||||
@ -299,6 +300,7 @@ cRecordingInfo::cRecordingInfo(const cChannel *Channel, const cEvent *Event)
|
||||
cRecordingInfo::~cRecordingInfo()
|
||||
{
|
||||
delete ownEvent;
|
||||
free(aux);
|
||||
}
|
||||
|
||||
void cRecordingInfo::SetData(const char *Title, const char *ShortText, const char *Description)
|
||||
@ -311,6 +313,12 @@ void cRecordingInfo::SetData(const char *Title, const char *ShortText, const cha
|
||||
((cEvent *)event)->SetDescription(Description);
|
||||
}
|
||||
|
||||
void cRecordingInfo::SetAux(const char *Aux)
|
||||
{
|
||||
free(aux);
|
||||
aux = Aux ? strdup(Aux) : NULL;
|
||||
}
|
||||
|
||||
bool cRecordingInfo::Read(FILE *f)
|
||||
{
|
||||
if (ownEvent) {
|
||||
@ -329,6 +337,9 @@ bool cRecordingInfo::Read(FILE *f)
|
||||
channelID = tChannelID::FromString(t);
|
||||
}
|
||||
break;
|
||||
case '@': free(aux);
|
||||
aux = strdup(t);
|
||||
break;
|
||||
default: if (!ownEvent->Parse(s)) {
|
||||
esyslog("ERROR: EPG data problem in line %d", line);
|
||||
return false;
|
||||
@ -346,6 +357,8 @@ bool cRecordingInfo::Write(FILE *f, const char *Prefix) const
|
||||
if (channelID.Valid())
|
||||
fprintf(f, "%sC %s\n", Prefix, *channelID.ToString());
|
||||
event->Dump(f, Prefix, true);
|
||||
if (aux)
|
||||
fprintf(f, "%s@ %s\n", Prefix, aux);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -497,11 +510,7 @@ cRecording::cRecording(cTimer *Timer, const cEvent *Event)
|
||||
lifetime = Timer->Lifetime();
|
||||
// handle info:
|
||||
info = new cRecordingInfo(Timer->Channel(), Event);
|
||||
// this is a somewhat ugly hack to get the 'summary' information from the
|
||||
// timer into the recording info, but it saves us from having to actually
|
||||
// copy the entire event data:
|
||||
if (!isempty(Timer->Summary()))
|
||||
info->SetData(isempty(info->Title()) ? Timer->File() : NULL, NULL, Timer->Summary());
|
||||
info->SetAux(Timer->Aux());
|
||||
}
|
||||
|
||||
cRecording::cRecording(const char *FileName)
|
||||
|
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: recording.h 1.51 2006/02/18 16:03:40 kls Exp $
|
||||
* $Id: recording.h 1.52 2006/02/25 10:51:15 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __RECORDING_H
|
||||
@ -44,14 +44,17 @@ private:
|
||||
tChannelID channelID;
|
||||
const cEvent *event;
|
||||
cEvent *ownEvent;
|
||||
char *aux;
|
||||
cRecordingInfo(const cChannel *Channel = NULL, const cEvent *Event = NULL);
|
||||
void SetData(const char *Title, const char *ShortText, const char *Description);
|
||||
void SetAux(const char *Aux);
|
||||
public:
|
||||
~cRecordingInfo();
|
||||
const char *Title(void) const { return event->Title(); }
|
||||
const char *ShortText(void) const { return event->ShortText(); }
|
||||
const char *Description(void) const { return event->Description(); }
|
||||
const cComponents *Components(void) const { return event->Components(); }
|
||||
const char *Aux(void) const { return aux; }
|
||||
bool Read(FILE *f);
|
||||
bool Write(FILE *f, const char *Prefix = "") const;
|
||||
};
|
||||
|
29
timers.c
29
timers.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: timers.c 1.46 2006/02/03 15:20:14 kls Exp $
|
||||
* $Id: timers.c 1.47 2006/02/25 10:44:50 kls Exp $
|
||||
*/
|
||||
|
||||
#include "timers.h"
|
||||
@ -41,7 +41,7 @@ cTimer::cTimer(bool Instant, bool Pause, cChannel *Channel)
|
||||
priority = Pause ? Setup.PausePriority : Setup.DefaultPriority;
|
||||
lifetime = Pause ? Setup.PauseLifetime : Setup.DefaultLifetime;
|
||||
*file = 0;
|
||||
summary = NULL;
|
||||
aux = NULL;
|
||||
event = NULL;
|
||||
if (Instant && channel)
|
||||
snprintf(file, sizeof(file), "%s%s", Setup.MarkInstantRecord ? "@" : "", *Setup.NameInstantRecord ? Setup.NameInstantRecord : channel->Name());
|
||||
@ -76,20 +76,20 @@ cTimer::cTimer(const cEvent *Event)
|
||||
const char *Title = Event->Title();
|
||||
if (!isempty(Title))
|
||||
strn0cpy(file, Event->Title(), sizeof(file));
|
||||
summary = NULL;
|
||||
aux = NULL;
|
||||
event = Event;
|
||||
}
|
||||
|
||||
cTimer::~cTimer()
|
||||
{
|
||||
free(summary);
|
||||
free(aux);
|
||||
}
|
||||
|
||||
cTimer& cTimer::operator= (const cTimer &Timer)
|
||||
{
|
||||
memcpy(this, &Timer, sizeof(*this));
|
||||
if (summary)
|
||||
summary = strdup(summary);
|
||||
if (aux)
|
||||
aux = strdup(aux);
|
||||
event = NULL;
|
||||
return *this;
|
||||
}
|
||||
@ -109,9 +109,7 @@ cString cTimer::ToText(bool UseChannelID)
|
||||
{
|
||||
char *buffer;
|
||||
strreplace(file, ':', '|');
|
||||
strreplace(summary, '\n', '|');
|
||||
asprintf(&buffer, "%u:%s:%s:%04d:%04d:%d:%d:%s:%s\n", flags, UseChannelID ? *Channel()->GetChannelID().ToString() : *itoa(Channel()->Number()), *PrintDay(day, weekdays), start, stop, priority, lifetime, file, summary ? summary : "");
|
||||
strreplace(summary, '|', '\n');
|
||||
asprintf(&buffer, "%u:%s:%s:%04d:%04d:%d:%d:%s:%s\n", flags, UseChannelID ? *Channel()->GetChannelID().ToString() : *itoa(Channel()->Number()), *PrintDay(day, weekdays), start, stop, priority, lifetime, file, aux ? aux : "");
|
||||
strreplace(file, '|', ':');
|
||||
return cString(buffer, true);
|
||||
}
|
||||
@ -226,8 +224,8 @@ bool cTimer::Parse(const char *s)
|
||||
char *channelbuffer = NULL;
|
||||
char *daybuffer = NULL;
|
||||
char *filebuffer = NULL;
|
||||
free(summary);
|
||||
summary = NULL;
|
||||
free(aux);
|
||||
aux = NULL;
|
||||
//XXX Apparently sscanf() doesn't work correctly if the last %a argument
|
||||
//XXX results in an empty string (this first occured when the EIT gathering
|
||||
//XXX was put into a separate thread - don't know why this happens...
|
||||
@ -244,17 +242,16 @@ bool cTimer::Parse(const char *s)
|
||||
s = s2;
|
||||
}
|
||||
bool result = false;
|
||||
if (8 <= sscanf(s, "%u :%a[^:]:%a[^:]:%d :%d :%d :%d :%a[^:\n]:%a[^\n]", &flags, &channelbuffer, &daybuffer, &start, &stop, &priority, &lifetime, &filebuffer, &summary)) {
|
||||
if (8 <= sscanf(s, "%u :%a[^:]:%a[^:]:%d :%d :%d :%d :%a[^:\n]:%a[^\n]", &flags, &channelbuffer, &daybuffer, &start, &stop, &priority, &lifetime, &filebuffer, &aux)) {
|
||||
ClrFlags(tfRecording);
|
||||
if (summary && !*skipspace(summary)) {
|
||||
free(summary);
|
||||
summary = NULL;
|
||||
if (aux && !*skipspace(aux)) {
|
||||
free(aux);
|
||||
aux = NULL;
|
||||
}
|
||||
//TODO add more plausibility checks
|
||||
result = ParseDay(daybuffer, day, weekdays);
|
||||
strn0cpy(file, filebuffer, MaxFileName);
|
||||
strreplace(file, '|', ':');
|
||||
strreplace(summary, '|', '\n');
|
||||
if (isnumber(channelbuffer))
|
||||
channel = Channels.GetByNumber(atoi(channelbuffer));
|
||||
else
|
||||
|
6
timers.h
6
timers.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: timers.h 1.24 2006/01/15 13:29:44 kls Exp $
|
||||
* $Id: timers.h 1.25 2006/02/25 10:42:10 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __TIMERS_H
|
||||
@ -38,7 +38,7 @@ private:
|
||||
int priority;
|
||||
int lifetime;
|
||||
char file[MaxFileName];
|
||||
char *summary;
|
||||
char *aux;
|
||||
const cEvent *event;
|
||||
public:
|
||||
cTimer(bool Instant = false, bool Pause = false, cChannel *Channel = NULL);
|
||||
@ -59,7 +59,7 @@ public:
|
||||
int Lifetime(void) const { return lifetime; }
|
||||
const char *File(void) const { return file; }
|
||||
time_t FirstDay(void) const { return weekdays ? day : 0; }
|
||||
const char *Summary(void) const { return summary; }
|
||||
const char *Aux(void) const { return aux; }
|
||||
cString ToText(bool UseChannelID = false);
|
||||
cString ToDescr(void) const;
|
||||
const cEvent *Event(void) const { return event; }
|
||||
|
19
vdr.5
19
vdr.5
@ -8,7 +8,7 @@
|
||||
.\" License as specified in the file COPYING that comes with the
|
||||
.\" vdr distribution.
|
||||
.\"
|
||||
.\" $Id: vdr.5 1.49 2006/02/18 15:59:00 kls Exp $
|
||||
.\" $Id: vdr.5 1.50 2006/02/25 11:16:02 kls Exp $
|
||||
.\"
|
||||
.TH vdr 5 "19 Feb 2006" "1.3.43" "Video Disk Recorder Files"
|
||||
.SH NAME
|
||||
@ -321,11 +321,11 @@ recording (if that data is available). If at the time of recording either
|
||||
of these cannot be determined, \fBTITLE\fR will default to the channel name, and
|
||||
\fBEPISODE\fR will default to a blank.
|
||||
.TP
|
||||
.B Summary
|
||||
Arbitrary text that describes the recording made by this timer.
|
||||
Any newline characters in the summary have to be replaced by '|', and
|
||||
the summary may contain ':' characters. If this field is not empty, its
|
||||
contents will be written into the \fIinfo.vdr\fR file of the recording.
|
||||
.B Auxiliary data
|
||||
An arbitrary string that can be used by external applications to store any
|
||||
kind of data related to this timer. The string must not contain any newline
|
||||
characters. If this field is not empty, its contents will be written into the
|
||||
\fIinfo.vdr\fR file of the recording with the '@' tag.
|
||||
.SS SOURCES
|
||||
The file \fIsources.conf\fR defines the codes to be used in the \fBSource\fR field
|
||||
of channels in \fIchannels.conf\fR and assigns descriptive texts to them.
|
||||
@ -567,8 +567,9 @@ actual contents of this file.
|
||||
.SS INFO
|
||||
The file \fIinfo.vdr\fR (if present in a recording directory) contains
|
||||
a description of the recording, derived from the EPG data at recording time
|
||||
(if such data was available) or the \fBSummary\fR field of the corresponding
|
||||
timer. This is a plain ASCII file and contains tagged lines like the \fBEPG DATA\fR
|
||||
(if such data was available). The \fBAux\fR field of the corresponding
|
||||
timer (if given) is copied into this file, using the '@' tag.
|
||||
This is a plain ASCII file and contains tagged lines like the \fBEPG DATA\fR
|
||||
file (see the description of the \fIepg.data\fR file). Note that the tags
|
||||
c, E, e and V will not appear in an \fIinfo.vdr\fR file.
|
||||
.SS RESUME
|
||||
@ -626,6 +627,8 @@ All other tags are optional (although every event
|
||||
should at least have a \fBT\fR entry).
|
||||
There may be several \fBX\fR tags, depending on the number of tracks (video, audio etc.)
|
||||
the event provides.
|
||||
The special tag character \fB@\fR is used to mark the \fBauxiliary data\fR from
|
||||
a timer definition in the \fIinfo.vdr\fR file.
|
||||
|
||||
.TS
|
||||
tab (@);
|
||||
|
Loading…
Reference in New Issue
Block a user