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()),
"",
195 if (schededit->Create())
233 if (!recrule->LoadByProgram(recinfo))
234 LOG(VB_GENERAL, LOG_ERR,
"Failed to load by program info");
236 if (!recrule->MakeOverride())
238 LOG(VB_GENERAL, LOG_ERR,
"Failed to make Override");
246 if (schededit->Create())
291 QString message = QString(
"%1 - %2 %3\n")
301 QString messageConflict;
309 for (
auto *
p : *confList)
311 if (sourceid ==
p->GetSourceID())
313 messageConflict += QString(
"%1 - %2 %3\n")
314 .arg(
p->GetRecordingStartTime().toLocalTime().toString(timeFormat),
315 p->GetRecordingEndTime().toLocalTime().toString(timeFormat),
323 if (!messageConflict.isEmpty())
326 message += tr(
"The following programs will be recorded instead:");
328 message += messageConflict;
333 auto *menuPopup =
new MythDialogBox(message, popupStack,
"recOptionPopup",
true);
335 if (!menuPopup->Create())
340 menuPopup->SetReturnEvent(
this,
"editrecording");
345 menuPopup->AddButton(tr(
"Watch This Channel"));
350 menuPopup->AddButtonV(tr(
"Record this showing"),
351 QVariant::fromValue(recinfo));
352 menuPopup->AddButtonV(tr(
"Record all showings"),
353 QVariant::fromValue(recinfo));
358 menuPopup->AddButtonV(tr(
"Record one showing"),
359 QVariant::fromValue(recinfo));
363 menuPopup->AddButtonV(tr(
"Record one showing (this episode)"),
364 QVariant::fromValue(recinfo));
368 menuPopup->AddButtonV(tr(
"Record all showings (this channel)"),
369 QVariant::fromValue(recinfo));
370 menuPopup->AddButtonV(tr(
"Edit recording rule"),
371 QVariant::fromValue(recinfo));
379 menuPopup->AddButtonV(tr(
"Stop this recording"),
380 QVariant::fromValue(recinfo));
381 menuPopup->AddButtonV(tr(
"Modify recording options"),
382 QVariant::fromValue(recinfo));
391 menuPopup->AddButtonV(tr(
"Restart this recording"),
392 QVariant::fromValue(recinfo));
408 menuPopup->AddButtonV(tr(
"Record this showing"),
409 QVariant::fromValue(recinfo));
414 menuPopup->AddButtonV(tr(
"Forget previous recording"),
415 QVariant::fromValue(recinfo));
431 menuPopup->AddButtonV(tr(
"Don't record this showing"),
432 QVariant::fromValue(recinfo));
436 static const QRegularExpression kGenericEpisodeRE {
"0000$" };
454 menuPopup->AddButtonV(tr(
"Never record this episode"),
455 QVariant::fromValue(recinfo));
462 menuPopup->AddButtonV(tr(
"Edit override rule"),
463 QVariant::fromValue(recinfo));
464 menuPopup->AddButtonV(tr(
"Delete override rule"),
465 QVariant::fromValue(recinfo));
471 menuPopup->AddButtonV(tr(
"Add override rule"),
472 QVariant::fromValue(recinfo));
473 menuPopup->AddButtonV(tr(
"Edit recording rule"),
474 QVariant::fromValue(recinfo));
475 menuPopup->AddButtonV(tr(
"Delete recording rule"),
476 QVariant::fromValue(recinfo));
494 QString resultid = dce->GetId();
495 QString resulttext = dce->GetResultText();
497 if (resultid ==
"editrecording")
504 if (resulttext == tr(
"Record this showing"))
514 recInfo.ReactivateRecording();
517 else if (resulttext == tr(
"Record all showings"))
521 else if (resulttext == tr(
"Record one showing (this episode)") ||
522 resulttext == tr(
"Record one showing"))
524 recInfo.ApplyRecordStateChange(
kOneRecord,
false);
525 recInfo.GetRecordingRule()->m_filter |= 64;
526 recInfo.GetRecordingRule()->Save();
528 else if (resulttext == tr(
"Record all showings (this channel)"))
530 recInfo.ApplyRecordStateChange(
kAllRecord,
false);
531 recInfo.GetRecordingRule()->m_filter |= 1024;
532 recInfo.GetRecordingRule()->Save();
534 else if (resulttext == tr(
"Stop this recording"))
538 else if (resulttext == tr(
"Modify recording options") ||
539 resulttext == tr(
"Add override rule"))
548 else if (resulttext == tr(
"Restart this recording"))
550 recInfo.ReactivateRecording();
552 else if (resulttext == tr(
"Forget previous recording"))
554 recInfo.ForgetHistory();
556 else if (resulttext == tr(
"Don't record this showing"))
560 else if (resulttext == tr(
"Never record this episode"))
562 recInfo.ApplyNeverRecord();
564 else if (resulttext == tr(
"Edit recording rule") ||
565 resulttext == tr(
"Edit override rule"))
569 else if (resulttext == tr(
"Delete recording rule") ||
570 resulttext == tr(
"Delete override rule"))
575 else if (resultid ==
"sortgroupmenu")
578 if (resulttext == tr(
"Group By Channel Number"))
580 else if (resulttext == tr(
"Group By Call Sign"))
582 else if (resulttext == tr(
"Group By Program ID"))
584 else if (resulttext == tr(
"Group By None"))
611 sortGroupMenu->
AddItem(tr(
"Group By Channel Number"));
612 sortGroupMenu->
AddItem(tr(
"Group By Call Sign"));
613 sortGroupMenu->
AddItem(tr(
"Group By Program ID"));
614 sortGroupMenu->
AddItem(tr(
"Group By None"));
static uint GetSourceIDForChannel(uint chanid)
A screen to create a fully custom recording.
Event dispatched from MythUI modal dialogs to a listening class containing a result of some form.
static const Type kEventType
static void RunProgramGuide(uint startChanId, const QString &startChanNum, const QDateTime &startTime, TV *player=nullptr, bool embedVideo=false, bool allowFinder=true, int changrpid=-1)
void SaveSetting(const QString &key, int newValue)
QString GetSetting(const QString &key, const QString &defaultval="")
void dispatch(const MythEvent &event)
int GetNumSetting(const QString &key, int defaultval=0)
Basic menu dialog, message and a list of options.
This class is used as a container for messages.
MythScreenStack * GetMainStack()
MythScreenStack * GetStack(const QString &Stackname)
virtual void AddScreen(MythScreenType *screen, bool allowFade=true)
Holds information on recordings and videos.
uint GetChanID(void) const
This is the unique key used in the database to locate tuning information.
uint GetRecordingRuleID(void) const
RecordingDupMethodType GetDuplicateCheckMethod(void) const
What should be compared to determine if two programs are the same?
QString GetSeriesID(void) const
QString toString(Verbosity v=kLongDescription, const QString &sep=":", const QString &grp="\"") const
QString GetProgramID(void) const
QString GetDescription(void) const
QString GetTitle(void) const
bool IsGeneric(void) const
QDateTime GetRecordingStartTime(void) const
Approximate time the recording started.
QDateTime GetScheduledStartTime(void) const
The scheduled start time of program.
uint GetFindID(void) const
QString GetChanNum(void) const
This is the channel "number", in the form 1, 1_2, 1-2, 1#1, etc.
CategoryType GetCategoryType(void) const
RecStatus::Type GetRecordingStatus(void) const
QDateTime GetRecordingEndTime(void) const
Approximate time the recording should have ended, did end, or is intended to end.
QString GetSubtitle(void) const
RecordingType GetRecordingRuleType(void) const
static QString toDescription(Type recstatus, RecordingType rectype, const QDateTime &recstartts)
Converts "recstatus" into a long human readable description.
Holds information on a TV Program one might wish to record.
void ApplyRecordStateChange(RecordingType newstate, bool save=true)
Sets RecordingType of "record", creating "record" if it does not exist.
void QuickRecord(void)
Create a kSingleRecord if not already scheduled.
Internal representation of a recording rule, mirrors the record table.
virtual void EditScheduled(void)
Creates a dialog for editing the recording schedule.
virtual void EditRecording(bool may_watch_now=false)
Creates a dialog for editing the recording status, blocking until user leaves dialog.
static ProgGroupBy::Type GetProgramListGroupBy(void)
virtual ProgramInfo * GetCurrentProgram(void) const
virtual void ShowDetails(void) const
Show the Program Details screen.
virtual void AddGroupMenuItems(MythMenu *sortGroupMenu)
void customEvent(QEvent *event) override
virtual void EditCustom(void)
Creates a dialog for creating a custom recording rule.
virtual void ShowUpcomingScheduled(void) const
Show the upcoming recordings for this recording rule.
virtual void ShowGuide(void) const
Show the program guide.
virtual void QuickRecord(void)
Create a kSingleRecord or bring up recording dialog.
static bool IsFindApplicable(const RecordingInfo &recInfo)
Returns true if a search should be employed to find a matching program.
virtual void ShowUpcoming(void) const
Show the upcoming recordings for this title.
virtual void ShowChannelSearch(void) const
Show the channel search.
static void MakeOverride(RecordingInfo *recinfo)
Creates a dialog for editing an override recording schedule.
virtual void ShowPrevious(void) const
Show the previous recordings for this recording rule.
Construct a recording schedule.
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_)
MythMainWindow * GetMythMainWindow(void)
QDateTime current(bool stripped)
Returns current Date and Time in UTC.
std::vector< ProgramInfo * > * RemoteGetConflictList(const ProgramInfo *pginfo)
bool RemoteStopRecording(uint inputid)