-
Notifications
You must be signed in to change notification settings - Fork 345
/
recordinginfo.h
250 lines (203 loc) · 7.3 KB
/
recordinginfo.h
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
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
#ifndef _RECORDING_INFO_H_
#define _RECORDING_INFO_H_
#include "mythtvexp.h"
#include "programinfo.h"
class RecordingRule;
/** \class RecordingInfo
* \brief Holds information on a %TV Program one might wish to record.
*
* This class exxtends ProgramInfo with additional information about
* scheduled recordings and contains helper methods to aid in the
* scheduling of recordings.
*/
// Note: methods marked with "//pi" could be moved to ProgramInfo without
// breaking linkage or adding new classes to libmyth. For some of them
// RecordingRule::signalChange would need to be moved to remoteutil.{cpp,h},
// but that is a static method which is fairly easy to move.
// These methods are in RecordingInfo because it currently makes sense
// for them to be in this class in terms of related functions being here.
class RecordingInfo;
class RecordingRule;
typedef AutoDeleteDeque<RecordingInfo*> RecordingList;
class MTV_PUBLIC RecordingInfo : public ProgramInfo
{
public:
RecordingInfo(void) :
oldrecstatus(rsUnknown),
savedrecstatus(rsUnknown),
future(false),
record(NULL) {}
RecordingInfo(const RecordingInfo &other) :
ProgramInfo(other),
oldrecstatus(other.oldrecstatus),
savedrecstatus(other.savedrecstatus),
future(other.future),
record(NULL) {}
RecordingInfo(const ProgramInfo &other) :
ProgramInfo(other),
oldrecstatus(rsUnknown),
savedrecstatus(rsUnknown),
future(false),
record(NULL) {}
RecordingInfo(uint _chanid, const QDateTime &_recstartts) :
ProgramInfo(_chanid, _recstartts),
oldrecstatus(rsUnknown),
savedrecstatus(rsUnknown),
future(false),
record(NULL) {}
RecordingInfo(QStringList::const_iterator &it,
QStringList::const_iterator end) :
ProgramInfo(it, end),
oldrecstatus(rsUnknown),
savedrecstatus(rsUnknown),
future(false),
record(NULL) {}
/// Create RecordingInfo from 'program'+'record'+'channel' tables,
/// used in scheduler.cpp @ ~ 3296
RecordingInfo(
const QString &title,
const QString &subtitle,
const QString &description,
uint season,
uint episode,
const QString &category,
uint chanid,
const QString &chanstr,
const QString &chansign,
const QString &channame,
const QString &recgroup,
const QString &playgroup,
const QString &hostname,
const QString &storagegroup,
uint year,
const QString &seriesid,
const QString &programid,
const QString &inetref,
const QString &catType,
int recpriority,
const QDateTime &startts,
const QDateTime &endts,
const QDateTime &recstartts,
const QDateTime &recendts,
float stars,
const QDate &originalAirDate,
bool repeat,
RecStatusType oldrecstatus,
bool reactivate,
uint recordid,
uint parentid,
RecordingType rectype,
RecordingDupInType dupin,
RecordingDupMethodType dupmethod,
uint sourceid,
uint inputid,
uint cardid,
uint findid,
bool commfree,
uint subtitleType,
uint videoproperties,
uint audioproperties,
bool future);
/// Create RecordingInfo from 'record'+'channel' tables,
/// user in scheduler.cpp @ ~ 3566 & ~ 3643
RecordingInfo(
const QString &title,
const QString &subtitle,
const QString &description,
uint season,
uint episode,
const QString &category,
uint chanid,
const QString &chanstr,
const QString &chansign,
const QString &channame,
const QString &recgroup,
const QString &playgroup,
const QString &seriesid,
const QString &programid,
const QString &inetref,
int recpriority,
const QDateTime &startts,
const QDateTime &endts,
const QDateTime &recstartts,
const QDateTime &recendts,
RecStatusType recstatus,
uint recordid,
RecordingType rectype,
RecordingDupInType dupin,
RecordingDupMethodType dupmethod,
uint findid,
bool commfree);
// Create ProgramInfo that overlaps the desired time on the
// specified channel id.
typedef enum {
kNoProgram = 0,
kFoundProgram = 1,
kFakedLiveTVProgram = 2,
kFakedZeroMinProgram = 3,
} LoadStatus;
RecordingInfo(uint _chanid, const QDateTime &desiredts,
bool genUnknown, uint maxHours = 0,
LoadStatus *status = NULL);
public:
RecordingInfo &operator=(const RecordingInfo &other)
{ clone(other); return *this; }
RecordingInfo &operator=(const ProgramInfo &other)
{ clone(other); return *this; }
virtual void clone(const RecordingInfo &other,
bool ignore_non_serialized_data = false);
virtual void clone(const ProgramInfo &other,
bool ignore_non_serialized_data = false);
virtual void clear(void);
// Destructor
virtual ~RecordingInfo();
// Serializers
virtual void SubstituteMatches(QString &str);
// Quick gets
/// Creates a unique string that can be used to identify a
/// scheduled recording.
QString MakeUniqueSchedulerKey(void) const
{ return MakeUniqueKey(chanid, startts); }
// Used to query and set RecordingRule info
RecordingRule *GetRecordingRule(void);
int getRecordID(void);
int GetAutoRunJobs(void) const;
RecordingType GetProgramRecordingStatus(void);
QString GetProgramRecordingProfile(void) const;
void ApplyRecordStateChange(RecordingType newstate, bool save = true);
void ApplyRecordRecPriorityChange(int);
void ToggleRecord(void);
// these five can be moved to programinfo
void AddHistory(bool resched = true, bool forcedup = false,
bool future = false);//pi
void DeleteHistory(void);//pi
void ForgetHistory(void);//pi
void SetDupHistory(void);//pi
// Used to update database with recording info
void StartedRecording(QString ext);
void FinishedRecording(bool allowReRecord);
void UpdateRecordingEnd(void);//pi
void ReactivateRecording(void);//pi
void ApplyRecordRecID(void);//pi
void ApplyRecordRecGroupChange(const QString &newrecgroup);
void ApplyRecordPlayGroupChange(const QString &newrecgroup);
void ApplyStorageGroupChange(const QString &newstoragegroup);
void ApplyRecordRecTitleChange(const QString &newTitle,
const QString &newSubtitle,
const QString &newDescription);
void ApplyTranscoderProfileChange(const QString &profile) const;//pi
void ApplyTranscoderProfileChangeById(int);
RecStatusType oldrecstatus;
RecStatusType savedrecstatus;
bool future;
private:
mutable class RecordingRule *record;
protected:
static bool InsertProgram(const RecordingInfo *pg,
const RecordingRule *rule);
static QString unknownTitle;
};
Q_DECLARE_METATYPE(RecordingInfo*)
Q_DECLARE_METATYPE(RecordingInfo)
#endif // _RECORDING_INFO_H_
/* vim: set expandtab tabstop=4 shiftwidth=4: */