5 #include <QCoreApplication>
11 #include <QStringList>
30 #define LOC QString("PlaybackBoxHelper: ")
31 #define LOC_WARN QString("PlaybackBoxHelper Warning: ")
32 #define LOC_ERR QString("PlaybackBoxHelper Error: ")
50 bool event(QEvent* )
override;
63 QTime tm = QTime::currentTime();
65 QStringList::const_iterator it2 = slist.begin();
67 QSet<CheckAvailabilityType> cats;
68 for (; it2 != slist.end(); ++it2)
73 QHash<uint, QStringList>::iterator cit =
96 LOG(VB_GENERAL, LOG_ERR,
LOC +
97 QString(
"CHECK_AVAILABILITY '%1' file not found")
117 auto *e0 =
new MythEvent(
"SET_PLAYBACK_URL", list);
122 list.push_back(QString::number((
int)*cats.begin()));
123 list.push_back(QString::number((
int)availableStatus));
124 list.push_back(QString::number(evinfo.
GetFilesize()));
125 list.push_back(QString::number(tm.hour()));
126 list.push_back(QString::number(tm.minute()));
127 list.push_back(QString::number(tm.second()));
128 list.push_back(QString::number(tm.msec()));
130 for (
auto type : qAsConst(cats))
134 list[1] = QString::number((
int)
type);
135 auto *e =
new MythEvent(
"AVAILABILITY", list);
139 return availableStatus;
144 if (e->type() == QEvent::Timer)
146 auto *te = (QTimerEvent*)e;
147 const int timer_id = te->timerId();
155 QHash<uint, QStringList>::iterator it =
170 return QObject::event(e);
172 if (me->Message() ==
"UPDATE_FREE_SPACE")
177 if (me->Message() ==
"STOP_RECORDING")
184 if (me->Message() ==
"DELETE_RECORDINGS")
186 QStringList successes;
187 QStringList failures;
188 QStringList list = me->ExtraDataList();
189 while (list.size() >= 3)
191 uint recordingID = list[0].toUInt();
192 bool forceDelete = list[1].toUInt() != 0U;
193 bool forgetHistory = list[2].toUInt() != 0U;
198 QStringList &res = (ok) ? successes : failures;
199 for (
uint i = 0; i < 3; i++)
201 res.push_back(list.front());
205 if (!successes.empty())
207 auto *oe =
new MythEvent(
"DELETE_SUCCESSES", successes);
210 if (!failures.empty())
212 auto *oe =
new MythEvent(
"DELETE_FAILURES", failures);
218 if (me->Message() ==
"UNDELETE_RECORDINGS")
220 QStringList successes;
221 QStringList failures;
222 QStringList list = me->ExtraDataList();
223 while (!list.empty())
225 uint recordingID = list[0].toUInt();
229 QStringList &res = (ok) ? successes : failures;
231 res.push_back(QString::number(recordingID));
234 if (!successes.empty())
236 auto *oe =
new MythEvent(
"UNDELETE_SUCCESSES", successes);
239 if (!failures.empty())
241 auto *oe =
new MythEvent(
"UNDELETE_FAILURES", failures);
247 if (me->Message() ==
"GET_PREVIEW")
249 const QString& token = me->ExtraData(0);
250 bool check_avail = (
bool) me->ExtraData(1).toInt();
251 QStringList list = me->ExtraDataList();
252 QStringList::const_iterator it = list.cbegin()+2;
270 if (me->Message() ==
"CHECK_AVAILABILITY")
281 else if (me->Message() ==
"LOCATE_ARTWORK")
283 const QString& inetref = me->ExtraData(0);
284 uint season = me->ExtraData(1).toUInt();
287 uint recordingID = me->ExtraData(3).toUInt();
288 const QString &group = me->ExtraData(4);
290 const QString cacheKey = QString(
"%1:%2:%3")
291 .arg((
int)
type).arg(inetref).arg(season);
299 if (!info.
url.isEmpty())
301 foundFile = info.
url;
306 if (!foundFile.isEmpty())
308 QStringList list = me->ExtraDataList();
309 list.push_back(foundFile);
310 auto *oe =
new MythEvent(
"FOUND_ARTWORK", list);
318 return QObject::event(e);
353 QCoreApplication::postEvent(
361 auto *e =
new MythEvent(
"STOP_RECORDING", list);
369 list.push_back(QString::number(recordingID));
370 list.push_back((forceDelete) ?
"1" :
"0");
371 list.push_back((forgetHistory) ?
"1" :
"0");
377 auto *e =
new MythEvent(
"DELETE_RECORDINGS", list);
384 list.push_back(QString::number(recordingID));
385 auto *e =
new MythEvent(
"UNDELETE_RECORDINGS", list);
393 QMutexLocker locker(&
m_lock);
394 for (
const auto& fsInfo : qAsConst(fsInfos))
396 if (fsInfo.getPath() ==
"TotalDiskSpace")
402 auto *e =
new MythEvent(
"UPDATE_USAGE_UI");
408 QMutexLocker locker(&
m_lock);
414 QMutexLocker locker(&
m_lock);
421 QString catstr = QString::number((
int)
cat);
422 QMutexLocker locker(&
m_lock);
423 QHash<uint, QStringList>::iterator it =
434 (*it).push_back(catstr);
436 auto *e =
new MythEvent(
"CHECK_AVAILABILITY", QStringList(catstr));
441 const QString &inetref,
uint season,
444 const QString &groupname)
446 QString cacheKey = QString(
"%1:%2:%3")
447 .arg((
int)
type).arg(inetref).arg(season);
449 QMutexLocker locker(&
m_lock);
451 InfoMap::const_iterator it =
457 QStringList list(inetref);
458 list.push_back(QString::number(season));
459 list.push_back(QString::number(
type));
460 list.push_back((pginfo)?QString::number(pginfo->
GetRecordingID()):
"");
461 list.push_back(groupname);
462 auto *e =
new MythEvent(
"LOCATE_ARTWORK", list);
469 const ProgramInfo &pginfo,
bool check_availability)
477 QString token = QString(
"%1:%2")
480 QStringList extra(token);
481 extra.push_back(check_availability?
"1":
"0");
483 auto *e =
new MythEvent(
"GET_PREVIEW", extra);