MythTV  master
schedulecommon.cpp
Go to the documentation of this file.
1 
2 #include "schedulecommon.h"
3 
4 // QT
5 #include <QCoreApplication>
6 
7 // libmyth
8 #include "mythcorecontext.h"
9 #include "programinfo.h"
10 #include "remoteutil.h"
11 
12 // libmythtv
13 #include "recordinginfo.h"
14 #include "tvremoteutil.h"
15 
16 // libmythui
17 #include "mythscreentype.h"
18 #include "mythdialogbox.h"
19 #include "mythmainwindow.h"
20 
21 // mythfrontend
22 #include "scheduleeditor.h"
23 
24 #include "proglist.h"
25 #include "prevreclist.h"
26 #include "customedit.h"
27 #include "guidegrid.h"
28 #include "progdetails.h"
29 
34 {
35  ProgramInfo *pginfo = GetCurrentProgram();
36  if (!pginfo)
37  return;
38 
40  auto *details_dialog = new ProgDetails(mainStack, pginfo);
41 
42  if (!details_dialog->Create())
43  {
44  delete details_dialog;
45  return;
46  }
47 
48  mainStack->AddScreen(details_dialog);
49 }
50 
54 void ScheduleCommon::ShowUpcoming(const QString &title,
55  const QString &seriesid)
56 {
57  if (title.isEmpty())
58  return;
59 
61  auto *pl = new ProgLister(mainStack, plTitle, title, seriesid);
62  if (pl->Create())
63  {
64  mainStack->AddScreen(pl);
65  }
66  else
67  delete pl;
68 }
69 
74 {
75  ProgramInfo *pginfo = GetCurrentProgram();
76  if (!pginfo)
77  return;
78 
79  if (pginfo->GetChanID() == 0 &&
80  pginfo->GetRecordingRuleID() > 0)
81  {
83  return;
84  }
85 
86  ShowUpcoming(pginfo->GetTitle(), pginfo->GetSeriesID());
87 }
88 
93 {
94  ProgramInfo *pginfo = GetCurrentProgram();
95  if (!pginfo)
96  return;
97 
98  RecordingInfo ri(*pginfo);
99 
100  uint id = ri.GetRecordingRuleID();
101  if (id == 0)
102  {
103  ShowUpcoming(pginfo->GetTitle(), pginfo->GetSeriesID());
104  return;
105  }
106 
108  auto *pl = new ProgLister(mainStack, plRecordid, QString::number(id), "");
109 
110  if (pl->Create())
111  mainStack->AddScreen(pl);
112  else
113  delete pl;
114 }
115 
120 {
121  ProgramInfo *pginfo = GetCurrentProgram();
122  if (!pginfo)
123  return;
124 
126  auto *pl = new ProgLister(mainStack, plChannel,
127  QString::number(pginfo->GetChanID()), "",
128  pginfo->GetScheduledStartTime());
129  if (pl->Create())
130  mainStack->AddScreen(pl);
131  else
132  delete pl;
133 }
134 
139 {
140  ProgramInfo *pginfo = GetCurrentProgram();
141  if (!pginfo)
142  return;
143 
144  QString startchannel = pginfo->GetChanNum();
145  uint startchanid = pginfo->GetChanID();
146  QDateTime starttime = pginfo->GetScheduledStartTime();
147  GuideGrid::RunProgramGuide(startchanid, startchannel, starttime);
148 }
149 
154 {
155  ProgramInfo *pginfo = GetCurrentProgram();
156  if (!pginfo)
157  return;
158 
159  if (pginfo->GetRecordingRuleID())
160  EditRecording();
161  else
162  {
163  RecordingInfo ri(*pginfo);
164  ri.QuickRecord();
165  *pginfo = ri;
166  }
167 }
168 
173 {
175 }
176 
181 {
182  if (!pginfo)
183  return;
184 
185  RecordingInfo ri(*pginfo);
186  EditScheduled(&ri);
187 }
188 
193 {
195  auto *schededit = new ScheduleEditor(mainStack, recinfo);
196  if (schededit->Create())
197  mainStack->AddScreen(schededit);
198  else
199  {
200  delete schededit;
201  ShowOkPopup(tr("Recording rule does not exist."));
202  }
203 }
204 
209 {
210  ProgramInfo *pginfo = GetCurrentProgram();
211  if (!pginfo)
212  return;
213 
215  auto *ce = new CustomEdit(mainStack, pginfo);
216  if (ce->Create())
217  mainStack->AddScreen(ce);
218  else
219  delete ce;
220 }
221 
226 {
227  if (!recinfo || !recinfo->GetRecordingRuleID())
228  return;
229 
230  auto *recrule = new RecordingRule();
231 
232  if (!recrule->LoadByProgram(recinfo))
233  LOG(VB_GENERAL, LOG_ERR, "Failed to load by program info");
234 
235  if (!recrule->MakeOverride())
236  {
237  LOG(VB_GENERAL, LOG_ERR, "Failed to make Override");
238  delete recrule;
239  return;
240  }
241  recrule->m_type = kOverrideRecord;
242 
244  auto *schededit = new ScheduleEditor(mainStack, recrule);
245  if (schededit->Create())
246  mainStack->AddScreen(schededit);
247  else
248  delete schededit;
249 }
250 
255 {
256  ProgramInfo *pginfo = GetCurrentProgram();
257  if (!pginfo)
258  return;
259 
260  ShowPrevious(pginfo->GetRecordingRuleID(), pginfo->GetTitle());
261 }
262 
266 void ScheduleCommon::ShowPrevious(uint ruleid, const QString &title) const
267 {
269  auto *pl = new PrevRecordedList(mainStack, ruleid, title);
270  if (pl->Create())
271  mainStack->AddScreen(pl);
272  else
273  delete pl;
274 }
275 
280 void ScheduleCommon::EditRecording(bool may_watch_now)
281 {
282  ProgramInfo *pginfo = GetCurrentProgram();
283  if (!pginfo)
284  return;
285 
286  RecordingInfo recinfo(*pginfo);
287 
288  QString timeFormat = gCoreContext->GetSetting("TimeFormat", "h:mm AP");
289 
290  QString message = recinfo.toString(ProgramInfo::kTitleSubtitle, " - ");
291 
292  message += "\n\n";
293  message += RecStatus::toDescription(recinfo.GetRecordingStatus(),
294  recinfo.GetRecordingRuleType(),
295  recinfo.GetRecordingStartTime());
296 
297  if (recinfo.GetRecordingStatus() == RecStatus::Conflict ||
299  {
300  vector<ProgramInfo *> *confList = RemoteGetConflictList(&recinfo);
301 
302  if (!confList->empty())
303  {
304  message += " ";
305  message += tr("The following programs will be recorded instead:");
306  message += "\n";
307  }
308 
309  uint maxi = 0;
310  for (; confList->begin() != confList->end() && maxi < 4; maxi++)
311  {
312  ProgramInfo *p = *confList->begin();
313  message += QString("%1 - %2 %3\n")
314  .arg(p->GetRecordingStartTime()
315  .toLocalTime().toString(timeFormat),
316  p->GetRecordingEndTime()
317  .toLocalTime().toString(timeFormat),
318  p->toString(ProgramInfo::kTitleSubtitle, " - "));
319  delete p;
320  confList->erase(confList->begin());
321  }
322  message += "\n";
323  while (!confList->empty())
324  {
325  delete confList->back();
326  confList->pop_back();
327  }
328  delete confList;
329  }
330 
331  MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
332  auto *menuPopup = new MythDialogBox(message, popupStack,
333  "recOptionPopup", true);
334  if (!menuPopup->Create())
335  {
336  delete menuPopup;
337  return;
338  }
339  menuPopup->SetReturnEvent(this, "editrecording");
340 
341  QDateTime now = MythDate::current();
342 
343  if(may_watch_now)
344  menuPopup->AddButton(tr("Watch This Channel"));
345 
346  if (recinfo.GetRecordingStatus() == RecStatus::Unknown)
347  {
348  if (recinfo.GetRecordingEndTime() > now)
349  menuPopup->AddButtonV(tr("Record this showing"),
350  QVariant::fromValue(recinfo));
351  menuPopup->AddButtonV(tr("Record all showings"),
352  QVariant::fromValue(recinfo));
353  if (!recinfo.IsGeneric())
354  {
356  {
357  menuPopup->AddButtonV(tr("Record one showing"),
358  QVariant::fromValue(recinfo));
359  }
360  else
361  {
362  menuPopup->AddButtonV(tr("Record one showing (this episode)"),
363  QVariant::fromValue(recinfo));
364  }
365 
366  }
367  menuPopup->AddButtonV(tr("Record all showings (this channel)"),
368  QVariant::fromValue(recinfo));
369  menuPopup->AddButtonV(tr("Edit recording rule"),
370  QVariant::fromValue(recinfo));
371  }
372  else if (recinfo.GetRecordingStatus() == RecStatus::Recording ||
373  recinfo.GetRecordingStatus() == RecStatus::Tuning ||
374  recinfo.GetRecordingStatus() == RecStatus::Failing ||
376  {
377  if (recinfo.GetRecordingStatus() != RecStatus::Pending)
378  menuPopup->AddButtonV(tr("Stop this recording"),
379  QVariant::fromValue(recinfo));
380  menuPopup->AddButtonV(tr("Modify recording options"),
381  QVariant::fromValue(recinfo));
382  }
383  else
384  {
385  if (recinfo.GetRecordingStartTime() < now &&
386  recinfo.GetRecordingEndTime() > now &&
389  {
390  menuPopup->AddButtonV(tr("Restart this recording"),
391  QVariant::fromValue(recinfo));
392  }
393 
394  if (recinfo.GetRecordingEndTime() > now &&
395  recinfo.GetRecordingRuleType() != kSingleRecord &&
396  recinfo.GetRecordingRuleType() != kOverrideRecord &&
403  recinfo.GetRecordingStatus() == RecStatus::Repeat ||
406  {
407  menuPopup->AddButtonV(tr("Record this showing"),
408  QVariant::fromValue(recinfo));
409  if (recinfo.GetRecordingStartTime() > now &&
412  {
413  menuPopup->AddButtonV(tr("Forget previous recording"),
414  QVariant::fromValue(recinfo));
415  }
416  }
417 
418  if (recinfo.GetRecordingRuleType() != kSingleRecord &&
419  recinfo.GetRecordingRuleType() != kDontRecord &&
427  {
428  if (recinfo.GetRecordingStatus() == RecStatus::WillRecord ||
430  menuPopup->AddButtonV(tr("Don't record this showing"),
431  QVariant::fromValue(recinfo));
432 
433  const RecordingDupMethodType dupmethod =
434  recinfo.GetDuplicateCheckMethod();
435  if (recinfo.GetRecordingRuleType() != kOverrideRecord &&
436  !((recinfo.GetFindID() == 0 ||
437  !IsFindApplicable(recinfo)) &&
439  recinfo.GetProgramID().contains(QRegularExpression("0000$"))) &&
440  ((((dupmethod & kDupCheckNone) == 0) &&
441  !recinfo.GetProgramID().isEmpty() &&
442  (recinfo.GetFindID() != 0 ||
443  !IsFindApplicable(recinfo))) ||
444  (((dupmethod & kDupCheckSub) != 0) &&
445  !recinfo.GetSubtitle().isEmpty()) ||
446  (((dupmethod & kDupCheckDesc) != 0) &&
447  !recinfo.GetDescription().isEmpty()) ||
448  (((dupmethod & kDupCheckSubThenDesc) != 0) &&
449  (!recinfo.GetSubtitle().isEmpty() ||
450  !recinfo.GetDescription().isEmpty())) ))
451  {
452  menuPopup->AddButtonV(tr("Never record this episode"),
453  QVariant::fromValue(recinfo));
454  }
455  }
456 
457  if (recinfo.GetRecordingRuleType() == kOverrideRecord ||
458  recinfo.GetRecordingRuleType() == kDontRecord)
459  {
460  menuPopup->AddButtonV(tr("Edit override rule"),
461  QVariant::fromValue(recinfo));
462  menuPopup->AddButtonV(tr("Delete override rule"),
463  QVariant::fromValue(recinfo));
464  }
465  else
466  {
467  if (recinfo.GetRecordingRuleType() != kSingleRecord &&
469  menuPopup->AddButtonV(tr("Add override rule"),
470  QVariant::fromValue(recinfo));
471  menuPopup->AddButtonV(tr("Edit recording rule"),
472  QVariant::fromValue(recinfo));
473  menuPopup->AddButtonV(tr("Delete recording rule"),
474  QVariant::fromValue(recinfo));
475  }
476  }
477 
478  popupStack->AddScreen(menuPopup);
479 }
480 
482 {
483  EditRecording();
484 }
485 
486 void ScheduleCommon::customEvent(QEvent *event)
487 {
488  if (event->type() == DialogCompletionEvent::kEventType)
489  {
490  auto *dce = (DialogCompletionEvent*)(event);
491 
492  QString resultid = dce->GetId();
493  QString resulttext = dce->GetResultText();
494 
495  if (resultid == "editrecording")
496  {
497  if (!dce->GetData().canConvert<RecordingInfo>())
498  return;
499 
500  auto recInfo = dce->GetData().value<RecordingInfo>();
501 
502  if (resulttext == tr("Record this showing"))
503  {
504  if (recInfo.GetRecordingRuleType() == kNotRecording)
506  else
507  {
508  recInfo.ApplyRecordStateChange(kOverrideRecord);
509  if (recInfo.GetRecordingStartTime() < MythDate::current())
510  recInfo.ReactivateRecording();
511  }
512  }
513  else if (resulttext == tr("Record all showings"))
514  recInfo.ApplyRecordStateChange(kAllRecord);
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  recInfo.ReactivateRecording();
544  else if (resulttext == tr("Forget previous recording"))
545  recInfo.ForgetHistory();
546  else if (resulttext == tr("Don't record this showing"))
547  recInfo.ApplyRecordStateChange(kDontRecord);
548  else if (resulttext == tr("Never record this episode"))
549  {
550  recInfo.ApplyNeverRecord();
551  }
552  else if (resulttext == tr("Edit recording rule") ||
553  resulttext == tr("Edit override rule"))
554  EditScheduled(&recInfo);
555  else if (resulttext == tr("Delete recording rule") ||
556  resulttext == tr("Delete override rule"))
557  recInfo.ApplyRecordStateChange(kNotRecording);
558  }
559  }
560 }
561 
567 {
568  return recInfo.GetRecordingRuleType() == kDailyRecord ||
569  recInfo.GetRecordingRuleType() == kWeeklyRecord;
570 }
571 
scheduleeditor.h
kDupCheckDesc
@ kDupCheckDesc
Definition: recordingtypes.h:62
MythMainWindow::GetMainStack
MythScreenStack * GetMainStack()
Definition: mythmainwindow.cpp:317
RecStatus::LaterShowing
@ LaterShowing
Definition: recStatus.h:40
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:414
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:571
RecStatus::NeverRecord
@ NeverRecord
Definition: recStatus.h:43
ScheduleCommon::customEvent
void customEvent(QEvent *event) override
Definition: schedulecommon.cpp:486
kDailyRecord
@ kDailyRecord
Definition: recordingtypes.h:23
kDupCheckSubThenDesc
@ kDupCheckSubThenDesc
Definition: recordingtypes.h:64
RemoteGetConflictList
vector< ProgramInfo * > * RemoteGetConflictList(const ProgramInfo *pginfo)
Definition: remoteutil.cpp:202
RecStatus::Tuning
@ Tuning
Definition: recStatus.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:92
plChannel
@ plChannel
Definition: proglist.h:24
kDupCheckSub
@ kDupCheckSub
Definition: recordingtypes.h:61
DialogCompletionEvent::kEventType
static Type kEventType
Definition: mythdialogbox.h:57
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:375
ProgramInfo::kTitleSubtitle
@ kTitleSubtitle
Definition: programinfo.h:509
mythdialogbox.h
MythScreenStack
Definition: mythscreenstack.h:16
ProgLister
Definition: proglist.h:31
RecStatus::Unknown
@ Unknown
Definition: recStatus.h:32
RecordingRule
Internal representation of a recording rule, mirrors the record table.
Definition: recordingrule.h:32
RecordingDupMethodType
RecordingDupMethodType
Definition: recordingtypes.h:57
ScheduleCommon::ShowGuide
virtual void ShowGuide(void) const
Show the program guide.
Definition: schedulecommon.cpp:138
LOG
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
Definition: mythlogging.h:23
ProgramInfo::GetRecordingEndTime
QDateTime GetRecordingEndTime(void) const
Approximate time the recording should have ended, did end, or is intended to end.
Definition: programinfo.h:411
schedulecommon.h
progdetails.h
remoteutil.h
ScheduleCommon::ShowDetails
virtual void ShowDetails(void) const
Show the Program Details screen.
Definition: schedulecommon.cpp:33
MythDate::current
QDateTime current(bool stripped)
Returns current Date and Time in UTC.
Definition: mythdate.cpp:10
ProgramInfo::GetRecordingStartTime
QDateTime GetRecordingStartTime(void) const
Approximate time the recording started.
Definition: programinfo.h:403
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:280
ScheduleCommon::EditScheduled
virtual void EditScheduled(void)
Creates a dialog for editing the recording schedule.
Definition: schedulecommon.cpp:172
proglist.h
prevreclist.h
ProgramInfo::kCategoryMovie
@ kCategoryMovie
Definition: programinfo.h:75
ProgDetails
Definition: progdetails.h:13
RecStatus::WillRecord
@ WillRecord
Definition: recStatus.h:31
MythUIButtonListItem
Definition: mythuibuttonlist.h:27
ScheduleCommon::ShowPrevious
virtual void ShowPrevious(void) const
Show the previous recordings for this recording rule.
Definition: schedulecommon.cpp:254
RecStatus::TooManyRecordings
@ TooManyRecordings
Definition: recStatus.h:37
programinfo.h
ProgramInfo::GetScheduledStartTime
QDateTime GetScheduledStartTime(void) const
The scheduled start time of program.
Definition: programinfo.h:389
ScheduleCommon::EditCustom
virtual void EditCustom(void)
Creates a dialog for creating a custom recording rule.
Definition: schedulecommon.cpp:208
ProgramInfo::GetRecordingStatus
RecStatus::Type GetRecordingStatus(void) const
Definition: programinfo.h:446
RemoteStopRecording
bool RemoteStopRecording(uint inputid)
Definition: tvremoteutil.cpp:97
RecStatus::PreviousRecording
@ PreviousRecording
Definition: recStatus.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:566
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: recStatus.cpp:187
MythDialogBox
Basic menu dialog, message and a list of options.
Definition: mythdialogbox.h:166
ProgramInfo::GetTitle
QString GetTitle(void) const
Definition: programinfo.h:360
ProgramInfo::GetDescription
QString GetDescription(void) const
Definition: programinfo.h:364
PrevRecordedList
Definition: prevreclist.h:29
ScheduleCommon::GetCurrentProgram
virtual ProgramInfo * GetCurrentProgram(void) const
Definition: schedulecommon.h:30
RecStatus::Failing
@ Failing
Definition: recStatus.h:18
RecordingInfo::QuickRecord
void QuickRecord(void)
Create a kSingleRecord if not already scheduled.
Definition: recordinginfo.cpp:867
RecStatus::Conflict
@ Conflict
Definition: recStatus.h:39
ProgramInfo::toString
QString toString(Verbosity v=kLongDescription, const QString &sep=":", const QString &grp="\"") const
Definition: programinfo.cpp:1933
plTitle
@ plTitle
Definition: proglist.h:15
ProgramInfo::GetFindID
uint GetFindID(void) const
Definition: programinfo.h:469
uint
unsigned int uint
Definition: compat.h:140
gCoreContext
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
Definition: mythcorecontext.cpp:60
ProgramInfo::GetSeriesID
QString GetSeriesID(void) const
Definition: programinfo.h:434
CustomEdit
A screen to create a fully custom recording.
Definition: customedit.h:17
RecStatus::Offline
@ Offline
Definition: recStatus.h:44
kOneRecord
@ kOneRecord
Definition: recordingtypes.h:27
tvremoteutil.h
RecStatus::Pending
@ Pending
Definition: recStatus.h:17
ProgramInfo::GetDuplicateCheckMethod
RecordingDupMethodType GetDuplicateCheckMethod(void) const
What should be compared to determine if two programs are the same?
Definition: programinfo.h:458
kWeeklyRecord
@ kWeeklyRecord
Definition: recordingtypes.h:26
recordinginfo.h
ProgramInfo::GetChanID
uint GetChanID(void) const
This is the unique key used in the database to locate tuning information.
Definition: programinfo.h:371
ProgramInfo::GetRecordingRuleType
RecordingType GetRecordingRuleType(void) const
Definition: programinfo.h:450
ProgramInfo
Holds information on recordings and videos.
Definition: programinfo.h:67
RecStatus::Recording
@ Recording
Definition: recStatus.h:30
RecStatus::DontRecord
@ DontRecord
Definition: recStatus.h:33
RecStatus::Inactive
@ Inactive
Definition: recStatus.h:42
mythcorecontext.h
kOverrideRecord
@ kOverrideRecord
Definition: recordingtypes.h:28
kNotRecording
@ kNotRecording
Definition: recordingtypes.h:21
RecStatus::EarlierShowing
@ EarlierShowing
Definition: recStatus.h:36
kDupCheckNone
@ kDupCheckNone
Definition: recordingtypes.h:60
RecStatus::CurrentRecording
@ CurrentRecording
Definition: recStatus.h:35
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:22
RecStatus::NotListed
@ NotListed
Definition: recStatus.h:38
ScheduleCommon::ShowUpcoming
virtual void ShowUpcoming(void) const
Show the upcoming recordings for this title.
Definition: schedulecommon.cpp:73
ScheduleCommon::QuickRecord
virtual void QuickRecord(void)
Create a kSingleRecord or bring up recording dialog.
Definition: schedulecommon.cpp:153
GetMythMainWindow
MythMainWindow * GetMythMainWindow(void)
Definition: mythmainwindow.cpp:104
RecStatus::Repeat
@ Repeat
Definition: recStatus.h:41
ScheduleCommon::MakeOverride
static void MakeOverride(RecordingInfo *recinfo)
Creates a dialog for editing an override recording schedule.
Definition: schedulecommon.cpp:225
plRecordid
@ plRecordid
Definition: proglist.h:26
MythMainWindow::GetStack
MythScreenStack * GetStack(const QString &Stackname)
Definition: mythmainwindow.cpp:322
kAllRecord
@ kAllRecord
Definition: recordingtypes.h:25
ScheduleCommon::ShowChannelSearch
virtual void ShowChannelSearch(void) const
Show the channel search.
Definition: schedulecommon.cpp:119
ProgramInfo::GetProgramID
QString GetProgramID(void) const
Definition: programinfo.h:435
ProgramInfo::kCategorySeries
@ kCategorySeries
Definition: programinfo.h:75
ProgramInfo::GetRecordingRuleID
uint GetRecordingRuleID(void) const
Definition: programinfo.h:448
mythmainwindow.h
ProgramInfo::GetCategoryType
CategoryType GetCategoryType(void) const
Definition: programinfo.h:437
MythScreenStack::AddScreen
virtual void AddScreen(MythScreenType *screen, bool allowFade=true)
Definition: mythscreenstack.cpp:50
ProgramInfo::IsGeneric
bool IsGeneric(void) const
Definition: programinfo.cpp:1924
ShowOkPopup
MythConfirmationDialog * ShowOkPopup(const QString &message, bool showCancel)
Non-blocking version of MythPopupBox::showOkPopup()
Definition: mythdialogbox.cpp:558
ScheduleEditor
Construct a recording schedule.
Definition: scheduleeditor.h:147
kDontRecord
@ kDontRecord
Definition: recordingtypes.h:29
mythscreentype.h
MythCoreContext::GetSetting
QString GetSetting(const QString &key, const QString &defaultval="")
Definition: mythcorecontext.cpp:922
ProgramInfo::GetSubtitle
QString GetSubtitle(void) const
Definition: programinfo.h:362