Go to the documentation of this file.
2 #include <QCoreApplication>
35 auto *details_dialog =
new ProgDetails(mainStack, pginfo);
37 if (!details_dialog->Create())
39 delete details_dialog;
50 const QString &seriesid)
124 QString::number(pginfo->
GetChanID()),
"",
193 if (schededit->Create())
229 if (!recrule->LoadByProgram(recinfo))
230 LOG(VB_GENERAL, LOG_ERR,
"Failed to load by program info");
232 if (!recrule->MakeOverride())
234 LOG(VB_GENERAL, LOG_ERR,
"Failed to make Override");
242 if (schededit->Create())
287 QString message = QString(
"%1 - %2 %3\n")
297 QString messageConflict;
305 for (
auto *
p : *confList)
307 if (sourceid ==
p->GetSourceID())
309 messageConflict += QString(
"%1 - %2 %3\n")
310 .arg(
p->GetRecordingStartTime().toLocalTime().toString(timeFormat),
311 p->GetRecordingEndTime().toLocalTime().toString(timeFormat),
319 if (!messageConflict.isEmpty())
322 message += tr(
"The following programs will be recorded instead:");
324 message += messageConflict;
329 auto *menuPopup =
new MythDialogBox(message, popupStack,
"recOptionPopup",
true);
331 if (!menuPopup->Create())
336 menuPopup->SetReturnEvent(
this,
"editrecording");
341 menuPopup->AddButton(tr(
"Watch This Channel"));
346 menuPopup->AddButtonV(tr(
"Record this showing"),
347 QVariant::fromValue(recinfo));
348 menuPopup->AddButtonV(tr(
"Record all showings"),
349 QVariant::fromValue(recinfo));
354 menuPopup->AddButtonV(tr(
"Record one showing"),
355 QVariant::fromValue(recinfo));
359 menuPopup->AddButtonV(tr(
"Record one showing (this episode)"),
360 QVariant::fromValue(recinfo));
364 menuPopup->AddButtonV(tr(
"Record all showings (this channel)"),
365 QVariant::fromValue(recinfo));
366 menuPopup->AddButtonV(tr(
"Edit recording rule"),
367 QVariant::fromValue(recinfo));
375 menuPopup->AddButtonV(tr(
"Stop this recording"),
376 QVariant::fromValue(recinfo));
377 menuPopup->AddButtonV(tr(
"Modify recording options"),
378 QVariant::fromValue(recinfo));
387 menuPopup->AddButtonV(tr(
"Restart this recording"),
388 QVariant::fromValue(recinfo));
404 menuPopup->AddButtonV(tr(
"Record this showing"),
405 QVariant::fromValue(recinfo));
410 menuPopup->AddButtonV(tr(
"Forget previous recording"),
411 QVariant::fromValue(recinfo));
427 menuPopup->AddButtonV(tr(
"Don't record this showing"),
428 QVariant::fromValue(recinfo));
432 static const QRegularExpression kGenericEpisodeRE {
"0000$" };
450 menuPopup->AddButtonV(tr(
"Never record this episode"),
451 QVariant::fromValue(recinfo));
458 menuPopup->AddButtonV(tr(
"Edit override rule"),
459 QVariant::fromValue(recinfo));
460 menuPopup->AddButtonV(tr(
"Delete override rule"),
461 QVariant::fromValue(recinfo));
467 menuPopup->AddButtonV(tr(
"Add override rule"),
468 QVariant::fromValue(recinfo));
469 menuPopup->AddButtonV(tr(
"Edit recording rule"),
470 QVariant::fromValue(recinfo));
471 menuPopup->AddButtonV(tr(
"Delete recording rule"),
472 QVariant::fromValue(recinfo));
490 QString resultid = dce->GetId();
491 QString resulttext = dce->GetResultText();
493 if (resultid ==
"editrecording")
500 if (resulttext == tr(
"Record this showing"))
508 recInfo.ReactivateRecording();
511 else if (resulttext == tr(
"Record all showings"))
515 else if (resulttext == tr(
"Record one showing (this episode)") ||
516 resulttext == tr(
"Record one showing"))
518 recInfo.ApplyRecordStateChange(
kOneRecord,
false);
519 recInfo.GetRecordingRule()->m_filter |= 64;
520 recInfo.GetRecordingRule()->Save();
522 else if (resulttext == tr(
"Record all showings (this channel)"))
524 recInfo.ApplyRecordStateChange(
kAllRecord,
false);
525 recInfo.GetRecordingRule()->m_filter |= 1024;
526 recInfo.GetRecordingRule()->Save();
528 else if (resulttext == tr(
"Stop this recording"))
532 else if (resulttext == tr(
"Modify recording options") ||
533 resulttext == tr(
"Add override rule"))
542 else if (resulttext == tr(
"Restart this recording"))
544 recInfo.ReactivateRecording();
546 else if (resulttext == tr(
"Forget previous recording"))
548 recInfo.ForgetHistory();
550 else if (resulttext == tr(
"Don't record this showing"))
554 else if (resulttext == tr(
"Never record this episode"))
556 recInfo.ApplyNeverRecord();
558 else if (resulttext == tr(
"Edit recording rule") ||
559 resulttext == tr(
"Edit override rule"))
563 else if (resulttext == tr(
"Delete recording rule") ||
564 resulttext == tr(
"Delete override rule"))
569 else if (resultid ==
"sortgroupmenu")
572 if (resulttext == tr(
"Group By Channel Number"))
574 else if (resulttext == tr(
"Group By Call Sign"))
576 else if (resulttext == tr(
"Group By Program ID"))
578 else if (resulttext == tr(
"Group By None"))
605 sortGroupMenu->
AddItem(tr(
"Group By Channel Number"));
606 sortGroupMenu->
AddItem(tr(
"Group By Call Sign"));
607 sortGroupMenu->
AddItem(tr(
"Group By Program ID"));
608 sortGroupMenu->
AddItem(tr(
"Group By None"));
MythScreenStack * GetMainStack()
static void RunProgramGuide(uint startChanId, const QString &startChanNum, const QDateTime &startTime, TV *player=nullptr, bool embedVideo=false, bool allowFinder=true, int changrpid=-1)
void ApplyRecordStateChange(RecordingType newstate, bool save=true)
Sets RecordingType of "record", creating "record" if it does not exist.
void customEvent(QEvent *event) override
Holds information on a TV Program one might wish to record.
virtual void ShowUpcomingScheduled(void) const
Show the upcoming recordings for this recording rule.
QString GetChanNum(void) const
This is the channel "number", in the form 1, 1_2, 1-2, 1#1, etc.
This class is used as a container for messages.
static ProgGroupBy::Type GetProgramListGroupBy(void)
Internal representation of a recording rule, mirrors the record table.
virtual void ShowGuide(void) const
Show the program guide.
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
QDateTime GetRecordingEndTime(void) const
Approximate time the recording should have ended, did end, or is intended to end.
virtual void ShowDetails(void) const
Show the Program Details screen.
QDateTime current(bool stripped)
Returns current Date and Time in UTC.
QDateTime GetRecordingStartTime(void) const
Approximate time the recording started.
virtual void EditRecording(bool may_watch_now=false)
Creates a dialog for editing the recording status, blocking until user leaves dialog.
virtual void EditScheduled(void)
Creates a dialog for editing the recording schedule.
virtual void ShowPrevious(void) const
Show the previous recordings for this recording rule.
QDateTime GetScheduledStartTime(void) const
The scheduled start time of program.
virtual void EditCustom(void)
Creates a dialog for creating a custom recording rule.
RecStatus::Type GetRecordingStatus(void) const
bool RemoteStopRecording(uint inputid)
static bool IsFindApplicable(const RecordingInfo &recInfo)
Returns true if a search should be employed to find a matching program.
static QString toDescription(Type recstatus, RecordingType rectype, const QDateTime &recstartts)
Converts "recstatus" into a long human readable description.
Basic menu dialog, message and a list of options.
QString GetTitle(void) const
QString GetDescription(void) const
virtual ProgramInfo * GetCurrentProgram(void) const
void QuickRecord(void)
Create a kSingleRecord if not already scheduled.
QString toString(Verbosity v=kLongDescription, const QString &sep=":", const QString &grp="\"") const
uint GetFindID(void) const
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
QString GetSeriesID(void) const
A screen to create a fully custom recording.
int GetNumSetting(const QString &key, int defaultval=0)
RecordingDupMethodType GetDuplicateCheckMethod(void) const
What should be compared to determine if two programs are the same?
uint GetChanID(void) const
This is the unique key used in the database to locate tuning information.
RecordingType GetRecordingRuleType(void) const
Holds information on recordings and videos.
static uint GetSourceIDForChannel(uint chanid)
Event dispatched from MythUI modal dialogs to a listening class containing a result of some form.
virtual void ShowUpcoming(void) const
Show the upcoming recordings for this title.
static const Type kEventType
virtual void QuickRecord(void)
Create a kSingleRecord or bring up recording dialog.
MythMainWindow * GetMythMainWindow(void)
static void MakeOverride(RecordingInfo *recinfo)
Creates a dialog for editing an override recording schedule.
std::vector< ProgramInfo * > * RemoteGetConflictList(const ProgramInfo *pginfo)
MythScreenStack * GetStack(const QString &Stackname)
virtual void ShowChannelSearch(void) const
Show the channel search.
QString GetProgramID(void) const
virtual void AddGroupMenuItems(MythMenu *sortGroupMenu)
void SaveSetting(const QString &key, int newValue)
uint GetRecordingRuleID(void) const
CategoryType GetCategoryType(void) const
virtual void AddScreen(MythScreenType *screen, bool allowFade=true)
bool IsGeneric(void) const
void dispatch(const MythEvent &event)
MythConfirmationDialog * ShowOkPopup(const QString &message, bool showCancel)
Non-blocking version of MythPopupBox::showOkPopup()
Construct a recording schedule.
QString GetSetting(const QString &key, const QString &defaultval="")
QString GetSubtitle(void) const