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 "channelutil.h"
14 #include "recordinginfo.h"
15 #include "tvremoteutil.h"
16 
17 // libmythui
18 #include "mythscreentype.h"
19 #include "mythdialogbox.h"
20 #include "mythmainwindow.h"
21 
22 // mythfrontend
23 #include "scheduleeditor.h"
24 
25 #include "proglist.h"
26 #include "prevreclist.h"
27 #include "customedit.h"
28 #include "guidegrid.h"
29 #include "progdetails.h"
30 
35 {
36  ProgramInfo *pginfo = GetCurrentProgram();
37  if (!pginfo)
38  return;
39 
41  auto *details_dialog = new ProgDetails(mainStack, pginfo);
42 
43  if (!details_dialog->Create())
44  {
45  delete details_dialog;
46  return;
47  }
48 
49  mainStack->AddScreen(details_dialog);
50 }
51 
55 void ScheduleCommon::ShowUpcoming(const QString &title,
56  const QString &seriesid)
57 {
58  if (title.isEmpty())
59  return;
60 
62  auto *pl = new ProgLister(mainStack, plTitle, title, seriesid);
63  if (pl->Create())
64  {
65  mainStack->AddScreen(pl);
66  }
67  else
68  delete pl;
69 }
70 
75 {
76  ProgramInfo *pginfo = GetCurrentProgram();
77  if (!pginfo)
78  return;
79 
80  if (pginfo->GetChanID() == 0 &&
81  pginfo->GetRecordingRuleID() > 0)
82  {
84  return;
85  }
86 
87  ShowUpcoming(pginfo->GetTitle(), pginfo->GetSeriesID());
88 }
89 
94 {
95  ProgramInfo *pginfo = GetCurrentProgram();
96  if (!pginfo)
97  return;
98 
99  RecordingInfo ri(*pginfo);
100 
101  uint id = ri.GetRecordingRuleID();
102  if (id == 0)
103  {
104  ShowUpcoming(pginfo->GetTitle(), pginfo->GetSeriesID());
105  return;
106  }
107 
109  auto *pl = new ProgLister(mainStack, plRecordid, QString::number(id), "");
110 
111  if (pl->Create())
112  mainStack->AddScreen(pl);
113  else
114  delete pl;
115 }
116 
121 {
122  ProgramInfo *pginfo = GetCurrentProgram();
123  if (!pginfo)
124  return;
125 
127  auto *pl = new ProgLister(mainStack, plChannel,
128  QString::number(pginfo->GetChanID()), "",
129  pginfo->GetScheduledStartTime());
130  if (pl->Create())
131  mainStack->AddScreen(pl);
132  else
133  delete pl;
134 }
135 
140 {
141  ProgramInfo *pginfo = GetCurrentProgram();
142  if (!pginfo)
143  return;
144 
145  QString startchannel = pginfo->GetChanNum();
146  uint startchanid = pginfo->GetChanID();
147  QDateTime starttime = pginfo->GetScheduledStartTime();
148  GuideGrid::RunProgramGuide(startchanid, startchannel, starttime);
149 }
150 
155 {
156  ProgramInfo *pginfo = GetCurrentProgram();
157  if (!pginfo)
158  return;
159 
160  if (pginfo->GetRecordingRuleID())
161  EditRecording();
162  else
163  {
164  RecordingInfo ri(*pginfo);
165  ri.QuickRecord();
166  *pginfo = ri;
167  }
168 }
169 
174 {
176 }
177 
182 {
183  if (!pginfo)
184  return;
185 
186  RecordingInfo ri(*pginfo);
187  EditScheduled(&ri);
188 }
189 
194 {
196  auto *schededit = new ScheduleEditor(mainStack, recinfo);
197  if (schededit->Create())
198  mainStack->AddScreen(schededit);
199  else
200  {
201  delete schededit;
202  ShowOkPopup(tr("Recording rule does not exist."));
203  }
204 }
205 
210 {
211  ProgramInfo *pginfo = GetCurrentProgram();
212  if (!pginfo)
213  return;
214 
216  auto *ce = new CustomEdit(mainStack, pginfo);
217  if (ce->Create())
218  mainStack->AddScreen(ce);
219  else
220  delete ce;
221 }
222 
227 {
228  if (!recinfo || !recinfo->GetRecordingRuleID())
229  return;
230 
231  auto *recrule = new RecordingRule();
232 
233  if (!recrule->LoadByProgram(recinfo))
234  LOG(VB_GENERAL, LOG_ERR, "Failed to load by program info");
235 
236  if (!recrule->MakeOverride())
237  {
238  LOG(VB_GENERAL, LOG_ERR, "Failed to make Override");
239  delete recrule;
240  return;
241  }
242  recrule->m_type = kOverrideRecord;
243 
245  auto *schededit = new ScheduleEditor(mainStack, recrule);
246  if (schededit->Create())
247  mainStack->AddScreen(schededit);
248  else
249  delete schededit;
250 }
251 
256 {
257  ProgramInfo *pginfo = GetCurrentProgram();
258  if (!pginfo)
259  return;
260 
261  ShowPrevious(pginfo->GetRecordingRuleID(), pginfo->GetTitle());
262 }
263 
267 void ScheduleCommon::ShowPrevious(uint ruleid, const QString &title) const
268 {
270  auto *pl = new PrevRecordedList(mainStack, ruleid, title);
271  if (pl->Create())
272  mainStack->AddScreen(pl);
273  else
274  delete pl;
275 }
276 
281 void ScheduleCommon::EditRecording(bool may_watch_now)
282 {
283  ProgramInfo *pginfo = GetCurrentProgram();
284  if (!pginfo)
285  return;
286 
287  RecordingInfo recinfo(*pginfo);
288 
289  QString timeFormat = gCoreContext->GetSetting("TimeFormat", "h:mm AP");
290 
291  QString message = QString("%1 - %2 %3\n")
292  .arg(recinfo.GetRecordingStartTime().toLocalTime().toString(timeFormat),
293  recinfo.GetRecordingEndTime().toLocalTime().toString(timeFormat),
294  recinfo.toString(ProgramInfo::kTitleSubtitle, " - "));
295 
296  message += "\n";
297  message += RecStatus::toDescription(recinfo.GetRecordingStatus(),
298  recinfo.GetRecordingRuleType(),
299  recinfo.GetRecordingStartTime());
300 
301  QString messageConflict;
302  if (recinfo.GetRecordingStatus() == RecStatus::Conflict ||
304  {
305  vector<ProgramInfo *> *confList = RemoteGetConflictList(&recinfo);
306  uint chanid = recinfo.GetChanID();
307  uint sourceid = ChannelUtil::GetSourceIDForChannel(chanid);
308 
309  for (auto *p : *confList)
310  {
311  if (sourceid == p->GetSourceID())
312  {
313  messageConflict += QString("%1 - %2 %3\n")
314  .arg(p->GetRecordingStartTime().toLocalTime().toString(timeFormat),
315  p->GetRecordingEndTime().toLocalTime().toString(timeFormat),
316  p->toString(ProgramInfo::kTitleSubtitle, " - "));
317  }
318  delete p;
319  }
320  delete confList;
321  }
322 
323  if (!messageConflict.isEmpty())
324  {
325  message += " ";
326  message += tr("The following programs will be recorded instead:");
327  message += "\n";
328  message += messageConflict;
329  message += "\n";
330  }
331 
332  MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
333  auto *menuPopup = new MythDialogBox(message, popupStack, "recOptionPopup", true);
334 
335  if (!menuPopup->Create())
336  {
337  delete menuPopup;
338  return;
339  }
340  menuPopup->SetReturnEvent(this, "editrecording");
341 
342  QDateTime now = MythDate::current();
343 
344  if(may_watch_now)
345  menuPopup->AddButton(tr("Watch This Channel"));
346 
347  if (recinfo.GetRecordingStatus() == RecStatus::Unknown)
348  {
349  if (recinfo.GetRecordingEndTime() > now)
350  menuPopup->AddButtonV(tr("Record this showing"),
351  QVariant::fromValue(recinfo));
352  menuPopup->AddButtonV(tr("Record all showings"),
353  QVariant::fromValue(recinfo));
354  if (!recinfo.IsGeneric())
355  {
357  {
358  menuPopup->AddButtonV(tr("Record one showing"),
359  QVariant::fromValue(recinfo));
360  }
361  else
362  {
363  menuPopup->AddButtonV(tr("Record one showing (this episode)"),
364  QVariant::fromValue(recinfo));
365  }
366 
367  }
368  menuPopup->AddButtonV(tr("Record all showings (this channel)"),
369  QVariant::fromValue(recinfo));
370  menuPopup->AddButtonV(tr("Edit recording rule"),
371  QVariant::fromValue(recinfo));
372  }
373  else if (recinfo.GetRecordingStatus() == RecStatus::Recording ||
374  recinfo.GetRecordingStatus() == RecStatus::Tuning ||
375  recinfo.GetRecordingStatus() == RecStatus::Failing ||
377  {
378  if (recinfo.GetRecordingStatus() != RecStatus::Pending)
379  menuPopup->AddButtonV(tr("Stop this recording"),
380  QVariant::fromValue(recinfo));
381  menuPopup->AddButtonV(tr("Modify recording options"),
382  QVariant::fromValue(recinfo));
383  }
384  else
385  {
386  if (recinfo.GetRecordingStartTime() < now &&
387  recinfo.GetRecordingEndTime() > now &&
390  {
391  menuPopup->AddButtonV(tr("Restart this recording"),
392  QVariant::fromValue(recinfo));
393  }
394 
395  if (recinfo.GetRecordingEndTime() > now &&
396  recinfo.GetRecordingRuleType() != kSingleRecord &&
397  recinfo.GetRecordingRuleType() != kOverrideRecord &&
404  recinfo.GetRecordingStatus() == RecStatus::Repeat ||
407  {
408  menuPopup->AddButtonV(tr("Record this showing"),
409  QVariant::fromValue(recinfo));
410  if (recinfo.GetRecordingStartTime() > now &&
413  {
414  menuPopup->AddButtonV(tr("Forget previous recording"),
415  QVariant::fromValue(recinfo));
416  }
417  }
418 
419  if (recinfo.GetRecordingRuleType() != kSingleRecord &&
420  recinfo.GetRecordingRuleType() != kDontRecord &&
428  {
429  if (recinfo.GetRecordingStatus() == RecStatus::WillRecord ||
431  menuPopup->AddButtonV(tr("Don't record this showing"),
432  QVariant::fromValue(recinfo));
433 
434  const RecordingDupMethodType dupmethod =
435  recinfo.GetDuplicateCheckMethod();
436  if (recinfo.GetRecordingRuleType() != kOverrideRecord &&
437  !((recinfo.GetFindID() == 0 ||
438  !IsFindApplicable(recinfo)) &&
440  recinfo.GetProgramID().contains(QRegularExpression("0000$"))) &&
441  ((((dupmethod & kDupCheckNone) == 0) &&
442  !recinfo.GetProgramID().isEmpty() &&
443  (recinfo.GetFindID() != 0 ||
444  !IsFindApplicable(recinfo))) ||
445  (((dupmethod & kDupCheckSub) != 0) &&
446  !recinfo.GetSubtitle().isEmpty()) ||
447  (((dupmethod & kDupCheckDesc) != 0) &&
448  !recinfo.GetDescription().isEmpty()) ||
449  (((dupmethod & kDupCheckSubThenDesc) != 0) &&
450  (!recinfo.GetSubtitle().isEmpty() ||
451  !recinfo.GetDescription().isEmpty())) ))
452  {
453  menuPopup->AddButtonV(tr("Never record this episode"),
454  QVariant::fromValue(recinfo));
455  }
456  }
457 
458  if (recinfo.GetRecordingRuleType() == kOverrideRecord ||
459  recinfo.GetRecordingRuleType() == kDontRecord)
460  {
461  menuPopup->AddButtonV(tr("Edit override rule"),
462  QVariant::fromValue(recinfo));
463  menuPopup->AddButtonV(tr("Delete override rule"),
464  QVariant::fromValue(recinfo));
465  }
466  else
467  {
468  if (recinfo.GetRecordingRuleType() != kSingleRecord &&
470  menuPopup->AddButtonV(tr("Add override rule"),
471  QVariant::fromValue(recinfo));
472  menuPopup->AddButtonV(tr("Edit recording rule"),
473  QVariant::fromValue(recinfo));
474  menuPopup->AddButtonV(tr("Delete recording rule"),
475  QVariant::fromValue(recinfo));
476  }
477  }
478 
479  popupStack->AddScreen(menuPopup);
480 }
481 
483 {
484  EditRecording();
485 }
486 
487 void ScheduleCommon::customEvent(QEvent *event)
488 {
489  if (event->type() == DialogCompletionEvent::kEventType)
490  {
491  auto *dce = (DialogCompletionEvent*)(event);
492 
493  QString resultid = dce->GetId();
494  QString resulttext = dce->GetResultText();
495 
496  if (resultid == "editrecording")
497  {
498  if (!dce->GetData().canConvert<RecordingInfo>())
499  return;
500 
501  auto recInfo = dce->GetData().value<RecordingInfo>();
502 
503  if (resulttext == tr("Record this showing"))
504  {
505  if (recInfo.GetRecordingRuleType() == kNotRecording)
507  else
508  {
509  recInfo.ApplyRecordStateChange(kOverrideRecord);
510  if (recInfo.GetRecordingStartTime() < MythDate::current())
511  recInfo.ReactivateRecording();
512  }
513  }
514  else if (resulttext == tr("Record all showings"))
515  recInfo.ApplyRecordStateChange(kAllRecord);
516  else if (resulttext == tr("Record one showing (this episode)") ||
517  resulttext == tr("Record one showing"))
518  {
519  recInfo.ApplyRecordStateChange(kOneRecord, false);
520  recInfo.GetRecordingRule()->m_filter |= 64; // This episode
521  recInfo.GetRecordingRule()->Save();
522  }
523  else if (resulttext == tr("Record all showings (this channel)"))
524  {
525  recInfo.ApplyRecordStateChange(kAllRecord, false);
526  recInfo.GetRecordingRule()->m_filter |= 1024; // This channel
527  recInfo.GetRecordingRule()->Save();
528  }
529  else if (resulttext == tr("Stop this recording"))
530  {
531  RemoteStopRecording(&recInfo);
532  }
533  else if (resulttext == tr("Modify recording options") ||
534  resulttext == tr("Add override rule"))
535  {
536  if (recInfo.GetRecordingRuleType() == kSingleRecord ||
537  recInfo.GetRecordingRuleType() == kOverrideRecord ||
538  recInfo.GetRecordingRuleType() == kOneRecord)
539  EditScheduled(&recInfo);
540  else
541  MakeOverride(&recInfo);
542  }
543  else if (resulttext == tr("Restart this recording"))
544  recInfo.ReactivateRecording();
545  else if (resulttext == tr("Forget previous recording"))
546  recInfo.ForgetHistory();
547  else if (resulttext == tr("Don't record this showing"))
548  recInfo.ApplyRecordStateChange(kDontRecord);
549  else if (resulttext == tr("Never record this episode"))
550  {
551  recInfo.ApplyNeverRecord();
552  }
553  else if (resulttext == tr("Edit recording rule") ||
554  resulttext == tr("Edit override rule"))
555  EditScheduled(&recInfo);
556  else if (resulttext == tr("Delete recording rule") ||
557  resulttext == tr("Delete override rule"))
558  recInfo.ApplyRecordStateChange(kNotRecording);
559  }
560  }
561 }
562 
568 {
569  return recInfo.GetRecordingRuleType() == kDailyRecord ||
570  recInfo.GetRecordingRuleType() == kWeeklyRecord;
571 }
572 
scheduleeditor.h
kDupCheckDesc
@ kDupCheckDesc
Definition: recordingtypes.h:62
MythMainWindow::GetMainStack
MythScreenStack * GetMainStack()
Definition: mythmainwindow.cpp:314
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:573
RecStatus::NeverRecord
@ NeverRecord
Definition: recStatus.h:43
ScheduleCommon::customEvent
void customEvent(QEvent *event) override
Definition: schedulecommon.cpp:487
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:93
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:376
ProgramInfo::kTitleSubtitle
@ kTitleSubtitle
Definition: programinfo.h:510
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:139
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:412
schedulecommon.h
progdetails.h
remoteutil.h
ScheduleCommon::ShowDetails
virtual void ShowDetails(void) const
Show the Program Details screen.
Definition: schedulecommon.cpp:34
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: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:281
ScheduleCommon::EditScheduled
virtual void EditScheduled(void)
Creates a dialog for editing the recording schedule.
Definition: schedulecommon.cpp:173
proglist.h
prevreclist.h
ProgramInfo::kCategoryMovie
@ kCategoryMovie
Definition: programinfo.h:76
ProgDetails
Definition: progdetails.h:13
RecStatus::WillRecord
@ WillRecord
Definition: recStatus.h:31
MythUIButtonListItem
Definition: mythuibuttonlist.h:34
ScheduleCommon::ShowPrevious
virtual void ShowPrevious(void) const
Show the previous recordings for this recording rule.
Definition: schedulecommon.cpp:255
RecStatus::TooManyRecordings
@ TooManyRecordings
Definition: recStatus.h:37
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:209
ProgramInfo::GetRecordingStatus
RecStatus::Type GetRecordingStatus(void) const
Definition: programinfo.h:447
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:567
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:361
ProgramInfo::GetDescription
QString GetDescription(void) const
Definition: programinfo.h:365
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:869
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:470
uint
unsigned int uint
Definition: compat.h:144
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:435
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
channelutil.h
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:459
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: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: 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
ChannelUtil::GetSourceIDForChannel
static uint GetSourceIDForChannel(uint chanid)
Definition: channelutil.cpp:804
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:74
ScheduleCommon::QuickRecord
virtual void QuickRecord(void)
Create a kSingleRecord or bring up recording dialog.
Definition: schedulecommon.cpp:154
GetMythMainWindow
MythMainWindow * GetMythMainWindow(void)
Definition: mythmainwindow.cpp:101
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:226
plRecordid
@ plRecordid
Definition: proglist.h:26
MythMainWindow::GetStack
MythScreenStack * GetStack(const QString &Stackname)
Definition: mythmainwindow.cpp:319
kAllRecord
@ kAllRecord
Definition: recordingtypes.h:25
ScheduleCommon::ShowChannelSearch
virtual void ShowChannelSearch(void) const
Show the channel search.
Definition: schedulecommon.cpp:120
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: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:148
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:363