1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
|
#include <vdr/filter.h>
#include <vdr/device.h>
#include <vdr/status.h>
#include <vdr/interface.h>
#include <vdr/menu.h>
class cTvaFilter : public cFilter {
private:
cSectionSyncer sectionSyncer;
cPatFilter *patFilter;
protected:
virtual void Process(u_short Pid, u_char Tid, const u_char *Data, int Length);
public:
cTvaFilter(void);
};
class cTvaStatusMonitor : public cStatus {
private:
time_t timeradded;
const cTimer *lasttimer;
protected:
virtual void TimerChange(const cTimer *Timer, eTimerChange Change);
// Indicates a change in the timer settings.
// If Change is tcAdd or tcDel, Timer points to the timer that has
// been added or will be deleted, respectively. In case of tcMod,
// Timer is NULL; this indicates that some timer has been changed.
// Note that tcAdd and tcDel are always also followed by a tcMod.
public:
cTvaStatusMonitor(void);
int GetTimerAddedDelta(void);
void ClearTimerAdded(void);
const cTimer *GetLastTimer() { return lasttimer; }
};
class cTvaMenuSetup : public cMenuSetupPage {
private:
int newcollectionperiod;
int newlifetime;
int newpriority;
int newseriesLifetime;
int newupdatetime;
int newcheckcollisions;
protected:
virtual void Store(void);
public:
cTvaMenuSetup(void);
};
class cTvaLog {
private:
char *buffer, *mailfrom, *mailto;
int length;
int size;
public:
cTvaLog(void);
~cTvaLog(void);
void Append(const char *Fmt, ...);
const char* Buffer() { return buffer; }
int Length(void);
void Clear() { length = 0; }
void MailLog(void);
void setmailTo(char *opt);
const char * mailTo() { return mailto; }
void setmailFrom(char *opt);
const char * mailFrom() { return mailfrom; }
};
class cChanDA : public cListObject {
private:
int cid;
char *defaultAuthority;
public:
cChanDA(int Cid, char *DA);
~cChanDA(void);
int Cid(void) { return cid; }
char * DA(void) { return defaultAuthority; }
};
class cChanDAs : public cRwLock, public cConfig<cChanDA> {
private:
int maxNumber;
cHash<cChanDA> chanDAHash;
public:
cChanDAs(void);
~cChanDAs(void);
int MaxNumber(void) { return maxNumber; }
cChanDA *GetByChannelID(int cid);
cChanDA *NewChanDA(int Cid, char *DA);
};
class cEventCRID : public cListObject {
private:
tEventID eid;
int cid;
char *iCrid;
char *sCrid;
public:
cEventCRID(int Cid, tEventID Eid, char *iCRID, char *sCRID);
~cEventCRID(void);
tEventID Eid(void) { return eid; }
char * iCRID(void) { return iCrid; }
char * sCRID(void) { return sCrid; }
int Cid(void) { return cid; }
};
class cEventCRIDs : public cRwLock, public cConfig<cEventCRID> {
private:
int maxNumber;
cHash<cEventCRID> EventCRIDHash;
public:
cEventCRIDs(void);
~cEventCRIDs(void);
int MaxNumber(void) { return maxNumber; }
cEventCRID *GetByID(int Cid, tEventID Eid);
cEventCRID *NewEventCRID(int Cid, tEventID Eid, char *iCRID, char *sCRID);
void Expire(void);
};
class cSuggestCRID : public cListObject {
private:
char *iCrid;
char *gCrid;
int cid;
public:
cSuggestCRID(int Cid, char *iCRID, char *gCRID);
~cSuggestCRID(void);
char * iCRID(void) { return iCrid; }
char * gCRID(void) { return gCrid; }
int Cid(void) { return cid; }
virtual int Compare(const cListObject &ListObject) const;
};
class cSuggestCRIDs : public cRwLock, public cConfig<cSuggestCRID> {
private:
int maxNumber;
public:
cSuggestCRIDs(void);
int MaxNumber(void) { return maxNumber; }
cSuggestCRID *NewSuggestCRID(int Cid, char *icrid, char *gcrid);
void DeDup(void);
void Expire(void);
};
class cLinkItem : public cListObject {
private:
char *sCrid;
time_t modtime;
char *iCrids;
char *path;
char *title;
char *channelname;
public:
cLinkItem(const char *sCRID, time_t ModTime, const char *iCRIDs, const char *Path, const char *Title, const char *channelName);
~cLinkItem(void);
void SetModtime(time_t modtime);
void SetIcrids(const char *icrids);
char * iCRIDs(void) { return iCrids; }
char * sCRID(void) { return sCrid; }
time_t ModTime(void) { return modtime; }
char * Path(void) { return path; }
char * Title(void) { return title; }
char * channelName(void) { return channelname; }
};
class cLinks : public cRwLock, public cConfig<cLinkItem> {
private:
int maxNumber;
bool dirty;
public:
cLinks(void);
int MaxNumber(void) { return maxNumber; }
cLinkItem *NewLinkItem(const char *sCRID, time_t ModTime, const char *iCRIDs, const char *Path, const char *Title, const char *channelName);
bool AddSeriesLink(const char *scrid, time_t modtime, const char *icrid, const char *path, const char *title, const char *channelName);
void Load(void);
void Save(void);
bool DeleteItem(const char *sCRID);
void Expire(void);
void SetUpdated(void);
void DeleteTimersForSCRID(const char *sCRID);
cLinkItem * getLinkItem(const char *sCRID);
bool isEventNeeded(const char *iCRID);
};
class cMenuLinks : public cOsdMenu {
private:
void Propagate(void);
eOSState Delete(void);
eOSState Info(void);
public:
cMenuLinks(void);
virtual eOSState ProcessKey(eKeys Key);
};
class cMenuLinkItem : public cOsdItem {
private:
cLinkItem *linkitem;
public:
cMenuLinkItem(cLinkItem *LinkItem);
char * sCRID(void) { return linkitem->sCRID(); }
cLinkItem * LinkItem(void) { return linkitem; }
int getTimers(cTvaLog *timerslist);
virtual void Set(void);
virtual int Compare(const cListObject &ListObject) const;
};
#if VDRVERSNUM < 10728
// Copied from timers.c v1.7.29
class cSortedTimers : public cVector<const cTimer *> {
public:
cSortedTimers(void);
};
#endif
|