MythTV  master
schedulecommon.cpp
Go to the documentation of this file.
1 // Qt
2 #include <QCoreApplication>
3 
4 // MythTV
10 #include "libmythtv/tvremoteutil.h"
14 
15 // MythFrontend
16 #include "customedit.h"
17 #include "guidegrid.h"
18 #include "prevreclist.h"
19 #include "progdetails.h"
20 #include "proglist.h"
21 #include "schedulecommon.h"
22 #include "scheduleeditor.h"
23 
28 {
29  ProgramInfo *pginfo = GetCurrentProgram();
30  if (!pginfo)
31  return;
32 
34  auto *details_dialog = new ProgDetails(mainStack, pginfo);
35 
36  if (!details_dialog->Create())
37  {
38  delete details_dialog;
39  return;
40  }
41 
42  mainStack->AddScreen(details_dialog);
43 }
44 
48 void ScheduleCommon::ShowUpcoming(const QString &title,
49  const QString &seriesid)
50 {
51  if (title.isEmpty())
52  return;
53 
55  auto *pl = new ProgLister(mainStack, plTitle, title, seriesid);
56  if (pl->Create())
57  {
58  mainStack->AddScreen(pl);
59  }
60  else
61  delete pl;
62 }
63 
68 {
69  ProgramInfo *pginfo = GetCurrentProgram();
70  if (!pginfo)
71  return;
72 
73  if (pginfo->GetChanID() == 0 &&
74  pginfo->GetRecordingRuleID() > 0)
75  {
77  return;
78  }
79 
80  ShowUpcoming(pginfo->GetTitle(), pginfo->GetSeriesID());
81 }
82 
87 {
88  ProgramInfo *pginfo = GetCurrentProgram();
89  if (!pginfo)
90  return;
91 
92  RecordingInfo ri(*pginfo);
93 
94  uint id = ri.GetRecordingRuleID();
95  if (id == 0)
96  {
97  ShowUpcoming(pginfo->GetTitle(), pginfo->GetSeriesID());
98  return;
99  }
100 
102  auto *pl = new ProgLister(mainStack, plRecordid, QString::number(id), "");
103 
104  if (pl->Create())
105  mainStack->AddScreen(pl);
106  else
107  delete pl;
108 }
109 
114 {
115  ProgramInfo *pginfo = GetCurrentProgram();
116  if (!pginfo)
117  return;
118 
120  auto *pl = new ProgLister(mainStack, plChannel,
121  QString::number(pginfo->GetChanID()), "",
122  pginfo->GetScheduledStartTime());
123  if (pl->Create())
124  mainStack->AddScreen(pl);
125  else
126  delete pl;
127 }
128 
133 {
134  ProgramInfo *pginfo = GetCurrentProgram();
135  if (!pginfo)
136  return;
137 
138  QString startchannel = pginfo->GetChanNum();
139  uint startchanid = pginfo->GetChanID();
140  QDateTime starttime = pginfo->GetScheduledStartTime();
141  GuideGrid::RunProgramGuide(startchanid, startchannel, starttime);
142 }
143 
148 {
149  ProgramInfo *pginfo = GetCurrentProgram();
150  if (!pginfo)
151  return;
152 
153  if (pginfo->GetRecordingRuleID())
154  EditRecording();
155  else
156  {
157  RecordingInfo ri(*pginfo);
158  ri.QuickRecord();
159  *pginfo = ri;
160  }
161 }
162 
167 {
169 }
170 
175 {
176  if (!pginfo)
177  return;
178 
179  RecordingInfo ri(*pginfo);
180  EditScheduled(&ri);
181 }
182 
187 {
189  auto *schededit = new ScheduleEditor(mainStack, recinfo);
190  if (schededit->Create())
191  mainStack->AddScreen(schededit);
192  else
193  {
194  delete schededit;
195  ShowOkPopup(tr("Recording rule does not exist."));
196  }
197 }
198 
203 {
204  ProgramInfo *pginfo = GetCurrentProgram();
205  if (!pginfo)
206  return;
207 
209  auto *ce = new CustomEdit(mainStack, pginfo);
210  if (ce->Create())
211  mainStack->AddScreen(ce);
212  else
213  delete ce;
214 }
215 
220 {
221  if (!recinfo || !recinfo->GetRecordingRuleID())
222  return;
223 
224  auto *recrule = new RecordingRule();
225 
226  if (!recrule->LoadByProgram(recinfo))
227  LOG(VB_GENERAL, LOG_ERR, "Failed to load by program info");
228 
229  if (!recrule->MakeOverride())
230  {
231  LOG(VB_GENERAL, LOG_ERR, "Failed to make Override");
232  delete recrule;
233  return;
234  }
235  recrule->m_type = kOverrideRecord;
236 
238  auto *schededit = new ScheduleEditor(mainStack, recrule);
239  if (schededit->Create())
240  mainStack->AddScreen(schededit);
241  else
242  delete schededit;
243 }
244 
249 {
250  ProgramInfo *pginfo = GetCurrentProgram();
251  if (!pginfo)
252  return;
253 
254  ShowPrevious(pginfo->GetRecordingRuleID(), pginfo->GetTitle());
255 }
256 
260 void ScheduleCommon::ShowPrevious(uint ruleid, const QString &title) const
261 {
263  auto *pl = new PrevRecordedList(mainStack, ruleid, title);
264  if (pl->Create())
265  mainStack->AddScreen(pl);
266  else
267  delete pl;
268 }
269 
274 void ScheduleCommon::EditRecording(bool may_watch_now)
275 {
276  ProgramInfo *pginfo = GetCurrentProgram();
277  if (!pginfo)
278  return;
279 
280  RecordingInfo recinfo(*pginfo);
281 
282  QString timeFormat = gCoreContext->GetSetting("TimeFormat", "h:mm AP");
283 
284  QString message = QString("%1 - %2 %3\n")
285  .arg(recinfo.GetRecordingStartTime().toLocalTime().toString(timeFormat),
286  recinfo.GetRecordingEndTime().toLocalTime().toString(timeFormat),
287  recinfo.toString(ProgramInfo::kTitleSubtitle, " - "));
288 
289  message += "\n";
290  message += RecStatus::toDescription(recinfo.GetRecordingStatus(),
291  recinfo.GetRecordingRuleType(),
292  recinfo.GetRecordingStartTime());
293 
294  QString messageConflict;
295  if (recinfo.GetRecordingStatus() == RecStatus::Conflict ||
297  {
298  std::vector<ProgramInfo *> *confList = RemoteGetConflictList(&recinfo);
299  uint chanid = recinfo.GetChanID();
300  uint sourceid = ChannelUtil::GetSourceIDForChannel(chanid);
301 
302  for (auto *p : *confList)
303  {
304  if (sourceid == p->GetSourceID())
305  {
306  messageConflict += QString("%1 - %2 %3\n")
307  .arg(p->GetRecordingStartTime().toLocalTime().toString(timeFormat),
308  p->GetRecordingEndTime().toLocalTime().toString(timeFormat),
309  p->toString(ProgramInfo::kTitleSubtitle, " - "));
310  }
311  delete p;
312  }
313  delete confList;
314  }
315 
316  if (!messageConflict.isEmpty())
317  {
318  message += " ";
319  message += tr("The following programs will be recorded instead:");
320  message += "\n";
321  message += messageConflict;
322  message += "\n";
323  }
324 
325  MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
326  auto *menuPopup = new MythDialogBox(message, popupStack, "recOptionPopup", true);
327 
328  if (!menuPopup->Create())
329  {
330  delete menuPopup;
331  return;
332  }
333  menuPopup->SetReturnEvent(this, "editrecording");
334 
335  QDateTime now = MythDate::current();
336 
337  if(may_watch_now)
338  menuPopup->AddButton(tr("Watch This Channel"));
339 
340  if (recinfo.GetRecordingStatus() == RecStatus::Unknown)
341  {
342  if (recinfo.GetRecordingEndTime() > now)
343  menuPopup->AddButtonV(tr("Record this showing"),
344  QVariant::fromValue(recinfo));
345  menuPopup->AddButtonV(tr("Record all showings"),
346  QVariant::fromValue(recinfo));
347  if (!recinfo.IsGeneric())
348  {
350  {
351  menuPopup->AddButtonV(tr("Record one showing"),
352  QVariant::fromValue(recinfo));
353  }
354  else
355  {
356  menuPopup->AddButtonV(tr("Record one showing (this episode)"),
357  QVariant::fromValue(recinfo));
358  }
359 
360  }
361  menuPopup->AddButtonV(tr("Record all showings (this channel)"),
362  QVariant::fromValue(recinfo));
363  menuPopup->AddButtonV(tr("Edit recording rule"),
364  QVariant::fromValue(recinfo));
365  }
366  else if (recinfo.GetRecordingStatus() == RecStatus::Recording ||
367  recinfo.GetRecordingStatus() == RecStatus::Tuning ||
368  recinfo.GetRecordingStatus() == RecStatus::Failing ||
370  {
371  if (recinfo.GetRecordingStatus() != RecStatus::Pending)
372  menuPopup->AddButtonV(tr("Stop this recording"),
373  QVariant::fromValue(recinfo));
374  menuPopup->AddButtonV(tr("Modify recording options"),
375  QVariant::fromValue(recinfo));
376  }
377  else
378  {
379  if (recinfo.GetRecordingStartTime() < now &&
380  recinfo.GetRecordingEndTime() > now &&
383  {
384  menuPopup->AddButtonV(tr("Restart this recording"),
385  QVariant::fromValue(recinfo));
386  }
387 
388  if (recinfo.GetRecordingEndTime() > now &&
389  recinfo.GetRecordingRuleType() != kSingleRecord &&
390  recinfo.GetRecordingRuleType() != kOverrideRecord &&
397  recinfo.GetRecordingStatus() == RecStatus::Repeat ||
400  {
401  menuPopup->AddButtonV(tr("Record this showing"),
402  QVariant::fromValue(recinfo));
403  if (recinfo.GetRecordingStartTime() > now &&
406  {
407  menuPopup->AddButtonV(tr("Forget previous recording"),
408  QVariant::fromValue(recinfo));
409  }
410  }
411 
412  if (recinfo.GetRecordingRuleType() != kSingleRecord &&
413  recinfo.GetRecordingRuleType() != kDontRecord &&
421  {
422  if (recinfo.GetRecordingStatus() == RecStatus::WillRecord ||
424  menuPopup->AddButtonV(tr("Don't record this showing"),
425  QVariant::fromValue(recinfo));
426 
427  const RecordingDupMethodType dupmethod =
428  recinfo.GetDuplicateCheckMethod();
429  static const QRegularExpression kGenericEpisodeRE { "0000$" };
430  if (recinfo.GetRecordingRuleType() != kOverrideRecord &&
431  ((recinfo.GetFindID() != 0 &&
432  IsFindApplicable(recinfo)) ||
434  !recinfo.GetProgramID().contains(kGenericEpisodeRE)) &&
435  ((((dupmethod & kDupCheckNone) == 0) &&
436  !recinfo.GetProgramID().isEmpty() &&
437  (recinfo.GetFindID() != 0 ||
438  !IsFindApplicable(recinfo))) ||
439  (((dupmethod & kDupCheckSub) != 0) &&
440  !recinfo.GetSubtitle().isEmpty()) ||
441  (((dupmethod & kDupCheckDesc) != 0) &&
442  !recinfo.GetDescription().isEmpty()) ||
443  (((dupmethod & kDupCheckSubThenDesc) != 0) &&
444  (!recinfo.GetSubtitle().isEmpty() ||
445  !recinfo.GetDescription().isEmpty())) ))
446  {
447  menuPopup->AddButtonV(tr("Never record this episode"),
448  QVariant::fromValue(recinfo));
449  }
450  }
451 
452  if (recinfo.GetRecordingRuleType() == kOverrideRecord ||
453  recinfo.GetRecordingRuleType() == kDontRecord)
454  {
455  menuPopup->AddButtonV(tr("Edit override rule"),
456  QVariant::fromValue(recinfo));
457  menuPopup->AddButtonV(tr("Delete override rule"),
458  QVariant::fromValue(recinfo));
459  }
460  else
461  {
462  if (recinfo.GetRecordingRuleType() != kSingleRecord &&
464  menuPopup->AddButtonV(tr("Add override rule"),
465  QVariant::fromValue(recinfo));
466  menuPopup->AddButtonV(tr("Edit recording rule"),
467  QVariant::fromValue(recinfo));
468  menuPopup->AddButtonV(tr("Delete recording rule"),
469  QVariant::fromValue(recinfo));
470  }
471  }
472 
473  popupStack->AddScreen(menuPopup);
474 }
475 
477 {
478  EditRecording();
479 }
480 
481 void ScheduleCommon::customEvent(QEvent *event)
482 {
483  if (event->type() == DialogCompletionEvent::kEventType)
484  {
485  auto *dce = (DialogCompletionEvent*)(event);
486 
487  QString resultid = dce->GetId();
488  QString resulttext = dce->GetResultText();
489 
490  if (resultid == "editrecording")
491  {
492  if (!dce->GetData().canConvert<RecordingInfo>())
493  return;
494 
495  auto recInfo = dce->GetData().value<RecordingInfo>();
496 
497  if (resulttext == tr("Record this showing"))
498  {
499  if (recInfo.GetRecordingRuleType() == kNotRecording)
501  else
502  {
503  recInfo.ApplyRecordStateChange(kOverrideRecord);
504  if (recInfo.GetRecordingStartTime() < MythDate::current())
505  recInfo.ReactivateRecording();
506  }
507  }
508  else if (resulttext == tr("Record all showings"))
509  recInfo.ApplyRecordStateChange(kAllRecord);
510  else if (resulttext == tr("Record one showing (this episode)") ||
511  resulttext == tr("Record one showing"))
512  {
513  recInfo.ApplyRecordStateChange(kOneRecord, false);
514  recInfo.GetRecordingRule()->m_filter |= 64; // This episode
515  recInfo.GetRecordingRule()->Save();
516  }
517  else if (resulttext == tr("Record all showings (this channel)"))
518  {
519  recInfo.ApplyRecordStateChange(kAllRecord, false);
520  recInfo.GetRecordingRule()->m_filter |= 1024; // This channel
521  recInfo.GetRecordingRule()->Save();
522  }
523  else if (resulttext == tr("Stop this recording"))
524  {
525  RemoteStopRecording(&recInfo);
526  }
527  else if (resulttext == tr("Modify recording options") ||
528  resulttext == tr("Add override rule"))
529  {
530  if (recInfo.GetRecordingRuleType() == kSingleRecord ||
531  recInfo.GetRecordingRuleType() == kOverrideRecord ||
532  recInfo.GetRecordingRuleType() == kOneRecord)
533  EditScheduled(&recInfo);
534  else
535  MakeOverride(&recInfo);
536  }
537  else if (resulttext == tr("Restart this recording"))
538  recInfo.ReactivateRecording();
539  else if (resulttext == tr("Forget previous recording"))
540  recInfo.ForgetHistory();
541  else if (resulttext == tr("Don't record this showing"))
542  recInfo.ApplyRecordStateChange(kDontRecord);
543  else if (resulttext == tr("Never record this episode"))
544  {
545  recInfo.ApplyNeverRecord();
546  }
547  else if (resulttext == tr("Edit recording rule") ||
548  resulttext == tr("Edit override rule"))
549  EditScheduled(&recInfo);
550  else if (resulttext == tr("Delete recording rule") ||
551  resulttext == tr("Delete override rule"))
552  recInfo.ApplyRecordStateChange(kNotRecording);
553  }
554  }
555 }
556 
562 {
563  return recInfo.GetRecordingRuleType() == kDailyRecord ||
564  recInfo.GetRecordingRuleType() == kWeeklyRecord;
565 }
566 
scheduleeditor.h
kDupCheckDesc
@ kDupCheckDesc
Definition: recordingtypes.h:67
MythMainWindow::GetMainStack
MythScreenStack * GetMainStack()
Definition: mythmainwindow.cpp:318
RecStatus::LaterShowing
@ LaterShowing
Definition: recordingstatus.h:39
GuideGrid::RunProgramGuide
static void RunProgramGuide(uint startChanId, const QString &startChanNum, const QDateTime &startTime, TV *player=nullptr, bool embedVideo=false, bool allowFinder=true, int changrpid=-1)
Definition: guidegrid.cpp:411
customedit.h
guidegrid.h
RecordingInfo::ApplyRecordStateChange
void ApplyRecordStateChange(RecordingType newstate, bool save=true)
Sets RecordingType of "record", creating "record" if it does not exist.
Definition: recordinginfo.cpp:573
RecStatus::NeverRecord
@ NeverRecord
Definition: recordingstatus.h:42
ScheduleCommon::customEvent
void customEvent(QEvent *event) override
Definition: schedulecommon.cpp:481
kDailyRecord
@ kDailyRecord
Definition: recordingtypes.h:24
kDupCheckSubThenDesc
@ kDupCheckSubThenDesc
Definition: recordingtypes.h:69
RecStatus::Tuning
@ Tuning
Definition: recordingstatus.h:21
RecordingInfo
Holds information on a TV Program one might wish to record.
Definition: recordinginfo.h:35
ScheduleCommon::ShowUpcomingScheduled
virtual void ShowUpcomingScheduled(void) const
Show the upcoming recordings for this recording rule.
Definition: schedulecommon.cpp:86
plChannel
@ plChannel
Definition: proglist.h:26
kDupCheckSub
@ kDupCheckSub
Definition: recordingtypes.h:66
ProgramInfo::GetChanNum
QString GetChanNum(void) const
This is the channel "number", in the form 1, 1_2, 1-2, 1#1, etc.
Definition: programinfo.h:376
ProgramInfo::kTitleSubtitle
@ kTitleSubtitle
Definition: programinfo.h:509
mythdialogbox.h
MythScreenStack
Definition: mythscreenstack.h:16
ProgLister
Definition: proglist.h:33
RecStatus::Unknown
@ Unknown
Definition: recordingstatus.h:31
RecordingRule
Internal representation of a recording rule, mirrors the record table.
Definition: recordingrule.h:28
RecordingDupMethodType
RecordingDupMethodType
Definition: recordingtypes.h:62
ScheduleCommon::ShowGuide
virtual void ShowGuide(void) const
Show the program guide.
Definition: schedulecommon.cpp:132
LOG
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
Definition: mythlogging.h:39
ProgramInfo::GetRecordingEndTime
QDateTime GetRecordingEndTime(void) const
Approximate time the recording should have ended, did end, or is intended to end.
Definition: programinfo.h:412
schedulecommon.h
progdetails.h
remoteutil.h
ScheduleCommon::ShowDetails
virtual void ShowDetails(void) const
Show the Program Details screen.
Definition: schedulecommon.cpp:27
MythDate::current
QDateTime current(bool stripped)
Returns current Date and Time in UTC.
Definition: mythdate.cpp:14
ProgramInfo::GetRecordingStartTime
QDateTime GetRecordingStartTime(void) const
Approximate time the recording started.
Definition: programinfo.h:404
ScheduleCommon::EditRecording
virtual void EditRecording(bool may_watch_now=false)
Creates a dialog for editing the recording status, blocking until user leaves dialog.
Definition: schedulecommon.cpp:274
ScheduleCommon::EditScheduled
virtual void EditScheduled(void)
Creates a dialog for editing the recording schedule.
Definition: schedulecommon.cpp:166
proglist.h
prevreclist.h
ProgramInfo::kCategoryMovie
@ kCategoryMovie
Definition: programinfo.h:76
ProgDetails
Definition: progdetails.h:15
RecStatus::WillRecord
@ WillRecord
Definition: recordingstatus.h:30
MythUIButtonListItem
Definition: mythuibuttonlist.h:41
ScheduleCommon::ShowPrevious
virtual void ShowPrevious(void) const
Show the previous recordings for this recording rule.
Definition: schedulecommon.cpp:248
RecStatus::TooManyRecordings
@ TooManyRecordings
Definition: recordingstatus.h:36
programinfo.h
ProgramInfo::GetScheduledStartTime
QDateTime GetScheduledStartTime(void) const
The scheduled start time of program.
Definition: programinfo.h:390
ScheduleCommon::EditCustom
virtual void EditCustom(void)
Creates a dialog for creating a custom recording rule.
Definition: schedulecommon.cpp:202
ProgramInfo::GetRecordingStatus
RecStatus::Type GetRecordingStatus(void) const
Definition: programinfo.h:447
RemoteStopRecording
bool RemoteStopRecording(uint inputid)
Definition: tvremoteutil.cpp:98
RecStatus::PreviousRecording
@ PreviousRecording
Definition: recordingstatus.h:33
ScheduleCommon::IsFindApplicable
static bool IsFindApplicable(const RecordingInfo &recInfo)
Returns true if a search should be employed to find a matching program.
Definition: schedulecommon.cpp:561
hardwareprofile.config.p
p
Definition: config.py:33
RecStatus::toDescription
static QString toDescription(Type recstatus, RecordingType rectype, const QDateTime &recstartts)
Converts "recstatus" into a long human readable description.
Definition: recordingstatus.cpp:188
MythDialogBox
Basic menu dialog, message and a list of options.
Definition: mythdialogbox.h:166
ProgramInfo::GetTitle
QString GetTitle(void) const
Definition: programinfo.h:361
ProgramInfo::GetDescription
QString GetDescription(void) const
Definition: programinfo.h:365
PrevRecordedList
Definition: prevreclist.h:31
ScheduleCommon::GetCurrentProgram
virtual ProgramInfo * GetCurrentProgram(void) const
Definition: schedulecommon.h:30
RecStatus::Failing
@ Failing
Definition: recordingstatus.h:17
RecordingInfo::QuickRecord
void QuickRecord(void)
Create a kSingleRecord if not already scheduled.
Definition: recordinginfo.cpp:916
RecStatus::Conflict
@ Conflict
Definition: recordingstatus.h:38
ProgramInfo::toString
QString toString(Verbosity v=kLongDescription, const QString &sep=":", const QString &grp="\"") const
Definition: programinfo.cpp:1934
plTitle
@ plTitle
Definition: proglist.h:17
ProgramInfo::GetFindID
uint GetFindID(void) const
Definition: programinfo.h:468
uint
unsigned int uint
Definition: compat.h:81
gCoreContext
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
Definition: mythcorecontext.cpp:55
ProgramInfo::GetSeriesID
QString GetSeriesID(void) const
Definition: programinfo.h:435
CustomEdit
A screen to create a fully custom recording.
Definition: customedit.h:17
RecStatus::Offline
@ Offline
Definition: recordingstatus.h:43
kOneRecord
@ kOneRecord
Definition: recordingtypes.h:28
channelutil.h
tvremoteutil.h
RecStatus::Pending
@ Pending
Definition: recordingstatus.h:16
ProgramInfo::GetDuplicateCheckMethod
RecordingDupMethodType GetDuplicateCheckMethod(void) const
What should be compared to determine if two programs are the same?
Definition: programinfo.h:459
kWeeklyRecord
@ kWeeklyRecord
Definition: recordingtypes.h:27
recordinginfo.h
ProgramInfo::GetChanID
uint GetChanID(void) const
This is the unique key used in the database to locate tuning information.
Definition: programinfo.h:372
ProgramInfo::GetRecordingRuleType
RecordingType GetRecordingRuleType(void) const
Definition: programinfo.h:451
ProgramInfo
Holds information on recordings and videos.
Definition: programinfo.h:67
RecStatus::Recording
@ Recording
Definition: recordingstatus.h:29
RecStatus::DontRecord
@ DontRecord
Definition: recordingstatus.h:32
RecStatus::Inactive
@ Inactive
Definition: recordingstatus.h:41
mythcorecontext.h
kOverrideRecord
@ kOverrideRecord
Definition: recordingtypes.h:29
kNotRecording
@ kNotRecording
Definition: recordingtypes.h:22
RecStatus::EarlierShowing
@ EarlierShowing
Definition: recordingstatus.h:35
kDupCheckNone
@ kDupCheckNone
Definition: recordingtypes.h:65
ChannelUtil::GetSourceIDForChannel
static uint GetSourceIDForChannel(uint chanid)
Definition: channelutil.cpp:807
RecStatus::CurrentRecording
@ CurrentRecording
Definition: recordingstatus.h:34
DialogCompletionEvent
Event dispatched from MythUI modal dialogs to a listening class containing a result of some form.
Definition: mythdialogbox.h:41
kSingleRecord
@ kSingleRecord
Definition: recordingtypes.h:23
RecStatus::NotListed
@ NotListed
Definition: recordingstatus.h:37
ScheduleCommon::ShowUpcoming
virtual void ShowUpcoming(void) const
Show the upcoming recordings for this title.
Definition: schedulecommon.cpp:67
DialogCompletionEvent::kEventType
static const Type kEventType
Definition: mythdialogbox.h:57
ScheduleCommon::QuickRecord
virtual void QuickRecord(void)
Create a kSingleRecord or bring up recording dialog.
Definition: schedulecommon.cpp:147
GetMythMainWindow
MythMainWindow * GetMythMainWindow(void)
Definition: mythmainwindow.cpp:104
RecStatus::Repeat
@ Repeat
Definition: recordingstatus.h:40
ScheduleCommon::MakeOverride
static void MakeOverride(RecordingInfo *recinfo)
Creates a dialog for editing an override recording schedule.
Definition: schedulecommon.cpp:219
RemoteGetConflictList
std::vector< ProgramInfo * > * RemoteGetConflictList(const ProgramInfo *pginfo)
Definition: remoteutil.cpp:205
plRecordid
@ plRecordid
Definition: proglist.h:28
MythMainWindow::GetStack
MythScreenStack * GetStack(const QString &Stackname)
Definition: mythmainwindow.cpp:323
kAllRecord
@ kAllRecord
Definition: recordingtypes.h:26
ScheduleCommon::ShowChannelSearch
virtual void ShowChannelSearch(void) const
Show the channel search.
Definition: schedulecommon.cpp:113
ProgramInfo::GetProgramID
QString GetProgramID(void) const
Definition: programinfo.h:436
ProgramInfo::kCategorySeries
@ kCategorySeries
Definition: programinfo.h:76
ProgramInfo::GetRecordingRuleID
uint GetRecordingRuleID(void) const
Definition: programinfo.h:449
mythmainwindow.h
ProgramInfo::GetCategoryType
CategoryType GetCategoryType(void) const
Definition: programinfo.h:438
MythScreenStack::AddScreen
virtual void AddScreen(MythScreenType *screen, bool allowFade=true)
Definition: mythscreenstack.cpp:52
ProgramInfo::IsGeneric
bool IsGeneric(void) const
Definition: programinfo.cpp:1925
ShowOkPopup
MythConfirmationDialog * ShowOkPopup(const QString &message, bool showCancel)
Non-blocking version of MythPopupBox::showOkPopup()
Definition: mythdialogbox.cpp:562
ScheduleEditor
Construct a recording schedule.
Definition: scheduleeditor.h:143
kDontRecord
@ kDontRecord
Definition: recordingtypes.h:30
mythscreentype.h
MythCoreContext::GetSetting
QString GetSetting(const QString &key, const QString &defaultval="")
Definition: mythcorecontext.cpp:898
ProgramInfo::GetSubtitle
QString GetSubtitle(void) const
Definition: programinfo.h:363