10 #include <QStringList>
33 #define NUMPROGRAMLINES 47
77 kCategorySports, kCategoryTVShow };
87 const QString &subtitle,
88 const QString &description,
91 const QString &syndicatedepisode,
92 const QString &category,
96 const QString &chansign,
97 const QString &channame,
98 const QString &chanplaybackfilters,
100 const QString &recgroup,
101 const QString &playgroup,
103 const QString &pathname,
105 const QString &hostname,
106 const QString &storagegroup,
108 const QString &seriesid,
109 const QString &programid,
110 const QString &inetref,
116 const QDateTime &startts,
117 const QDateTime &endts,
118 const QDateTime &recstartts,
119 const QDateTime &recendts,
127 const QDate &originalAirDate,
128 const QDateTime &lastmodified,
140 uint audioproperties,
141 uint videoproperties,
146 const QString &subtitle,
147 const QString &description,
150 const QString &category,
154 const QString &chansign,
155 const QString &channame,
157 const QString &seriesid,
158 const QString &programid,
159 const QString &inetref,
161 const QDateTime &startts,
162 const QDateTime &endts,
163 const QDateTime &recstartts,
164 const QDateTime &recendts,
178 const QString &subtitle,
179 const QString &description,
180 const QString &syndicatedepisode,
181 const QString &category,
185 const QString &chansign,
186 const QString &channame,
187 const QString &chanplaybackfilters,
189 const QDateTime &startts,
190 const QDateTime &endts,
191 const QDateTime &recstartts,
192 const QDateTime &recendts,
194 const QString &seriesid,
195 const QString &programid,
196 const CategoryType catType,
202 const QDate &originalAirDate,
218 const QString &subtitle,
219 const QString &description,
222 const QString &category,
226 const QString &chansign,
227 const QString &channame,
228 const QString &chanplaybackfilters,
230 const QString &recgroup,
231 const QString &playgroup,
233 const QDateTime &startts,
234 const QDateTime &endts,
235 const QDateTime &recstartts,
236 const QDateTime &recendts,
238 const QString &seriesid,
239 const QString &programid,
240 const QString &inetref);
246 const QString &title,
247 const QString &subtitle,
248 const QString &director,
249 int season,
int episode,
250 const QString &inetref,
251 uint length_in_minutes,
253 const QString &programid);
256 const QDateTime &_startts,
const QDateTime &_endts);
258 ProgramInfo(
const QString &_title,
const QString &_category,
259 const QDateTime &_startts,
const QDateTime &_endts);
261 QStringList::const_iterator end) :
263 positionMapDBReplacement(NULL)
265 if (!FromStringList(it, end))
270 positionMapDBReplacement(NULL)
272 QStringList::const_iterator it = list.begin();
273 if (!FromStringList(it, list.end()))
279 bool ignore_non_serialized_data =
false);
281 virtual void clear(
void);
287 void ToStringList(QStringList &list)
const;
288 virtual void ToMap(QHash<QString, QString> &progMap,
289 bool showrerecord =
false,
290 uint star_range = 10)
const;
291 virtual void SubstituteMatches(QString &str);
294 bool IsSameProgram(
const ProgramInfo &other)
const;
295 bool IsSameTimeslot(
const ProgramInfo &other)
const;
296 bool IsSameProgramTimeslot(
const ProgramInfo &other)
const;
297 static bool UsingProgramIDAuthority(
void)
299 return usingProgIDAuth;
301 static void CheckProgramIDAuthorities(
void);
304 bool IsSameProgramWeakCheck(
const ProgramInfo &other)
const;
311 QString MakeUniqueKey(
void)
const
313 uint GetSecondsInRecording(
void)
const;
314 QString ChannelText(
const QString&)
const;
316 QString
GetBasename(
void)
const {
return pathname.section(
'/', -1); }
317 bool IsVideoFile(
void)
const
319 bool IsVideoDVD(
void)
const
321 bool IsVideoBD(
void)
const
323 bool IsLocal(
void)
const {
return pathname.left(1) ==
"/"
325 || pathname.at(1) ==
':'
328 bool IsMythStream(
void)
const {
return pathname.left(7) ==
"myth://"; }
329 bool IsPathSet(
void)
const {
return GetBasename() != pathname; }
331 bool IsFileReadable(
void)
const;
356 QString GetChannelPlaybackFilters(
void)
const
357 {
return chanplaybackfilters; }
392 uint GetYearOfInitialRelease(
void)
const
394 return ((year) ? year :
395 (originalAirDate.isValid()) ? originalAirDate.year() : 0);
408 QString GetCategoryTypeString(
void)
const;
413 {
return (
int)(stars * range_max + 0.5f); }
442 bool IsGeneric(
void)
const;
455 bool IsDeletePending(
void)
const
458 uint GetSubtitleType(
void)
const
459 {
return (properties&kSubtitlePropertyMask)>>kSubtitlePropertyOffset; }
460 uint GetVideoProperties(
void)
const
461 {
return (properties & kVideoPropertyMask) >> kVideoPropertyOffset; }
462 uint GetAudioProperties(
void)
const
463 {
return (properties & kAudioPropertyMask) >> kAudioPropertyOffset; }
472 QString
toString(Verbosity v = kLongDescription, QString sep =
":",
473 QString grp =
"\"")
const;
476 void SetTitle(
const QString &
t) { title =
t; title.detach(); }
478 { programflags &= ~
FL_TYPEMASK; programflags |= ((uint32_t)t<<16); }
479 void SetPathname(
const QString&)
const;
500 void SetReactivated(
bool reactivate)
505 void SetEditing(
bool editing)
510 void SetFlagging(
bool flagging)
517 void SetIgnoreBookmark(
bool ignore)
525 { positionMapDBReplacement = pmap; }
528 QString QueryBasename(
void)
const;
529 uint64_t QueryFilesize(
void)
const;
530 uint QueryMplexID(
void)
const;
531 QDateTime QueryBookmarkTimeStamp(
void)
const;
532 uint64_t QueryBookmark(
void)
const;
533 CategoryType QueryCategoryType(
void)
const;
534 QStringList QueryDVDBookmark(
const QString &serialid)
const;
535 bool QueryIsEditing(
void)
const;
536 bool QueryIsInUse(QStringList &byWho)
const;
537 bool QueryIsInUse(QString &byWho)
const;
538 bool QueryIsDeleteCandidate(
bool one_player_allowed =
false)
const;
541 bool QueryTuningInfo(QString &
channum, QString &input)
const;
542 QString QueryInputDisplayName(
void)
const;
543 uint QueryAverageWidth(
void)
const;
544 uint QueryAverageHeight(
void)
const;
545 uint QueryAverageFrameRate(
void)
const;
546 MarkTypes QueryAverageAspectRatio(
void)
const;
547 int64_t QueryTotalDuration(
void)
const;
548 int64_t QueryTotalFrames(
void)
const;
549 QString QueryRecordingGroup(
void)
const;
551 uint QueryTranscoderID(
void)
const;
552 uint64_t QueryLastFrameInPosMap(
void)
const;
556 void SaveFilesize(uint64_t fsize);
557 void SaveBookmark(uint64_t frame);
558 void SaveDVDBookmark(
const QStringList &fields)
const;
559 void SaveEditing(
bool edit);
561 void SaveWatched(
bool watchedFlag);
562 void SaveDeletePendingFlag(
bool deleteFlag);
564 void SaveAutoExpire(
AutoExpireType autoExpire,
bool updateDelete =
false);
565 void SavePreserve(
bool preserveEpisode);
566 bool SaveBasename(
const QString &basename);
569 void SaveFrameRate(uint64_t frame,
uint framerate);
570 void SaveTotalDuration(int64_t duration);
571 void SaveTotalFrames(int64_t
frames);
572 void SaveVideoProperties(
uint mask,
uint video_property_flags);
575 void UpdateLastDelete(
bool setTime)
const;
576 void MarkAsInUse(
bool inuse, QString usedFor =
"");
577 void UpdateInUseMark(
bool force =
false);
578 void SaveSeasonEpisode(
uint seas,
uint ep);
579 void SaveInetRef(
const QString &inet);
582 QString DiscoverRecordingDirectory(
void)
const;
584 bool forceCheckLocal =
false)
const;
588 bool QueryCutList(
frm_dir_map_t &,
bool loadAutosave=
false)
const;
589 void SaveCutList(
frm_dir_map_t &,
bool isAutoSave=
false)
const;
599 int64_t min_frm = -1, int64_t max_frm = -1)
const;
603 void SendUpdateEvent(
void);
605 void SendAddedEvent(
void)
const;
607 void SendDeletedEvent(
void)
const;
610 static QString i18n(
const QString&);
612 static QString MakeUniqueKey(
uint chanid,
const QDateTime &recstartts);
613 static bool ExtractKey(
const QString &uniquekey,
614 uint &chanid, QDateTime &recstartts);
615 static bool ExtractKeyFromPathname(
616 const QString &pathname,
uint &chanid, QDateTime &recstartts);
617 static bool QueryKeyFromPathname(
618 const QString &pathname,
uint &chanid, QDateTime &recstartts);
620 static QString QueryRecordingGroupPassword(
const QString &group);
621 static uint64_t QueryBookmark(
uint chanid,
const QDateTime &recstartts);
622 static QMap<QString,uint32_t> QueryInUseMap(
void);
623 static QMap<QString,bool> QueryJobsRunning(
int type);
629 bool merge =
false)
const;
631 int64_t min_frm = -1, int64_t max_frm = -1)
const;
633 int64_t min_frm = -1, int64_t max_frm = -1)
const;
636 QString CreateRecordBasename(
const QString &ext)
const;
638 bool LoadProgramFromRecorded(
639 const uint chanid,
const QDateTime &recstarttime);
641 bool FromStringList(QStringList::const_iterator &it,
642 QStringList::const_iterator end);
644 static void QueryMarkupMap(
645 const QString &video_pathname,
647 static void QueryMarkupMap(
648 uint chanid,
const QDateTime &recstartts,
651 static int InitStatics(
void);
753 bool possiblyInProgressRecordingsOnly,
754 const QMap<QString,uint32_t> &inUseMap,
755 const QMap<QString,bool> &isJobRunning,
756 const QMap<QString, ProgramInfo*> &recMap,
759 template<
typename TYPE>
763 QString altTable =
"",
767 hasConflicts =
false;
773 hasConflicts = slist[0].toInt();
775 QStringList::const_iterator sit = slist.begin()+2;
776 while (sit != slist.end())
778 TYPE *
p =
new TYPE(sit, slist.end());
780 if (!p->HasPathname() && !p->GetChanID())
787 if (destination.
size() != slist[1].toUInt())
806 bool *hasConflicts = NULL,
807 vector<ProgramInfo> *list = NULL);
816 QMap<MarkTypes,frm_pos_map_t>
map;
826 #endif // MYTHPROGRAM_H_