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 ret.reserve(exts.size());
1554 for (
const auto & ext : std::as_const(exts))
1556 ret.append(QString(
"*.").append(ext));
1567 "on this rule to set artwork. For items "
1568 "without a metadata source, you can set "
1569 "any unique value."));
1580 lookup->SetType(mtype);
1599 lookup->SetSubtype(
type);
1601 lookup->SetAllowGeneric(
true);
1602 lookup->SetHandleImages(
false);
1619 QString msg = tr(
"Searching for available artwork...");
1625 lookup->
SetData(QVariant::fromValue<VideoArtworkType>(
type));
1655 if (resultsdialog->Create())
1669 for (DownloadMap::const_iterator i = map.cbegin(); i != map.cend(); ++i)
1728 if (list.count() > 1)
1732 for (
int p = 0;
p != list.size(); ++
p)
1743 (list[
p])->GetYear() != 0 &&
1748 LOG(VB_GENERAL, LOG_INFO,
"Multiple results matched on year. No definite "
1749 "match could be found based on year alone.");
1752 else if (yearindex == -1)
1754 LOG(VB_GENERAL, LOG_INFO,
"Matched based on year. ");
1767 LOG(VB_GENERAL, LOG_INFO,
"Falling through to selection dialog.");
1772 Qt::QueuedConnection);
1774 if (resultsdialog->Create())
1809 QString title = tr(
"No match found for this recording. You can "
1810 "try entering a TVDB/TMDB number, season, and "
1811 "episode manually.");
1815 if (okPopup->Create())
1833 if (lul.count() >= 1)
1852 QString title = tr(
"This number, season, and episode combination "
1853 "does not appear to be valid (or the site may "
1854 "be down). Check your information and try "
1859 if (okPopup->Create())
1888 tr(
"Schedule Editor"),
1896 const QString resultid = dce->GetId();
1898 info.url = dce->GetResultText();
1900 if (resultid ==
"coverart")
1904 else if (resultid ==
"fanart")
1908 else if (resultid ==
"banner")
1930 : m_screen(&screen), m_rule(rule), m_other(other),
2060 QVariant::fromValue(value));
2090 QObject::tr(
"Use any available input"),
2091 QVariant::fromValue(0));
2094 for (
uint id : inputids)
2097 QObject::tr(
"Prefer input %1")
2121 QObject::tr(
"Record new and repeat "
2124 QObject::tr(
"Record new episodes only"),
2196 isScheduled && !isSingle &&
2256 query.
prepare(
"SELECT filterid, description, newruledefault "
2257 "FROM recordfilter ORDER BY filterid");
2261 while (query.
next())
2263 m_descriptions << QCoreApplication::translate(
"SchedFilterEditor",
2264 query.
value(1).toString().toUtf8().constData());
2274 QStringList::iterator Idesc;
2304 QObject::tr(
"None"), idx);
2317 uint32_t filter_mask = 0;
2320 for (
int idx = 0; idx < end; ++idx)
2323 if (button !=
nullptr &&
2325 filter_mask |= (1 << button->
GetData().toUInt());
2406 QStringList::Iterator it;
2414 label = QObject::tr(
"Record using the %1 profile");
2417 label.arg(QObject::tr(
"Default")),
2418 QVariant::fromValue(QString(
"Default")));
2421 label.arg(QObject::tr(
"LiveTV")),
2422 QVariant::fromValue(QString(
"LiveTV")));
2424 label.arg(QObject::tr(
"High Quality")),
2425 QVariant::fromValue(QString(
"High Quality")));
2427 label.arg(QObject::tr(
"Low Quality")),
2428 QVariant::fromValue(QString(
"Low Quality")));
2438 label = QObject::tr(
"Include in the \"%1\" recording group");
2440 QObject::tr(
"Create a new recording group"),
2441 QVariant::fromValue(QString(
"__NEW_GROUP__")));
2443 query.
prepare(
"SELECT recgroupid, recgroup FROM recgroups "
2444 "WHERE recgroup <> 'Deleted' AND "
2445 " recgroup <> 'LiveTV' "
2446 "ORDER BY special DESC, recgroup ASC");
2449 while (query.
next())
2451 int id = query.
value(0).toInt();
2452 QString name = query.
value(1).toString();
2454 if (name ==
"Default")
2455 name = QObject::tr(
"Default");
2457 QVariant::fromValue(
id));
2470 label = QObject::tr(
"Store in the \"%1\" storage group");
2472 label.arg(QObject::tr(
"Default")),
2473 QVariant::fromValue(QString(
"Default")));
2476 for (it = groups.begin(); it != groups.end(); ++it)
2478 if ((*it).compare(
"Default", Qt::CaseInsensitive) != 0)
2480 label.arg(*it), QVariant::fromValue(*it));
2491 label = QObject::tr(
"Use \"%1\" playback group settings");
2493 label.arg(QObject::tr(
"Default")),
2494 QVariant::fromValue(QString(
"Default")));
2497 for (it = groups.begin(); it != groups.end(); ++it)
2500 QVariant::fromValue(*it));
2524 QObject::tr(
"Don't record if this would exceed the max "
2525 "episodes"), QVariant::fromValue(
false));
2527 QObject::tr(
"Delete oldest if this would exceed the max "
2528 "episodes"), QVariant::fromValue(
true));
2626 QObject::tr(
"New Recording group name: ");
2631 textDialog->SetReturnEvent(
m_screen,
"newrecgroup");
2633 if (textDialog->Create())
2634 popupStack->
AddScreen(textDialog,
false);
2639 if (!
m_rule || recgroupID <= 0)
2644 recgroup = recgroup.trimmed();
2645 if (recgroup.isEmpty())
2648 QString label = QObject::tr(
"Include in the \"%1\" recording group");
2650 QVariant::fromValue(recgroupID));
2656 label.arg(recgroup), QVariant::fromValue(recgroupID));
2667 query.
prepare(
"INSERT INTO recgroups SET recgroup = :NAME, "
2668 "displayname = :DISPLAYNAME");
2670 query.
bindValue(
":DISPLAYNAME", groupName);
2676 LOG(VB_GENERAL, LOG_ERR, QString(
"Could not create recording group (%1). "
2677 "Does it already exist?").arg(groupName));
2755 QMap<int, QString>::iterator it;
2756 for (it = profiles.begin(); it != profiles.end(); ++it)
2759 QVariant::fromValue(it.key()));
2773 userjob1Text->
SetText(QObject::tr(
"Run '%1'")
2787 userjob2Text->
SetText(QObject::tr(
"Run '%1'")
2801 userjob3Text->
SetText(QObject::tr(
"Run '%1'")
2815 userjob4Text->
SetText(QObject::tr(
"Run '%1'")
2894#include "moc_scheduleeditor.cpp"
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
void Load(void) override
Load data which will ultimately be displayed on-screen or used to determine what appears on-screen (S...
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
Load data which will ultimately be displayed on-screen or used to determine what appears on-screen (S...
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)
void Load(void) override
Load data which will ultimately be displayed on-screen or used to determine what appears on-screen (S...
bool Create(void) override
bool Create(void) override
void Load(void) override
Load data which will ultimately be displayed on-screen or used to determine what appears on-screen (S...
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 Load(void) override
Load data which will ultimately be displayed on-screen or used to determine what appears on-screen (S...
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)