MythTV  master
schedulecommon.cpp
Go to the documentation of this file.
1 // Qt
2 #include <QCoreApplication>
3 
4 // MythTV
11 #include "libmythtv/tvremoteutil.h"
15 
16 // MythFrontend
17 #include "customedit.h"
18 #include "guidegrid.h"
19 #include "prevreclist.h"
20 #include "progdetails.h"
21 #include "proglist.h"
22 #include "schedulecommon.h"
23 #include "scheduleeditor.h"
24 
29 {
30  ProgramInfo *pginfo = GetCurrentProgram();
31  if (!pginfo)
32  return;
33 
35  auto *details_dialog = new ProgDetails(mainStack, pginfo);
36 
37  if (!details_dialog->Create())
38  {
39  delete details_dialog;
40  return;
41  }
42 
43  mainStack->AddScreen(details_dialog);
44 }
45 
49 void ScheduleCommon::ShowUpcoming(const QString &title,
50  const QString &seriesid)
51 {
52  if (title.isEmpty())
53  return;
54 
56  auto *pl = new ProgLister(mainStack, plTitle, title, seriesid);
57  if (pl->Create())
58  {
59  mainStack->AddScreen(pl);
60  }
61  else
62  {
63  delete pl;
64  }
65 }
66 
71 {
72  ProgramInfo *pginfo = GetCurrentProgram();
73  if (!pginfo)
74  return;
75 
76  if (pginfo->GetChanID() == 0 &&
77  pginfo->GetRecordingRuleID() > 0)
78  {
80  return;
81  }
82 
83  ShowUpcoming(pginfo->GetTitle(), pginfo->GetSeriesID());
84 }
85 
90 {
91  ProgramInfo *pginfo = GetCurrentProgram();
92  if (!pginfo)
93  return;
94 
95  RecordingInfo ri(*pginfo);
96 
97  uint id = ri.GetRecordingRuleID();
98  if (id == 0)
99  {
100  ShowUpcoming(pginfo->GetTitle(), pginfo->GetSeriesID());
101  return;
102  }
103 
105  auto *pl = new ProgLister(mainStack, plRecordid, QString::number(id), "");
106 
107  if (pl->Create())
108  mainStack->AddScreen(pl);
109  else
110  delete pl;
111 }
112 
117 {
118  ProgramInfo *pginfo = GetCurrentProgram();
119  if (!pginfo)
120  return;
121 
123  auto *pl = new ProgLister(mainStack, plChannel,
124  QString::number(pginfo->GetChanID()), "",
125  pginfo->GetScheduledStartTime());
126  if (pl->Create())
127  mainStack->AddScreen(pl);
128  else
129  delete pl;
130 }
131 
136 {
137  ProgramInfo *pginfo = GetCurrentProgram();
138  if (!pginfo)
139  return;
140 
141  QString startchannel = pginfo->GetChanNum();
142  uint startchanid = pginfo->GetChanID();
143  QDateTime starttime = pginfo->GetScheduledStartTime();
144  GuideGrid::RunProgramGuide(startchanid, startchannel, starttime);
145 }
146 
151 {
152  ProgramInfo *pginfo = GetCurrentProgram();
153  if (!pginfo)
154  return;
155 
156  if (pginfo->GetRecordingRuleID())
157  EditRecording();
158  else
159  {
160  RecordingInfo ri(*pginfo);
161  ri.QuickRecord();
162  *pginfo = ri;
163  }
164 }
165 
170 {
172 }
173 
178 {
179  if (!pginfo)
180  return;
181 
182  RecordingInfo ri(*pginfo);
183  EditScheduled(&ri);
184 }
185 
190 {
192  auto *schededit = new ScheduleEditor(mainStack, recinfo);
193  if (schededit->Create())
194  mainStack->AddScreen(schededit);
195  else
196  {
197  delete schededit;
198  ShowOkPopup(tr("Recording rule does not exist."));
199  }
200 }
201 
206 {
207  ProgramInfo *pginfo = GetCurrentProgram();
208  if (!pginfo)
209  return;
210 
212  auto *ce = new CustomEdit(mainStack, pginfo);
213  if (ce->Create())
214  mainStack->AddScreen(ce);
215  else
216  delete ce;
217 }
218 
223 {
224  if (!recinfo || !recinfo->GetRecordingRuleID())
225  return;
226 
227  auto *recrule = new RecordingRule();
228 
229  if (!recrule->LoadByProgram(recinfo))
230  LOG(VB_GENERAL, LOG_ERR, "Failed to load by program info");
231 
232  if (!recrule->MakeOverride())
233  {
234  LOG(VB_GENERAL, LOG_ERR, "Failed to make Override");
235  delete recrule;
236  return;
237  }
238  recrule->m_type = kOverrideRecord;
239 
241  auto *schededit = new ScheduleEditor(mainStack, recrule);
242  if (schededit->Create())
243  mainStack->AddScreen(schededit);
244  else
245  delete schededit;
246 }
247 
252 {
253  ProgramInfo *pginfo = GetCurrentProgram();
254  if (!pginfo)
255  return;
256 
257  ShowPrevious(pginfo->GetRecordingRuleID(), pginfo->GetTitle());
258 }
259 
263 void ScheduleCommon::ShowPrevious(uint ruleid, const QString &title) const
264 {
266  auto *pl = new PrevRecordedList(mainStack, ruleid, title);
267  if (pl->Create())
268  mainStack->AddScreen(pl);
269  else
270  delete pl;
271 }
272 
277 void ScheduleCommon::EditRecording(bool may_watch_now)
278 {
279  ProgramInfo *pginfo = GetCurrentProgram();
280  if (!pginfo)
281  return;
282 
283  RecordingInfo recinfo(*pginfo);
284 
285  QString timeFormat = gCoreContext->GetSetting("TimeFormat", "h:mm AP");
286 
287  QString message = QString("%1 - %2 %3\n")
288  .arg(recinfo.GetRecordingStartTime().toLocalTime().toString(timeFormat),
289  recinfo.GetRecordingEndTime().toLocalTime().toString(timeFormat),
290  recinfo.toString(ProgramInfo::kTitleSubtitle, " - "));
291 
292  message += "\n";
293  message += RecStatus::toDescription(recinfo.GetRecordingStatus(),
294  recinfo.GetRecordingRuleType(),
295  recinfo.GetRecordingStartTime());
296 
297  QString messageConflict;
298  if (recinfo.GetRecordingStatus() == RecStatus::Conflict ||
300  {
301  std::vector<ProgramInfo *> *confList = RemoteGetConflictList(&recinfo);
302  uint chanid = recinfo.GetChanID();
303  uint sourceid = ChannelUtil::GetSourceIDForChannel(chanid);
304 
305  for (auto *p : *confList)
306  {
307  if (sourceid == p->GetSourceID())
308  {
309  messageConflict += QString("%1 - %2 %3\n")
310  .arg(p->GetRecordingStartTime().toLocalTime().toString(timeFormat),
311  p->GetRecordingEndTime().toLocalTime().toString(timeFormat),
312  p->toString(ProgramInfo::kTitleSubtitle, " - "));
313  }
314  delete p;
315  }
316  delete confList;
317  }
318 
319  if (!messageConflict.isEmpty())
320  {
321  message += " ";
322  message += tr("The following programs will be recorded instead:");
323  message += "\n";
324  message += messageConflict;
325  message += "\n";
326  }
327 
328  MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
329  auto *menuPopup = new MythDialogBox(message, popupStack, "recOptionPopup", true);
330 
331  if (!menuPopup->Create())
332  {
333  delete menuPopup;
334  return;
335  }
336  menuPopup->SetReturnEvent(this, "editrecording");
337 
338  QDateTime now = MythDate::current();
339 
340  if(may_watch_now)
341  menuPopup->AddButton(tr("Watch This Channel"));
342 
343  if (recinfo.GetRecordingStatus() == RecStatus::Unknown)
344  {
345  if (recinfo.GetRecordingEndTime() > now)
346  menuPopup->AddButtonV(tr("Record this showing"),
347  QVariant::fromValue(recinfo));
348  menuPopup->AddButtonV(tr("Record all showings"),
349  QVariant::fromValue(recinfo));
350  if (!recinfo.IsGeneric())
351  {
353  {
354  menuPopup->AddButtonV(tr("Record one showing"),
355  QVariant::fromValue(recinfo));
356  }
357  else
358  {
359  menuPopup->AddButtonV(tr("Record one showing (this episode)"),
360  QVariant::fromValue(recinfo));
361  }
362 
363  }
364  menuPopup->AddButtonV(tr("Record all showings (this channel)"),
365  QVariant::fromValue(recinfo));
366  menuPopup->AddButtonV(tr("Edit recording rule"),
367  QVariant::fromValue(recinfo));
368  }
369  else if (recinfo.GetRecordingStatus() == RecStatus::Recording ||
370  recinfo.GetRecordingStatus() == RecStatus::Tuning ||
371  recinfo.GetRecordingStatus() == RecStatus::Failing ||
373  {
374  if (recinfo.GetRecordingStatus() != RecStatus::Pending)
375  menuPopup->AddButtonV(tr("Stop this recording"),
376  QVariant::fromValue(recinfo));
377  menuPopup->AddButtonV(tr("Modify recording options"),
378  QVariant::fromValue(recinfo));
379  }
380  else
381  {
382  if (recinfo.GetRecordingStartTime() < now &&
383  recinfo.GetRecordingEndTime() > now &&
386  {
387  menuPopup->AddButtonV(tr("Restart this recording"),
388  QVariant::fromValue(recinfo));
389  }
390 
391  if (recinfo.GetRecordingEndTime() > now &&
392  recinfo.GetRecordingRuleType() != kSingleRecord &&
393  recinfo.GetRecordingRuleType() != kOverrideRecord &&
400  recinfo.GetRecordingStatus() == RecStatus::Repeat ||
403  {
404  menuPopup->AddButtonV(tr("Record this showing"),
405  QVariant::fromValue(recinfo));
406  if (recinfo.GetRecordingStartTime() > now &&
409  {
410  menuPopup->AddButtonV(tr("Forget previous recording"),
411  QVariant::fromValue(recinfo));
412  }
413  }
414 
415  if (recinfo.GetRecordingRuleType() != kSingleRecord &&
416  recinfo.GetRecordingRuleType() != kDontRecord &&
424  {
425  if (recinfo.GetRecordingStatus() == RecStatus::WillRecord ||
427  menuPopup->AddButtonV(tr("Don't record this showing"),
428  QVariant::fromValue(recinfo));
429 
430  const RecordingDupMethodType dupmethod =
431  recinfo.GetDuplicateCheckMethod();
432  static const QRegularExpression kGenericEpisodeRE { "0000$" };
433  if (recinfo.GetRecordingRuleType() != kOverrideRecord &&
434  ((recinfo.GetFindID() != 0 &&
435  IsFindApplicable(recinfo)) ||
437  !recinfo.GetProgramID().contains(kGenericEpisodeRE)) &&
438  ((((dupmethod & kDupCheckNone) == 0) &&
439  !recinfo.GetProgramID().isEmpty() &&
440  (recinfo.GetFindID() != 0 ||
441  !IsFindApplicable(recinfo))) ||
442  (((dupmethod & kDupCheckSub) != 0) &&
443  !recinfo.GetSubtitle().isEmpty()) ||
444  (((dupmethod & kDupCheckDesc) != 0) &&
445  !recinfo.GetDescription().isEmpty()) ||
446  (((dupmethod & kDupCheckSubThenDesc) != 0) &&
447  (!recinfo.GetSubtitle().isEmpty() ||
448  !recinfo.GetDescription().isEmpty())) ))
449  {
450  menuPopup->AddButtonV(tr("Never record this episode"),
451  QVariant::fromValue(recinfo));
452  }
453  }
454 
455  if (recinfo.GetRecordingRuleType() == kOverrideRecord ||
456  recinfo.GetRecordingRuleType() == kDontRecord)
457  {
458  menuPopup->AddButtonV(tr("Edit override rule"),
459  QVariant::fromValue(recinfo));
460  menuPopup->AddButtonV(tr("Delete override rule"),
461  QVariant::fromValue(recinfo));
462  }
463  else
464  {
465  if (recinfo.GetRecordingRuleType() != kSingleRecord &&
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));
473  }
474  }
475 
476  popupStack->AddScreen(menuPopup);
477 }
478 
480 {
481  EditRecording();
482 }
483 
484 void ScheduleCommon::customEvent(QEvent *event)
485 {
486  if (event->type() == DialogCompletionEvent::kEventType)
487  {
488  auto *dce = (DialogCompletionEvent*)(event);
489 
490  QString resultid = dce->GetId();
491  QString resulttext = dce->GetResultText();
492 
493  if (resultid == "editrecording")
494  {
495  if (!dce->GetData().canConvert<RecordingInfo>())
496  return;
497 
498  auto recInfo = dce->GetData().value<RecordingInfo>();
499 
500  if (resulttext == tr("Record this showing"))
501  {
502  if (recInfo.GetRecordingRuleType() == kNotRecording)
504  else
505  {
506  recInfo.ApplyRecordStateChange(kOverrideRecord);
507  if (recInfo.GetRecordingStartTime() < MythDate::current())
508  recInfo.ReactivateRecording();
509  }
510  }
511  else if (resulttext == tr("Record all showings"))
512  {
513  recInfo.ApplyRecordStateChange(kAllRecord);
514  }
515  else if (resulttext == tr("Record one showing (this episode)") ||
516  resulttext == tr("Record one showing"))
517  {
518  recInfo.ApplyRecordStateChange(kOneRecord, false);
519  recInfo.GetRecordingRule()->m_filter |= 64; // This episode
520  recInfo.GetRecordingRule()->Save();
521  }
522  else if (resulttext == tr("Record all showings (this channel)"))
523  {
524  recInfo.ApplyRecordStateChange(kAllRecord, false);
525  recInfo.GetRecordingRule()->m_filter |= 1024; // This channel
526  recInfo.GetRecordingRule()->Save();
527  }
528  else if (resulttext == tr("Stop this recording"))
529  {
530  RemoteStopRecording(&recInfo);
531  }
532  else if (resulttext == tr("Modify recording options") ||
533  resulttext == tr("Add override rule"))
534  {
535  if (recInfo.GetRecordingRuleType() == kSingleRecord ||
536  recInfo.GetRecordingRuleType() == kOverrideRecord ||
537  recInfo.GetRecordingRuleType() == kOneRecord)
538  EditScheduled(&recInfo);
539  else
540  MakeOverride(&recInfo);
541  }
542  else if (resulttext == tr("Restart this recording"))
543  {
544  recInfo.ReactivateRecording();
545  }
546  else if (resulttext == tr("Forget previous recording"))
547  {
548  recInfo.ForgetHistory();
549  }
550  else if (resulttext == tr("Don't record this showing"))
551  {
552  recInfo.ApplyRecordStateChange(kDontRecord);
553  }
554  else if (resulttext == tr("Never record this episode"))
555  {
556  recInfo.ApplyNeverRecord();
557  }
558  else if (resulttext == tr("Edit recording rule") ||
559  resulttext == tr("Edit override rule"))
560  {
561  EditScheduled(&recInfo);
562  }
563  else if (resulttext == tr("Delete recording rule") ||
564  resulttext == tr("Delete override rule"))
565  {
566  recInfo.ApplyRecordStateChange(kNotRecording);
567  }
568  }
569  else if (resultid == "sortgroupmenu")
570  {
572  if (resulttext == tr("Group By Channel Number"))
573  groupBy = ProgGroupBy::ChanNum;
574  else if (resulttext == tr("Group By Call Sign"))
575  groupBy = ProgGroupBy::CallSign;
576  else if (resulttext == tr("Group By Program ID"))
577  groupBy = ProgGroupBy::ProgramId;
578  else if (resulttext == tr("Group By None"))
579  groupBy = ProgGroupBy::None;
580  gCoreContext->SaveSetting("ProgramListGroupBy", (int)groupBy);
581  MythEvent me("GROUPBY_CHANGE");
582  gCoreContext->dispatch(me);
583  }
584  }
585 }
586 
592 {
593  return recInfo.GetRecordingRuleType() == kDailyRecord ||
594  recInfo.GetRecordingRuleType() == kWeeklyRecord;
595 }
596 
598 {
600  "ProgramListGroupBy", (int)ProgGroupBy::ChanNum);
601 }
602 
604 {
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"));
609 }
ProgGroupBy::ChanNum
@ ChanNum
Definition: programinfo.h:876
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:484
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:89
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
MythEvent
This class is used as a container for messages.
Definition: mythevent.h:16
MythMenu::AddItem
void AddItem(const QString &title)
Definition: mythdialogbox.h:109
mythdialogbox.h
MythScreenStack
Definition: mythscreenstack.h:16
kNotRecording
@ kNotRecording
Definition: recordingtypes.h:21
ScheduleCommon::GetProgramListGroupBy
static ProgGroupBy::Type GetProgramListGroupBy(void)
Definition: schedulecommon.cpp:597
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:135
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:28
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:277
ScheduleCommon::EditScheduled
virtual void EditScheduled(void)
Creates a dialog for editing the recording schedule.
Definition: schedulecommon.cpp:169
proglist.h
kDupCheckDesc
@ kDupCheckDesc
Definition: recordingtypes.h:66
prevreclist.h
kDontRecord
@ kDontRecord
Definition: recordingtypes.h:29
ProgGroupBy::ProgramId
@ ProgramId
Definition: programinfo.h:878
ProgDetails
Definition: progdetails.h:15
ProgGroupBy::None
@ None
Definition: programinfo.h:875
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:251
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:205
kOneRecord
@ kOneRecord
Definition: recordingtypes.h:27
mythlogging.h
ProgramInfo::GetRecordingStatus
RecStatus::Type GetRecordingStatus(void) const
Definition: programinfo.h:451
RemoteStopRecording
bool RemoteStopRecording(uint inputid)
Definition: tvremoteutil.cpp:99
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:591
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:165
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:34
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:1955
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:57
ProgGroupBy::Type
Type
Definition: programinfo.h:874
ProgramInfo::GetSeriesID
QString GetSeriesID(void) const
Definition: programinfo.h:439
CustomEdit
A screen to create a fully custom recording.
Definition: customedit.h:17
MythCoreContext::GetNumSetting
int GetNumSetting(const QString &key, int defaultval=0)
Definition: mythcorecontext.cpp:918
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
MythMenu
Definition: mythdialogbox.h:98
ProgramInfo::kTitleSubtitle
@ kTitleSubtitle
Definition: programinfo.h:514
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
ProgGroupBy::CallSign
@ CallSign
Definition: programinfo.h:877
ChannelUtil::GetSourceIDForChannel
static uint GetSourceIDForChannel(uint chanid)
Definition: channelutil.cpp:808
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:40
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:70
DialogCompletionEvent::kEventType
static const Type kEventType
Definition: mythdialogbox.h:56
ScheduleCommon::QuickRecord
virtual void QuickRecord(void)
Create a kSingleRecord or bring up recording dialog.
Definition: schedulecommon.cpp:150
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:222
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:116
ProgramInfo::GetProgramID
QString GetProgramID(void) const
Definition: programinfo.h:440
ScheduleCommon::AddGroupMenuItems
virtual void AddGroupMenuItems(MythMenu *sortGroupMenu)
Definition: schedulecommon.cpp:603
plRecordid
@ plRecordid
Definition: proglist.h:30
MythCoreContext::SaveSetting
void SaveSetting(const QString &key, int newValue)
Definition: mythcorecontext.cpp:887
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:1946
MythCoreContext::dispatch
void dispatch(const MythEvent &event)
Definition: mythcorecontext.cpp:1729
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:142
mythscreentype.h
uint
unsigned int uint
Definition: freesurround.h:24
MythCoreContext::GetSetting
QString GetSetting(const QString &key, const QString &defaultval="")
Definition: mythcorecontext.cpp:904
ProgramInfo::GetSubtitle
QString GetSubtitle(void) const
Definition: programinfo.h:364