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