5#include <QCoreApplication>
46static QString
fs0(QT_TRANSLATE_NOOP(
"SchedFilterEditor",
"New episode"));
47static QString
fs1(QT_TRANSLATE_NOOP(
"SchedFilterEditor",
"Identifiable episode"));
48static QString
fs2(QT_TRANSLATE_NOOP(
"SchedFilterEditor",
"First showing"));
49static QString
fs3(QT_TRANSLATE_NOOP(
"SchedFilterEditor",
"Prime time"));
50static QString
fs4(QT_TRANSLATE_NOOP(
"SchedFilterEditor",
"Commercial free"));
51static QString
fs5(QT_TRANSLATE_NOOP(
"SchedFilterEditor",
"High definition"));
52static QString
fs6(QT_TRANSLATE_NOOP(
"SchedFilterEditor",
"This episode"));
53static QString
fs7(QT_TRANSLATE_NOOP(
"SchedFilterEditor",
"This series"));
54static QString
fs8(QT_TRANSLATE_NOOP(
"SchedFilterEditor",
"This time"));
55static QString
fs9(QT_TRANSLATE_NOOP(
"SchedFilterEditor",
"This day and time"));
56static QString
fs10(QT_TRANSLATE_NOOP(
"SchedFilterEditor",
"This channel"));
57static QString
fs11(QT_TRANSLATE_NOOP(
"SchedFilterEditor",
"No episodes"));
62 rule->LoadByProgram(proginfo);
68 mainStack->
AddScreen(se, (player ==
nullptr));
106 m_recordingRule(recRule),
152 LOG(VB_GENERAL, LOG_ERR,
"ScheduleEditor, theme is missing "
153 "required elements");
211 LOG(VB_GENERAL, LOG_ERR,
212 "ScheduleEditor::Create() - Failed to load recording rule");
253 .compare(
"Default", Qt::CaseInsensitive) != 0)
256 tr(
"Delete this recording rule template"),
266 tr(
"Record this showing with normal options"),
295 if (!hasChannel || isManual)
433 if (!schedoptedit->Create())
458 if (!storeoptedit->Create())
483 if (!ppedit->Create())
499 QString label = tr(
"Schedule Information");
502 auto *menuPopup =
new MythDialogBox(label, popupStack,
"menuPopup");
504 if (menuPopup->Create())
506 menuPopup->SetReturnEvent(
this,
"schedinfo");
509 menuPopup->AddButton(tr(
"Program Details"));
510 menuPopup->AddButton(tr(
"Upcoming Episodes"));
511 menuPopup->AddButton(tr(
"Upcoming Recordings"));
513 menuPopup->AddButton(tr(
"Previously Recorded"));
530 TranslateKeyPress(
"TV Frontend", event, actions);
532 for (
int i = 0; i < actions.size() && !handled; i++)
534 const QString&
action = actions[i];
539 else if (
action ==
"INFO")
541 else if (
action ==
"GUIDE")
543 else if (
action ==
"UPCOMING")
545 else if (
action ==
"PREVVIEW")
547 else if (
action ==
"NEXTVIEW")
565 QString resultid = dce->GetId();
566 QString resulttext = dce->GetResultText();
568 if (resultid ==
"menu")
570 if (resulttext == tr(
"Main Options"))
572 if (resulttext == tr(
"Schedule Options"))
574 else if (resulttext == tr(
"Filter Options"))
576 else if (resulttext == tr(
"Storage Options"))
578 else if (resulttext == tr(
"Post Processing"))
580 else if (resulttext == tr(
"Metadata Options"))
582 else if (resulttext == tr(
"Use Template"))
584 else if (resulttext == tr(
"Schedule Info"))
586 else if (resulttext == tr(
"Preview Changes"))
589 else if (resultid ==
"templatemenu")
593 else if (resultid ==
"schedinfo")
595 if (resulttext == tr(
"Program Details"))
597 else if (resulttext == tr(
"Upcoming Episodes"))
599 else if (resulttext == tr(
"Upcoming Recordings"))
601 else if (resulttext == tr(
"Previously Recorded"))
605 else if (resultid ==
"newrecgroup")
674 QString ttable =
"record_tmp";
727 if (!schedfilteredit->Create())
729 delete schedfilteredit;
795 QString label = tr(
"Options");
797 auto *menuPopup =
new MythDialogBox(label, popupStack,
"menuPopup");
803 if (menuPopup->Create())
805 menuPopup->SetReturnEvent(
this,
"menu");
807 menuPopup->AddButton(tr(
"Main Options"));
809 menuPopup->AddButton(tr(
"Schedule Options"));
811 menuPopup->AddButton(tr(
"Filter Options"));
813 menuPopup->AddButton(tr(
"Storage Options"));
815 menuPopup->AddButton(tr(
"Post Processing"));
818 menuPopup->AddButton(tr(
"Metadata Options"));
821 menuPopup->AddButton(tr(
"Schedule Info"));
822 menuPopup->AddButton(tr(
"Preview Changes"));
824 menuPopup->AddButton(tr(
"Use Template"));
836 if (templates.empty())
842 QString label = tr(
"Template Options");
844 auto *menuPopup =
new MythDialogBox(label, popupStack,
"menuPopup");
846 if (menuPopup->Create())
848 menuPopup->SetReturnEvent(
this,
"templatemenu");
849 while (!templates.empty())
851 QString name = templates.front();
852 if (name ==
"Default")
853 menuPopup->AddButton(tr(
"Default"));
855 menuPopup->AddButton(name);
856 templates.pop_front();
876 m_editor(&editor), m_recordingRule(&rule), m_recInfo(recInfo)
887 TranslateKeyPress(
"TV Frontend", event, actions);
889 for (
int i = 0; i < actions.size() && !handled; i++)
891 const QString&
action = actions[i];
896 else if (
action ==
"INFO")
898 else if (
action ==
"UPCOMING")
902 else if (
action ==
"PREVVIEW")
904 else if (
action ==
"NEXTVIEW")
917 const QString &xmlfile,
const QString &winname,
bool isTemplate)
973 :
SchedEditChild(parent,
"ScheduleOptionsEditor", editor, rule, recInfo),
981 "schedule-ui.xml",
"scheduleoptionseditor",
995 LOG(VB_GENERAL, LOG_ERR,
"SchedOptEditor, theme is missing "
996 "required elements");
1040 :
SchedEditChild(parent,
"ScheduleFilterEditor", editor, rule, recInfo),
1048 "schedule-ui.xml",
"schedulefiltereditor",
1060 LOG(VB_GENERAL, LOG_ERR,
"SchedFilterEditor, theme is missing "
1061 "required elements");
1100 :
SchedEditChild(parent,
"StorageOptionsEditor", editor, rule, recInfo),
1108 "schedule-ui.xml",
"storageoptionseditor",
1120 LOG(VB_GENERAL, LOG_ERR,
"StoreOptEditor, theme is missing "
1121 "required elements");
1159 QString resultid = dce->GetId();
1160 QString resulttext = dce->GetResultText();
1162 if (resultid ==
"newrecgroup")
1186 :
SchedEditChild(parent,
"PostProcOptionsEditor", editor, rule, recInfo),
1194 "schedule-ui.xml",
"postproceditor",
1206 LOG(VB_GENERAL, LOG_ERR,
"PostProcEditor, theme is missing "
1207 "required elements");
1247 :
SchedEditChild(parent,
"MetadataOptions", editor, rule, recInfo),
1277 "schedule-ui.xml",
"metadataoptions",
1302 LOG(VB_GENERAL, LOG_ERR,
"MetadataOptions, theme is missing "
1303 "required elements");
1381 const QString& message = title;
1399 "recording online..."));
1415 QString msg = tr(
"Downloading selected artwork...");
1422 lookup->SetAutomatic(
true);
1423 lookup->SetData(QVariant::fromValue<VideoArtworkType>(
type));
1427 lookup->SetDownloads(downloads);
1428 lookup->SetAllowOverwrites(
true);
1516 lookup->
toMap(metadataMap);
1521 const QString &prefixAlt,
1523 const QString &returnEvent)
1527 if (
prefix.startsWith(
"myth://"))
1539 fb->SetReturnEvent(&inst, returnEvent);
1552 QList<QByteArray> exts = QImageReader::supportedImageFormats();
1553 for (
const auto & ext : std::as_const(exts))
1555 ret.append(QString(
"*.").append(ext));
1566 "on this rule to set artwork. For items "
1567 "without a metadata source, you can set "
1568 "any unique value."));
1579 lookup->SetType(mtype);
1598 lookup->SetSubtype(
type);
1600 lookup->SetAllowGeneric(
true);
1601 lookup->SetHandleImages(
false);
1618 QString msg = tr(
"Searching for available artwork...");
1624 lookup->
SetData(QVariant::fromValue<VideoArtworkType>(
type));
1654 if (resultsdialog->Create())
1668 for (DownloadMap::const_iterator i = map.cbegin(); i != map.cend(); ++i)
1727 if (list.count() > 1)
1731 for (
int p = 0;
p != list.size(); ++
p)
1742 (list[
p])->GetYear() != 0 &&
1747 LOG(VB_GENERAL, LOG_INFO,
"Multiple results matched on year. No definite "
1748 "match could be found based on year alone.");
1751 else if (yearindex == -1)
1753 LOG(VB_GENERAL, LOG_INFO,
"Matched based on year. ");
1766 LOG(VB_GENERAL, LOG_INFO,
"Falling through to selection dialog.");
1771 Qt::QueuedConnection);
1773 if (resultsdialog->Create())
1808 QString title = tr(
"No match found for this recording. You can "
1809 "try entering a TVDB/TMDB number, season, and "
1810 "episode manually.");
1814 if (okPopup->Create())
1832 if (lul.count() >= 1)
1851 QString title = tr(
"This number, season, and episode combination "
1852 "does not appear to be valid (or the site may "
1853 "be down). Check your information and try "
1858 if (okPopup->Create())
1887 tr(
"Schedule Editor"),
1895 const QString resultid = dce->GetId();
1897 info.url = dce->GetResultText();
1899 if (resultid ==
"coverart")
1903 else if (resultid ==
"fanart")
1907 else if (resultid ==
"banner")
1929 : m_screen(&screen), m_rule(rule), m_other(other),
2059 QVariant::fromValue(value));
2089 QObject::tr(
"Use any available input"),
2090 QVariant::fromValue(0));
2093 for (
uint id : inputids)
2096 QObject::tr(
"Prefer input %1")
2120 QObject::tr(
"Record new and repeat "
2123 QObject::tr(
"Record new episodes only"),
2195 isScheduled && !isSingle &&
2255 query.
prepare(
"SELECT filterid, description, newruledefault "
2256 "FROM recordfilter ORDER BY filterid");
2260 while (query.
next())
2262 m_descriptions << QCoreApplication::translate(
"SchedFilterEditor",
2263 query.
value(1).toString().toUtf8().constData());
2273 QStringList::iterator Idesc;
2303 QObject::tr(
"None"), idx);
2316 uint32_t filter_mask = 0;
2319 for (
int idx = 0; idx < end; ++idx)
2322 if (button !=
nullptr &&
2324 filter_mask |= (1 << button->
GetData().value<uint32_t>());
2405 QStringList::Iterator it;
2413 label = QObject::tr(
"Record using the %1 profile");
2416 label.arg(QObject::tr(
"Default")),
2417 QVariant::fromValue(QString(
"Default")));
2420 label.arg(QObject::tr(
"LiveTV")),
2421 QVariant::fromValue(QString(
"LiveTV")));
2423 label.arg(QObject::tr(
"High Quality")),
2424 QVariant::fromValue(QString(
"High Quality")));
2426 label.arg(QObject::tr(
"Low Quality")),
2427 QVariant::fromValue(QString(
"Low Quality")));
2437 label = QObject::tr(
"Include in the \"%1\" recording group");
2439 QObject::tr(
"Create a new recording group"),
2440 QVariant::fromValue(QString(
"__NEW_GROUP__")));
2442 query.
prepare(
"SELECT recgroupid, recgroup FROM recgroups "
2443 "WHERE recgroup <> 'Deleted' AND "
2444 " recgroup <> 'LiveTV' "
2445 "ORDER BY special DESC, recgroup ASC");
2448 while (query.
next())
2450 int id = query.
value(0).toInt();
2451 QString name = query.
value(1).toString();
2453 if (name ==
"Default")
2454 name = QObject::tr(
"Default");
2456 QVariant::fromValue(
id));
2469 label = QObject::tr(
"Store in the \"%1\" storage group");
2471 label.arg(QObject::tr(
"Default")),
2472 QVariant::fromValue(QString(
"Default")));
2475 for (it = groups.begin(); it != groups.end(); ++it)
2477 if ((*it).compare(
"Default", Qt::CaseInsensitive) != 0)
2479 label.arg(*it), QVariant::fromValue(*it));
2490 label = QObject::tr(
"Use \"%1\" playback group settings");
2492 label.arg(QObject::tr(
"Default")),
2493 QVariant::fromValue(QString(
"Default")));
2496 for (it = groups.begin(); it != groups.end(); ++it)
2499 QVariant::fromValue(*it));
2523 QObject::tr(
"Don't record if this would exceed the max "
2524 "episodes"), QVariant::fromValue(
false));
2526 QObject::tr(
"Delete oldest if this would exceed the max "
2527 "episodes"), QVariant::fromValue(
true));
2625 QObject::tr(
"New Recording group name: ");
2630 textDialog->SetReturnEvent(
m_screen,
"newrecgroup");
2632 if (textDialog->Create())
2633 popupStack->
AddScreen(textDialog,
false);
2638 if (!
m_rule || recgroupID <= 0)
2643 recgroup = recgroup.trimmed();
2644 if (recgroup.isEmpty())
2647 QString label = QObject::tr(
"Include in the \"%1\" recording group");
2649 QVariant::fromValue(recgroupID));
2655 label.arg(recgroup), QVariant::fromValue(recgroupID));
2666 query.
prepare(
"INSERT INTO recgroups SET recgroup = :NAME, "
2667 "displayname = :DISPLAYNAME");
2669 query.
bindValue(
":DISPLAYNAME", groupName);
2675 LOG(VB_GENERAL, LOG_ERR, QString(
"Could not create recording group (%1). "
2676 "Does it already exist?").arg(groupName));
2754 QMap<int, QString>::iterator it;
2755 for (it = profiles.begin(); it != profiles.end(); ++it)
2758 QVariant::fromValue(it.key()));
2772 userjob1Text->
SetText(QObject::tr(
"Run '%1'")
2786 userjob2Text->
SetText(QObject::tr(
"Run '%1'")
2800 userjob3Text->
SetText(QObject::tr(
"Run '%1'")
2814 userjob4Text->
SetText(QObject::tr(
"Run '%1'")
static std::vector< uint > GetSchedInputList(void)
static QString GetDisplayName(uint inputid)
Event dispatched from MythUI modal dialogs to a listening class containing a result of some form.
static const Type kEventType
static void ToggleSelected(MythUIButtonListItem *item)
MythUIButtonList * m_activeFiltersList
MythScreenType * m_screen
QStringList m_descriptions
MythUIButtonList * m_filtersList
void SetRule(RecordingRule *rule)
static const Type kEventType
static const Type kEventType
void haveResult(ArtworkInfo, VideoArtworkType)
QSqlQuery wrapper that fetches a DB connection from the connection pool.
bool prepare(const QString &query)
QSqlQuery::prepare() is not thread safe in Qt <= 3.3.2.
QVariant value(int i) const
bool exec(void)
Wrap QSqlQuery::exec() so we can display SQL.
void bindValue(const QString &placeholder, const QVariant &val)
Add a single binding.
QVariant lastInsertId()
Return the id of the last inserted row.
bool next(void)
Wrap QSqlQuery::next() so we can display the query results.
static MSqlQueryInfo InitCon(ConnectionReuse _reuse=kNormalConnection)
Only use this in combination with MSqlQuery constructor.
Dialog asking for user confirmation.
QString GetSetting(const QString &key, const QString &defaultval="")
QString GetMasterHostName(void)
Basic menu dialog, message and a list of options.
MythScreenStack * GetMainStack()
MythScreenStack * GetStack(const QString &Stackname)
bool Queue(const MythNotification ¬ification)
Queue a notification Queue() is thread-safe and can be called from anywhere.
virtual void PopScreen(MythScreenType *screen=nullptr, bool allowFade=true, bool deleteScreen=true)
virtual void AddScreen(MythScreenType *screen, bool allowFade=true)
Screen in which all other widgets are contained and rendered.
void BuildFocusList(void)
MythUIType * GetFocusWidget(void) const
MythScreenStack * GetScreenStack() const
bool keyPressEvent(QKeyEvent *event) override
Key event handler.
Dialog prompting the user to enter a text string.
bool Create(void) override
void SetCheckState(MythUIStateType::StateType state)
bool GetBooleanCheckState(void) const
virtual void SetTextFromMap(const InfoMap &infoMap)
bool Load(bool allowLoadInBackground=true, bool forceStat=false)
Load the image(s), wraps ImageLoader::LoadImage()
void SetFilename(const QString &filename)
Must be followed by a call to Load() to load the image.
void SetRange(int low, int high, int step, uint pageMultiple=5)
Set the lower and upper bounds of the spinbox, the interval and page amount.
void SetValue(int val) override
int GetIntValue(void) const override
QString GetText(void) const
void SetText(const QString &text, bool moveCursor=true)
All purpose text widget, displays a text string.
virtual void SetText(const QString &text)
void SetCanTakeFocus(bool set=true)
Set whether this widget can take focus.
void SetEnabled(bool enable)
static QStringList GetNames(void)
Select post-processing options.
void TranscodeChanged(bool enable)
bool Create(void) override
PostProcEditor(MythScreenStack *parent, ScheduleEditor &editor, RecordingRule &rule, RecordingInfo *recinfo)
Mixin for post processing.
MythScreenType * m_screen
void SetRule(RecordingRule *rule)
MythUICheckBox * m_userjob4Check
MythUICheckBox * m_transcodeCheck
MythUICheckBox * m_userjob2Check
MythUICheckBox * m_metadataLookupCheck
MythUICheckBox * m_userjob1Check
MythUICheckBox * m_userjob3Check
MythUICheckBox * m_commflagCheck
MythUIButtonList * m_transcodeprofileList
void TranscodeChanged(bool enable)
Holds information on recordings and videos.
uint GetRecordingRuleID(void) const
uint GetEpisode(void) const
uint GetYearOfInitialRelease(void) const
virtual void ToMap(InfoMap &progMap, bool showrerecord=false, uint star_range=10, uint date_format=0) const
Converts ProgramInfo into QString QHash containing each field in ProgramInfo converted into localized...
CategoryType GetCategoryType(void) const
uint GetSeason(void) const
Holds information on a TV Program one might wish to record.
static const QRegularExpression kReSearchTypeName
static QMap< int, QString > GetTranscodingProfiles()
Internal representation of a recording rule, mirrors the record table.
void UseTempTable(bool usetemp, const QString &table="record_tmp")
bool LoadTemplate(const QString &title, const QString &category="Default", const QString &categoryType="Default")
RecSearchType m_searchType
bool LoadByProgram(const ProgramInfo *proginfo)
int m_recordID
Unique Recording Rule ID.
RecordingDupInType m_dupIn
void ToMap(InfoMap &infoMap, uint date_format=0) const
bool m_isInactive
Recording rule is enabled?
static QStringList GetTemplateNames(void)
bool Save(bool sendSig=true)
RecordingDupMethodType m_dupMethod
bool Load(bool asTemplate=false)
Load a single rule from the recorded table.
bool Delete(bool sendSig=true)
bool m_autoMetadataLookup
AutoExtendType m_autoExtend
virtual int DecrRef(void)
Decrements reference count and deletes on 0.
virtual int IncrRef(void)
Increments reference count.
SchedEditChild(MythScreenStack *parent, const QString &name, ScheduleEditor &editor, RecordingRule &rule, RecordingInfo *recinfo)
MythUIButton * m_previewButton
void Close(void) override
MythUIButton * m_saveButton
MythUIButton * m_backButton
RecordingRule * m_recordingRule
bool keyPressEvent(QKeyEvent *event) override
Key event handler.
ScheduleEditor * m_editor
void SetTextFromMaps(void)
virtual void Save(void)=0
RecordingInfo * m_recInfo
void Load(void) override=0
virtual bool CreateEditChild(const QString &xmlfile, const QString &winname, bool isTemplate)
SchedFilterEditor(MythScreenStack *parent, ScheduleEditor &editor, RecordingRule &rule, RecordingInfo *recinfo)
static void ToggleSelected(MythUIButtonListItem *item)
bool Create(void) override
bool Create(void) override
MythUIButton * m_filtersButton
void DupMethodChanged(MythUIButtonListItem *item)
SchedOptEditor(MythScreenStack *parent, ScheduleEditor &editor, RecordingRule &rule, RecordingInfo *recinfo)
Mixin for schedule options.
MythUISpinBox * m_startoffsetSpin
MythUISpinBox * m_prioritySpin
MythUICheckBox * m_ruleactiveCheck
MythUIButtonList * m_dupmethodList
MythUISpinBox * m_endoffsetSpin
void SetRule(RecordingRule *rule)
void DupMethodChanged(MythUIButtonListItem *item)
MythUIButtonList * m_dupscopeList
MythUIButtonList * m_newrepeatList
MythScreenType * m_screen
MythUIButtonList * m_autoExtendList
SchedOptMixin(MythScreenType &screen, RecordingRule *rule, SchedOptMixin *other=nullptr)
MythUIButtonList * m_inputList
virtual void ShowDetails(void) const
Show the Program Details screen.
virtual void ShowGuide(void) const
Show the program guide.
virtual void ShowUpcoming(void) const
Show the upcoming recordings for this title.
virtual void ShowPrevious(void) const
Show the previous recordings for this recording rule.
Construct a recording schedule.
void TranscodeChanged(bool enable)
ScheduleEditor(MythScreenStack *parent, RecordingInfo *recinfo, TV *player=nullptr)
void ruleSaved(int ruleId)
MythUIButton * m_schedInfoButton
MythUIButtonList * m_rulesList
bool Create(void) override
MythUIButton * m_saveButton
void DupMethodChanged(MythUIButtonListItem *item)
RecordingRule * m_recordingRule
void customEvent(QEvent *event) override
void ruleDeleted(int ruleId)
MythUIButton * m_schedOptButton
void PromptForRecGroup(void)
MythUIButton * m_postProcButton
void templateLoaded(void)
void LoadTemplate(const QString &name)
void Load(void) override
Load data which will ultimately be displayed on-screen or used to determine what appears on-screen (S...
void showTemplateMenu(void)
void ShowPreviousView(void)
~ScheduleEditor() override
static void * RunScheduleEditor(ProgramInfo *proginfo, void *player=nullptr)
Callback.
void showUpcomingByTitle(void)
MythUIButton * m_storeOptButton
void MaxEpisodesChanged(MythUIButtonListItem *item)
void showUpcomingByRule(void)
MythUIButton * m_metadataButton
MythUIButton * m_previewButton
MythUIButton * m_cancelButton
RecordingInfo * m_recInfo
void Close(void) override
static void FilterChanged(MythUIButtonListItem *item)
bool keyPressEvent(QKeyEvent *event) override
Key event handler.
void ShowMetadataOptions(void)
MythUIButton * m_filtersButton
static QStringList getRecordingsGroups(void)
static QString generate_file_url(const QString &storage_group, const QString &host, const QString &path)
StoreOptEditor(MythScreenStack *parent, ScheduleEditor &editor, RecordingRule &rule, RecordingInfo *recinfo)
void PromptForRecGroup(void)
void MaxEpisodesChanged(MythUIButtonListItem *item)
void customEvent(QEvent *event) override
bool Create(void) override
Mixin for storage options.
void SetRule(RecordingRule *rule)
MythUISpinBox * m_maxepSpin
void MaxEpisodesChanged(MythUIButtonListItem *item)
MythUIButtonList * m_recprofileList
void PromptForRecGroup(void)
MythUIButtonList * m_storagegroupList
MythUIButtonList * m_maxbehaviourList
MythScreenType * m_screen
MythUIButtonList * m_playgroupList
MythUIButtonList * m_recgroupList
MythUICheckBox * m_autoexpireCheck
static int CreateRecordingGroup(const QString &groupName)
void SetRecGroup(int recgroupID, QString recgroup)
void RequestEmbedding(bool Embed, const QRect &Rect={}, const QStringList &Data={})
static bool LoadWindowFromXML(const QString &xmlfile, const QString &windowname, MythUIType *parent)
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
MythConfirmationDialog * ShowOkPopup(const QString &message, bool showCancel)
Non-blocking version of MythPopupBox::showOkPopup()
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
MythNotificationCenter * GetNotificationCenter(void)
MythMainWindow * GetMythMainWindow(void)
QHash< QString, QString > InfoMap
QString toDescription(RecordingType rectype)
Converts "rectype" into a human readable description.
static QVariant toVariant(RecordingType rectype)
static QString fs1(QT_TRANSLATE_NOOP("SchedFilterEditor", "Identifiable episode"))
static QString fs0(QT_TRANSLATE_NOOP("SchedFilterEditor", "New episode"))
static QString fs8(QT_TRANSLATE_NOOP("SchedFilterEditor", "This time"))
static QString fs7(QT_TRANSLATE_NOOP("SchedFilterEditor", "This series"))
static QString fs10(QT_TRANSLATE_NOOP("SchedFilterEditor", "This channel"))
static QString fs4(QT_TRANSLATE_NOOP("SchedFilterEditor", "Commercial free"))
static QString fs11(QT_TRANSLATE_NOOP("SchedFilterEditor", "No episodes"))
static QString fs3(QT_TRANSLATE_NOOP("SchedFilterEditor", "Prime time"))
static QString fs6(QT_TRANSLATE_NOOP("SchedFilterEditor", "This episode"))
static QString fs9(QT_TRANSLATE_NOOP("SchedFilterEditor", "This day and time"))
static QString fs5(QT_TRANSLATE_NOOP("SchedFilterEditor", "High definition"))
static QString fs2(QT_TRANSLATE_NOOP("SchedFilterEditor", "First showing"))
static bool Assign(ContainerType *container, UIType *&item, const QString &name, bool *err=nullptr)