MythTV  0.27pre
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Groups Pages
programtypes.cpp
Go to the documentation of this file.
1 // -*- Mode: c++ -*-
2 
3 #include <QDateTime>
4 #include <QMutex>
5 
6 #include "programtypes.h"
7 #include "mythdate.h"
8 
9 const char *kPlayerInUseID = "player";
10 const char *kPIPPlayerInUseID = "pipplayer";
11 const char *kPBPPlayerInUseID = "pbpplayer";
12 const char *kImportRecorderInUseID = "import_recorder";
13 const char *kRecorderInUseID = "recorder";
14 const char *kFileTransferInUseID = "filetransfer";
15 const char *kTruncatingDeleteInUseID = "truncatingdelete";
16 const char *kFlaggerInUseID = "flagger";
17 const char *kTranscoderInUseID = "transcoder";
18 const char *kPreviewGeneratorInUseID = "preview_generator";
19 const char *kJobQueueInUseID = "jobqueue";
20 const char *kCCExtractorInUseID = "ccextractor";
21 
23 {
24  switch (type)
25  {
26  case MARK_ALL: return "ALL";
27  case MARK_UNSET: return "UNSET";
28  case MARK_TMP_CUT_END: return "TMP_CUT_END";
29  case MARK_TMP_CUT_START:return "TMP_CUT_START";
30  case MARK_UPDATED_CUT: return "UPDATED_CUT";
31  case MARK_PLACEHOLDER: return "PLACEHOLDER";
32  case MARK_CUT_END: return "CUT_END";
33  case MARK_CUT_START: return "CUT_START";
34  case MARK_BOOKMARK: return "BOOKMARK";
35  case MARK_BLANK_FRAME: return "BLANK_FRAME";
36  case MARK_COMM_START: return "COMM_START";
37  case MARK_COMM_END: return "COMM_END";
38  case MARK_GOP_START: return "GOP_START";
39  case MARK_KEYFRAME: return "KEYFRAME";
40  case MARK_SCENE_CHANGE: return "SCENE_CHANGE";
41  case MARK_GOP_BYFRAME: return "GOP_BYFRAME";
42  case MARK_ASPECT_1_1: return "ASPECT_1_1 (depreciated)";
43  case MARK_ASPECT_4_3: return "ASPECT_4_3";
44  case MARK_ASPECT_16_9: return "ASPECT_16_9";
45  case MARK_ASPECT_2_21_1:return "ASPECT_2_21_1";
46  case MARK_ASPECT_CUSTOM:return "ASPECT_CUSTOM";
47  case MARK_VIDEO_WIDTH: return "VIDEO_WIDTH";
48  case MARK_VIDEO_HEIGHT: return "VIDEO_HEIGHT";
49  case MARK_VIDEO_RATE: return "VIDEO_RATE";
50  case MARK_DURATION_MS: return "DURATION_MS";
51  case MARK_TOTAL_FRAMES: return "TOTAL_FRAMES";
52  }
53 
54  return "unknown";
55 }
56 
57 QString toUIState(RecStatusType recstatus)
58 {
59  if (recstatus == rsRecorded || recstatus == rsWillRecord ||
60  recstatus == rsOtherShowing)
61  return "normal";
62 
63  if (recstatus == rsRecording || recstatus == rsTuning ||
64  recstatus == rsOtherRecording || recstatus == rsOtherTuning)
65  return "running";
66 
67  if (recstatus == rsConflict || recstatus == rsOffLine ||
68  recstatus == rsTunerBusy || recstatus == rsFailed ||
69  recstatus == rsAborted || recstatus == rsMissed)
70  {
71  return "error";
72  }
73 
74  if (recstatus == rsRepeat ||
75  recstatus == rsNeverRecord || recstatus == rsDontRecord ||
76  (recstatus != rsDontRecord && recstatus <= rsEarlierShowing))
77  {
78  return "disabled";
79  }
80 
81  return "warning";
82 }
83 
85 QString toString(RecStatusType recstatus, uint id)
86 {
87  QString ret = "-";
88  switch (recstatus)
89  {
90  case rsAborted:
91  ret = QObject::tr("A", "RecStatusChar rsAborted");
92  break;
93  case rsRecorded:
94  ret = QObject::tr("R", "RecStatusChar rsRecorded");
95  break;
96  case rsRecording:
97  ret = QString::number(id);
98  break;
99  case rsTuning:
100  ret = QString::number(id);
101  break;
102  case rsWillRecord:
103  ret = QString::number(id);
104  break;
105  case rsDontRecord:
106  ret = QObject::tr("X", "RecStatusChar rsDontRecord");
107  break;
108  case rsPreviousRecording:
109  ret = QObject::tr("P", "RecStatusChar rsPreviousRecording");
110  break;
111  case rsCurrentRecording:
112  ret = QObject::tr("R", "RecStatusChar rsCurrentRecording");
113  break;
114  case rsEarlierShowing:
115  ret = QObject::tr("E", "RecStatusChar rsEarlierShowing");
116  break;
117  case rsTooManyRecordings:
118  ret = QObject::tr("T", "RecStatusChar rsTooManyRecordings");
119  break;
120  case rsCancelled:
121  ret = QObject::tr("c", "RecStatusChar rsCancelled");
122  break;
123  case rsMissed:
124  ret = QObject::tr("M", "RecStatusChar rsMissed");
125  break;
126  case rsMissedFuture:
127  ret = "M";
128  break;
129  case rsConflict:
130  ret = QObject::tr("C", "RecStatusChar rsConflict");
131  break;
132  case rsLaterShowing:
133  ret = QObject::tr("L", "RecStatusChar rsLaterShowing");
134  break;
135  case rsRepeat:
136  ret = QObject::tr("r", "RecStatusChar rsRepeat");
137  break;
138  case rsInactive:
139  ret = QObject::tr("x", "RecStatusChar rsInactive");
140  break;
141  case rsLowDiskSpace:
142  ret = QObject::tr("K", "RecStatusChar rsLowDiskSpace");
143  break;
144  case rsTunerBusy:
145  ret = QObject::tr("B", "RecStatusChar rsTunerBusy");
146  break;
147  case rsFailed:
148  ret = QObject::tr("f", "RecStatusChar rsFailed");
149  break;
150  case rsNotListed:
151  ret = QObject::tr("N", "RecStatusChar rsNotListed");
152  break;
153  case rsNeverRecord:
154  ret = QObject::tr("V", "RecStatusChar rsNeverRecord");
155  break;
156  case rsOffLine:
157  ret = QObject::tr("F", "RecStatusChar rsOffLine");
158  break;
159  case rsOtherShowing:
160  ret = QString::number(id);
161  break;
162  case rsOtherRecording:
163  ret = QString::number(id);
164  break;
165  case rsOtherTuning:
166  ret = QString::number(id);
167  break;
168  case rsUnknown:
169  break;
170  }
171 
172  return (ret.isEmpty()) ? QString("-") : ret;
173 }
174 
176 QString toString(RecStatusType recstatus, RecordingType rectype)
177 {
178  if (recstatus == rsUnknown && rectype == kNotRecording)
179  return QObject::tr("Not Recording");
180 
181  switch (recstatus)
182  {
183  case rsAborted:
184  return QObject::tr("Aborted");
185  case rsRecorded:
186  return QObject::tr("Recorded");
187  case rsRecording:
188  return QObject::tr("Recording");
189  case rsTuning:
190  return QObject::tr("Tuning");
191  case rsWillRecord:
192  return QObject::tr("Will Record");
193  case rsDontRecord:
194  return QObject::tr("Don't Record");
195  case rsPreviousRecording:
196  return QObject::tr("Previously Recorded");
197  case rsCurrentRecording:
198  return QObject::tr("Currently Recorded");
199  case rsEarlierShowing:
200  return QObject::tr("Earlier Showing");
201  case rsTooManyRecordings:
202  return QObject::tr("Max Recordings");
203  case rsCancelled:
204  return QObject::tr("Manual Cancel");
205  case rsMissed:
206  return QObject::tr("Missed");
207  case rsMissedFuture:
208  return "Missed Future";
209  case rsConflict:
210  return QObject::tr("Conflicting");
211  case rsLaterShowing:
212  return QObject::tr("Later Showing");
213  case rsRepeat:
214  return QObject::tr("Repeat");
215  case rsInactive:
216  return QObject::tr("Inactive");
217  case rsLowDiskSpace:
218  return QObject::tr("Low Disk Space");
219  case rsTunerBusy:
220  return QObject::tr("Tuner Busy");
221  case rsFailed:
222  return QObject::tr("Recorder Failed");
223  case rsNotListed:
224  return QObject::tr("Not Listed");
225  case rsNeverRecord:
226  return QObject::tr("Never Record");
227  case rsOffLine:
228  return QObject::tr("Recorder Off-Line");
229  case rsOtherShowing:
230  return QObject::tr("Other Showing");
231  case rsOtherRecording:
232  return QObject::tr("Other Recording");
233  case rsOtherTuning:
234  return QObject::tr("Other Tuning");
235  case rsUnknown:
236  return QObject::tr("Unknown");
237  }
238 
239  return QObject::tr("Unknown");
240 }
241 
243 QString toDescription(RecStatusType recstatus, RecordingType rectype,
244  const QDateTime &recstartts)
245 {
246  if (recstatus == rsUnknown && rectype == kNotRecording)
247  return QObject::tr("This showing is not scheduled to record");
248 
249  QString message;
250  QDateTime now = MythDate::current();
251 
252  if (recstatus <= rsWillRecord ||
253  recstatus == rsOtherShowing)
254  {
255  switch (recstatus)
256  {
257  case rsWillRecord:
258  message = QObject::tr("This showing will be recorded.");
259  break;
260  case rsRecording:
261  message = QObject::tr("This showing is being recorded.");
262  break;
263  case rsTuning:
264  message = QObject::tr("The showing is being tuned.");
265  break;
266  case rsOtherRecording:
267  message = QObject::tr("This showing is being recorded on "
268  "a different channel.");
269  break;
270  case rsOtherTuning:
271  message = QObject::tr("The showing is being tuned on a "
272  "different channel.");
273  break;
274  case rsRecorded:
275  message = QObject::tr("This showing was recorded.");
276  break;
277  case rsAborted:
278  message = QObject::tr("This showing was recorded but was "
279  "aborted before completion.");
280  break;
281  case rsMissed:
282  case rsMissedFuture:
283  message = QObject::tr("This showing was not recorded because "
284  "the master backend was not running.");
285  break;
286  case rsCancelled:
287  message = QObject::tr("This showing was not recorded because "
288  "it was manually cancelled.");
289  break;
290  case rsLowDiskSpace:
291  message = QObject::tr("This showing was not recorded because "
292  "there wasn't enough disk space.");
293  break;
294  case rsTunerBusy:
295  message = QObject::tr("This showing was not recorded because "
296  "the recorder was already in use.");
297  break;
298  case rsFailed:
299  message = QObject::tr("This showing was not recorded because "
300  "the recorder failed.");
301  break;
302  case rsOtherShowing:
303  message += QObject::tr("This showing will be recorded on a "
304  "different channel.");
305  break;
306  default:
307  message = QObject::tr("The status of this showing is unknown.");
308  break;
309  }
310 
311  return message;
312  }
313 
314  if (recstartts > now)
315  message = QObject::tr("This showing will not be recorded because ");
316  else
317  message = QObject::tr("This showing was not recorded because ");
318 
319  switch (recstatus)
320  {
321  case rsDontRecord:
322  message += QObject::tr("it was manually set to not record.");
323  break;
324  case rsPreviousRecording:
325  message += QObject::tr("this episode was previously recorded "
326  "according to the duplicate policy chosen "
327  "for this title.");
328  break;
329  case rsCurrentRecording:
330  message += QObject::tr("this episode was previously recorded and "
331  "is still available in the list of "
332  "recordings.");
333  break;
334  case rsEarlierShowing:
335  message += QObject::tr("this episode will be recorded at an "
336  "earlier time instead.");
337  break;
338  case rsTooManyRecordings:
339  message += QObject::tr("too many recordings of this program have "
340  "already been recorded.");
341  break;
342  case rsConflict:
343  message += QObject::tr("another program with a higher priority "
344  "will be recorded.");
345  break;
346  case rsLaterShowing:
347  message += QObject::tr("this episode will be recorded at a "
348  "later time instead.");
349  break;
350  case rsRepeat:
351  message += QObject::tr("this episode is a repeat.");
352  break;
353  case rsInactive:
354  message += QObject::tr("this recording rule is inactive.");
355  break;
356  case rsNotListed:
357  message += QObject::tr("this rule does not match any showings in "
358  "the current program listings.");
359  break;
360  case rsNeverRecord:
361  message += QObject::tr("it was marked to never be recorded.");
362  break;
363  case rsOffLine:
364  message += QObject::tr("the required recorder is off-line.");
365  break;
366  default:
367  if (recstartts > now)
368  message = QObject::tr("This showing will not be recorded.");
369  else
370  message = QObject::tr("This showing was not recorded.");
371  break;
372  }
373 
374  return message;
375 }
376 
378 {
379  switch (status)
380  {
381  case asAvailable: return "Available";
382  case asNotYetAvailable: return "NotYetAvailable";
383  case asPendingDelete: return "PendingDelete";
384  case asFileNotFound: return "FileNotFound";
385  case asZeroByte: return "ZeroByte";
386  case asDeleted: return "Deleted";
387  }
388  return QString("Unknown(%1)").arg((int)status);
389 }
390 
391 /* vim: set expandtab tabstop=4 shiftwidth=4: */