/** * \brief Creates a dialog displaying current recording status and options * available */ void ScheduleCommon::ShowNotRecordingDialog(const RecordingInfo& recinfo) { QString timeFormat = gCoreContext->GetSetting("TimeFormat", "h:mm AP"); QString message = recinfo.toString(ProgramInfo::kTitleSubtitle, " - "); message += "\n\n"; message += toDescription(recinfo.GetRecordingStatus(), recinfo.GetRecordingRuleType(), recinfo.GetRecordingStartTime()); if (recinfo.GetRecordingStatus() == rsConflict || recinfo.GetRecordingStatus() == rsLaterShowing) { vector<ProgramInfo *> *confList = RemoteGetConflictList(&recinfo); if (!confList->empty()) { message += " "; message += tr("The following programs will be recorded instead:"); message += "\n"; } uint maxi = 0; for (; confList->begin() != confList->end() && maxi < 4; maxi++) { ProgramInfo *p = *confList->begin(); message += QString("%1 - %2 %3\n") .arg(p->GetRecordingStartTime() .toLocalTime().toString(timeFormat)) .arg(p->GetRecordingEndTime() .toLocalTime().toString(timeFormat)) .arg(p->toString(ProgramInfo::kTitleSubtitle, " - ")); delete p; confList->erase(confList->begin()); } message += "\n"; while (!confList->empty()) { delete confList->back(); confList->pop_back(); } delete confList; } MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack"); MythDialogBox *menuPopup = new MythDialogBox(message, popupStack, "notRecOptionPopup", true); if (menuPopup->Create()) { menuPopup->SetReturnEvent(this, "schedulenotrecording"); QDateTime now = MythDate::current(); if ((recinfo.GetRecordingStartTime() < now) && (recinfo.GetRecordingEndTime() > now) && (recinfo.GetRecordingStatus() != rsDontRecord) && (recinfo.GetRecordingStatus() != rsNotListed)) { menuPopup->AddButton(tr("Restart recording this showing"), qVariantFromValue(recinfo)); } if (recinfo.GetRecordingEndTime() > now) { if ((recinfo.GetRecordingRuleType() != kSingleRecord && recinfo.GetRecordingRuleType() != kOverrideRecord) && (recinfo.GetRecordingStatus() == rsDontRecord || recinfo.GetRecordingStatus() == rsPreviousRecording || recinfo.GetRecordingStatus() == rsCurrentRecording || recinfo.GetRecordingStatus() == rsEarlierShowing || recinfo.GetRecordingStatus() == rsNeverRecord || recinfo.GetRecordingStatus() == rsRepeat || recinfo.GetRecordingStatus() == rsInactive || recinfo.GetRecordingStatus() == rsLaterShowing)) { menuPopup->AddButton(tr("Record this showing anyway"), qVariantFromValue(recinfo)); if (recinfo.GetRecordingStatus() == rsPreviousRecording || recinfo.GetRecordingStatus() == rsNeverRecord) { menuPopup->AddButton(tr("Forget previous recording"), qVariantFromValue(recinfo)); } } if (recinfo.GetRecordingRuleType() != kOverrideRecord && recinfo.GetRecordingRuleType() != kDontRecord) { if (recinfo.GetRecordingRuleType() != kSingleRecord && recinfo.GetRecordingStatus() != rsPreviousRecording && recinfo.GetRecordingStatus() != rsCurrentRecording && recinfo.GetRecordingStatus() != rsNeverRecord && recinfo.GetRecordingStatus() != rsNotListed) { if (recinfo.GetRecordingStartTime() > now) { menuPopup->AddButton(tr("Don't record this showing"), qVariantFromValue(recinfo)); } const RecordingDupMethodType dupmethod = recinfo.GetDuplicateCheckMethod(); if (recinfo.GetRecordingRuleType() != kOneRecord && !((recinfo.GetFindID() == 0 || !IsFindApplicable(recinfo)) && recinfo.GetCategoryType() == "series" && recinfo.GetProgramID().contains(QRegExp("0000$"))) && ((!(dupmethod & kDupCheckNone) && !recinfo.GetProgramID().isEmpty() && (recinfo.GetFindID() != 0 || !IsFindApplicable(recinfo))) || ((dupmethod & kDupCheckSub) && !recinfo.GetSubtitle().isEmpty()) || ((dupmethod & kDupCheckDesc) && !recinfo.GetDescription().isEmpty()) || ((dupmethod & kDupCheckSubThenDesc) && (!recinfo.GetSubtitle().isEmpty() || !recinfo.GetDescription().isEmpty())) )) { menuPopup->AddButton(tr("Never record this episode"), qVariantFromValue(recinfo)); } } if (recinfo.GetRecordingRuleType() != kSingleRecord && recinfo.GetRecordingRuleType() != kOneRecord && recinfo.GetRecordingStatus() != rsNotListed) { menuPopup->AddButton(tr("Override this showing with options"), qVariantFromValue(recinfo)); } menuPopup->AddButton(tr("Edit recording options"), qVariantFromValue(recinfo)); menuPopup->AddButton(tr("Delete recording rule"), qVariantFromValue(recinfo)); } if (recinfo.GetRecordingRuleType() == kOverrideRecord || recinfo.GetRecordingRuleType() == kDontRecord) { menuPopup->AddButton(tr("Edit override options"), qVariantFromValue(recinfo)); menuPopup->AddButton(tr("Delete override rule"), qVariantFromValue(recinfo)); } } popupStack->AddScreen(menuPopup); } else delete menuPopup; }
/** * \brief Creates a dialog for editing the recording status, * blocking until user leaves dialog. */ void ScheduleCommon::EditRecording(bool may_watch_now) { ProgramInfo *pginfo = GetCurrentProgram(); if (!pginfo) return; RecordingInfo recinfo(*pginfo); QString timeFormat = gCoreContext->GetSetting("TimeFormat", "h:mm AP"); QString message = recinfo.toString(ProgramInfo::kTitleSubtitle, " - "); message += "\n\n"; message += RecStatus::toDescription(recinfo.GetRecordingStatus(), recinfo.GetRecordingRuleType(), recinfo.GetRecordingStartTime()); if (recinfo.GetRecordingStatus() == RecStatus::Conflict || recinfo.GetRecordingStatus() == RecStatus::LaterShowing) { vector<ProgramInfo *> *confList = RemoteGetConflictList(&recinfo); if (!confList->empty()) { message += " "; message += tr("The following programs will be recorded instead:"); message += "\n"; } uint maxi = 0; for (; confList->begin() != confList->end() && maxi < 4; maxi++) { ProgramInfo *p = *confList->begin(); message += QString("%1 - %2 %3\n") .arg(p->GetRecordingStartTime() .toLocalTime().toString(timeFormat)) .arg(p->GetRecordingEndTime() .toLocalTime().toString(timeFormat)) .arg(p->toString(ProgramInfo::kTitleSubtitle, " - ")); delete p; confList->erase(confList->begin()); } message += "\n"; while (!confList->empty()) { delete confList->back(); confList->pop_back(); } delete confList; } MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack"); MythDialogBox *menuPopup = new MythDialogBox(message, popupStack, "recOptionPopup", true); if (!menuPopup->Create()) { delete menuPopup; return; } menuPopup->SetReturnEvent(this, "editrecording"); QDateTime now = MythDate::current(); if(may_watch_now) menuPopup->AddButton(tr("Watch This Channel")); if (recinfo.GetRecordingStatus() == RecStatus::Unknown) { if (recinfo.GetRecordingEndTime() > now) menuPopup->AddButton(tr("Record this showing"), qVariantFromValue(recinfo)); menuPopup->AddButton(tr("Record all showings"), qVariantFromValue(recinfo)); if (!recinfo.IsGeneric()) { if (recinfo.GetCategoryType() == ProgramInfo::kCategoryMovie) menuPopup->AddButton(tr("Record one showing"), qVariantFromValue(recinfo)); else menuPopup->AddButton(tr("Record one showing (this episode)"), qVariantFromValue(recinfo)); } menuPopup->AddButton(tr("Record all showings (this channel)"), qVariantFromValue(recinfo)); menuPopup->AddButton(tr("Edit recording rule"), qVariantFromValue(recinfo)); } else if (recinfo.GetRecordingStatus() == RecStatus::Recording || recinfo.GetRecordingStatus() == RecStatus::Tuning || recinfo.GetRecordingStatus() == RecStatus::Failing || recinfo.GetRecordingStatus() == RecStatus::Pending) { if (recinfo.GetRecordingStatus() != RecStatus::Pending) menuPopup->AddButton(tr("Stop this recording"), qVariantFromValue(recinfo)); menuPopup->AddButton(tr("Modify recording options"), qVariantFromValue(recinfo)); } else { if (recinfo.GetRecordingStartTime() < now && recinfo.GetRecordingEndTime() > now && recinfo.GetRecordingStatus() != RecStatus::DontRecord && recinfo.GetRecordingStatus() != RecStatus::NotListed) { menuPopup->AddButton(tr("Restart this recording"), qVariantFromValue(recinfo)); } if (recinfo.GetRecordingEndTime() > now && recinfo.GetRecordingRuleType() != kSingleRecord && recinfo.GetRecordingRuleType() != kOverrideRecord && (recinfo.GetRecordingStatus() == RecStatus::DontRecord || recinfo.GetRecordingStatus() == RecStatus::PreviousRecording || recinfo.GetRecordingStatus() == RecStatus::CurrentRecording || recinfo.GetRecordingStatus() == RecStatus::EarlierShowing || recinfo.GetRecordingStatus() == RecStatus::TooManyRecordings || recinfo.GetRecordingStatus() == RecStatus::LaterShowing || recinfo.GetRecordingStatus() == RecStatus::Repeat || recinfo.GetRecordingStatus() == RecStatus::Inactive || recinfo.GetRecordingStatus() == RecStatus::NeverRecord)) { menuPopup->AddButton(tr("Record this showing"), qVariantFromValue(recinfo)); if (recinfo.GetRecordingStartTime() > now && (recinfo.GetRecordingStatus() == RecStatus::PreviousRecording || recinfo.GetRecordingStatus() == RecStatus::NeverRecord)) { menuPopup->AddButton(tr("Forget previous recording"), qVariantFromValue(recinfo)); } } if (recinfo.GetRecordingRuleType() != kSingleRecord && recinfo.GetRecordingRuleType() != kDontRecord && (recinfo.GetRecordingStatus() == RecStatus::WillRecord || recinfo.GetRecordingStatus() == RecStatus::CurrentRecording || recinfo.GetRecordingStatus() == RecStatus::EarlierShowing || recinfo.GetRecordingStatus() == RecStatus::TooManyRecordings || recinfo.GetRecordingStatus() == RecStatus::Conflict || recinfo.GetRecordingStatus() == RecStatus::LaterShowing || recinfo.GetRecordingStatus() == RecStatus::Offline)) { if (recinfo.GetRecordingStatus() == RecStatus::WillRecord || recinfo.GetRecordingStatus() == RecStatus::Conflict) menuPopup->AddButton(tr("Don't record this showing"), qVariantFromValue(recinfo)); const RecordingDupMethodType dupmethod = recinfo.GetDuplicateCheckMethod(); if (recinfo.GetRecordingRuleType() != kOverrideRecord && !((recinfo.GetFindID() == 0 || !IsFindApplicable(recinfo)) && recinfo.GetCategoryType() == ProgramInfo::kCategorySeries && recinfo.GetProgramID().contains(QRegExp("0000$"))) && ((!(dupmethod & kDupCheckNone) && !recinfo.GetProgramID().isEmpty() && (recinfo.GetFindID() != 0 || !IsFindApplicable(recinfo))) || ((dupmethod & kDupCheckSub) && !recinfo.GetSubtitle().isEmpty()) || ((dupmethod & kDupCheckDesc) && !recinfo.GetDescription().isEmpty()) || ((dupmethod & kDupCheckSubThenDesc) && (!recinfo.GetSubtitle().isEmpty() || !recinfo.GetDescription().isEmpty())) )) { menuPopup->AddButton(tr("Never record this episode"), qVariantFromValue(recinfo)); } } if (recinfo.GetRecordingRuleType() == kOverrideRecord || recinfo.GetRecordingRuleType() == kDontRecord) { menuPopup->AddButton(tr("Edit override rule"), qVariantFromValue(recinfo)); menuPopup->AddButton(tr("Delete override rule"), qVariantFromValue(recinfo)); } else { if (recinfo.GetRecordingRuleType() != kSingleRecord && recinfo.GetRecordingStatus() != RecStatus::NotListed) menuPopup->AddButton(tr("Add override rule"), qVariantFromValue(recinfo)); menuPopup->AddButton(tr("Edit recording rule"), qVariantFromValue(recinfo)); menuPopup->AddButton(tr("Delete recording rule"), qVariantFromValue(recinfo)); } } popupStack->AddScreen(menuPopup); }
/** * \brief Creates a dialog displaying current recording status and options * available */ void ScheduleCommon::ShowRecordingDialog(const RecordingInfo& recinfo) { QString message = recinfo.toString(ProgramInfo::kTitleSubtitle, " - "); message += "\n\n"; message += toDescription(recinfo.GetRecordingStatus(), recinfo.GetRecordingRuleType(), recinfo.GetRecordingStartTime()); MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack"); MythDialogBox *menuPopup = new MythDialogBox(message, popupStack, "recOptionPopup", true); if (menuPopup->Create()) { menuPopup->SetReturnEvent(this, "schedulerecording"); QDateTime now = MythDate::current(); if (recinfo.GetRecordingStartTime() < now && recinfo.GetRecordingEndTime() > now) { if (recinfo.GetRecordingStatus() != rsRecording && recinfo.GetRecordingStatus() != rsTuning && recinfo.GetRecordingStatus() != rsOtherRecording && recinfo.GetRecordingStatus() != rsOtherTuning) menuPopup->AddButton(tr("Restart recording this showing"), qVariantFromValue(recinfo)); else menuPopup->AddButton(tr("Stop recording this showing"), qVariantFromValue(recinfo)); } if (recinfo.GetRecordingEndTime() > now) { if (recinfo.GetRecordingRuleType() != kSingleRecord && recinfo.GetRecordingRuleType() != kOverrideRecord) { if (recinfo.GetRecordingStartTime() > now) { menuPopup->AddButton(tr("Don't record this showing"), qVariantFromValue(recinfo)); } const RecordingDupMethodType dupmethod = recinfo.GetDuplicateCheckMethod(); if (recinfo.GetRecordingStatus() != rsRecording && recinfo.GetRecordingStatus() != rsTuning && recinfo.GetRecordingStatus() != rsOtherRecording && recinfo.GetRecordingStatus() != rsOtherTuning && recinfo.GetRecordingRuleType() != kOneRecord && !((recinfo.GetFindID() == 0 || !IsFindApplicable(recinfo)) && recinfo.GetCategoryType() == "series" && recinfo.GetProgramID().contains(QRegExp("0000$"))) && ((!(dupmethod & kDupCheckNone) && !recinfo.GetProgramID().isEmpty() && (recinfo.GetFindID() != 0 || !IsFindApplicable(recinfo))) || ((dupmethod & kDupCheckSub) && !recinfo.GetSubtitle().isEmpty()) || ((dupmethod & kDupCheckDesc) && !recinfo.GetDescription().isEmpty()) || ((dupmethod & kDupCheckSubThenDesc) && (!recinfo.GetSubtitle().isEmpty() || !recinfo.GetDescription().isEmpty())) )) { menuPopup->AddButton(tr("Never record this episode"), qVariantFromValue(recinfo)); } } if (recinfo.GetRecordingRuleType() != kOverrideRecord && recinfo.GetRecordingRuleType() != kDontRecord) { if (recinfo.GetRecordingStatus() == rsRecording || recinfo.GetRecordingStatus() == rsTuning || recinfo.GetRecordingStatus() == rsOtherRecording || recinfo.GetRecordingStatus() == rsOtherTuning) { menuPopup->AddButton(tr("Edit options for this showing"), qVariantFromValue(recinfo)); } else { if (recinfo.GetRecordingRuleType() != kSingleRecord) { menuPopup->AddButton(tr("Override this showing with options"), qVariantFromValue(recinfo)); } } } if (recinfo.GetRecordingRuleType() == kOverrideRecord || recinfo.GetRecordingRuleType() == kDontRecord) { if (recinfo.GetRecordingStatus() == rsRecording || recinfo.GetRecordingStatus() == rsTuning || recinfo.GetRecordingStatus() == rsOtherRecording || recinfo.GetRecordingStatus() == rsOtherTuning) { menuPopup->AddButton(tr("Edit options for this showing"), qVariantFromValue(recinfo)); } else { menuPopup->AddButton(tr("Edit override options"), qVariantFromValue(recinfo)); menuPopup->AddButton(tr("Delete override rule"), qVariantFromValue(recinfo)); } } } if (recinfo.GetRecordingRuleType() != kOverrideRecord && recinfo.GetRecordingRuleType() != kDontRecord) { menuPopup->AddButton(tr("Edit recording options"), qVariantFromValue(recinfo)); menuPopup->AddButton(tr("Delete recording rule"), qVariantFromValue(recinfo)); } popupStack->AddScreen(menuPopup); } else delete menuPopup; }