MythTV  master
viewscheduled.cpp
Go to the documentation of this file.
1 
2 #include "viewscheduled.h"
3 
4 #include <QCoreApplication>
5 
6 // libmythbase
7 
8 #include "mythcorecontext.h"
9 #include "mythlogging.h"
10 
11 // libmythui
12 
13 #include "mythuitext.h"
14 #include "mythuistatetype.h"
15 #include "mythuibuttonlist.h"
16 #include "mythdialogbox.h"
17 #include "mythmainwindow.h"
18 
19 // libmythtv
20 
21 #include "recordinginfo.h"
22 #include "tv_play.h"
23 #include "recordingrule.h"
24 #include "remoteutil.h"
25 #include "programtypes.h" // for RecStatus, etc
26 #include "recordingtypes.h" // for toString
27 #include "tv_actions.h" // for ACTION_CHANNELSEARCH
28 
29 // mythfrontend
30 #include "guidegrid.h"
31 
32 void *ViewScheduled::RunViewScheduled(void *player, bool showTV)
33 {
35  auto *vsb = new ViewScheduled(mainStack, static_cast<TV*>(player), showTV);
36 
37  if (vsb->Create())
38  mainStack->AddScreen(vsb, (player == nullptr));
39  else
40  delete vsb;
41 
42  return nullptr;
43 }
44 
45 ViewScheduled::ViewScheduled(MythScreenStack *parent, TV* player, bool /*showTV*/)
46  : ScheduleCommon(parent, "ViewScheduled"),
47  m_showAll(!gCoreContext->GetBoolSetting("ViewSchedShowLevel", false)),
48  m_player(player)
49 {
51 }
52 
54 {
56  gCoreContext->SaveBoolSetting("ViewSchedShowLevel", !m_showAll);
57 
58  // if we have a player, we need to tell we are done
59  if (m_player)
60  {
61  QString message = QString("VIEWSCHEDULED_EXITING");
62  QCoreApplication::postEvent(m_player, new MythEvent(message));
63  }
64 }
65 
67 {
68  if (!LoadWindowFromXML("schedule-ui.xml", "viewscheduled", this))
69  return false;
70 
71  m_groupList = dynamic_cast<MythUIButtonList *> (GetChild("groups"));
72  m_schedulesList = dynamic_cast<MythUIButtonList *> (GetChild("schedules"));
73 
74  if (!m_schedulesList)
75  {
76  LOG(VB_GENERAL, LOG_ERR, "Theme is missing critical theme elements.");
77  return false;
78  }
79 
80  connect(m_schedulesList, SIGNAL(itemSelected(MythUIButtonListItem*)),
82  connect(m_schedulesList, SIGNAL(itemClicked(MythUIButtonListItem*)),
83  SLOT(EditRecording()));
84 
85  m_schedulesList->SetLCDTitles(tr("Scheduled Recordings"),
86  "shortstarttimedate|channel|titlesubtitle|card");
87  m_schedulesList->SetSearchFields("titlesubtitle");
88 
89  if (m_groupList)
90  {
91  connect(m_groupList, SIGNAL(itemSelected(MythUIButtonListItem*)),
93  connect(m_groupList, SIGNAL(itemClicked(MythUIButtonListItem*)),
94  SLOT(SwitchList()));
95  m_groupList->SetLCDTitles(tr("Group List"), "");
96  }
97 
100 
101  EmbedTVWindow();
102 
103  return true;
104 }
105 
107 {
109 }
110 
112 {
113  LoadList(true);
114 }
115 
117 {
118  // don't fade the screen if we are returning to the player
119  if (m_player)
120  GetScreenStack()->PopScreen(this, false);
121  else
122  GetScreenStack()->PopScreen(this, true);
123 }
124 
126 {
127  if (GetFocusWidget() == m_groupList)
129  else if (GetFocusWidget() == m_schedulesList)
131 }
132 
133 bool ViewScheduled::keyPressEvent(QKeyEvent *event)
134 {
135  // FIXME: Blackholes keypresses, not good
136  if (m_inEvent)
137  return true;
138 
139  m_inEvent = true;
140 
141  if (GetFocusWidget()->keyPressEvent(event))
142  {
143  m_inEvent = false;
144  return true;
145  }
146 
147  QStringList actions;
148  bool handled = GetMythMainWindow()->TranslateKeyPress("TV Frontend", event,
149  actions);
150 
151  for (int i = 0; i < actions.size() && !handled; i++)
152  {
153  QString action = actions[i];
154  handled = true;
155 
156  if (action == "EDIT")
157  EditScheduled();
158  else if (action == "CUSTOMEDIT")
159  EditCustom();
160  else if (action == "DELETE")
161  deleteRule();
162  else if (action == "UPCOMING")
163  ShowUpcoming();
164  else if (action == "VIEWSCHEDULED")
166  else if (action == "PREVRECORDED")
167  ShowPrevious();
168  else if (action == "DETAILS" || action == "INFO")
169  ShowDetails();
170  else if (action == "GUIDE")
171  ShowGuide();
172  else if (action == ACTION_CHANNELSEARCH)
174  else if (action == "1")
175  setShowAll(true);
176  else if (action == "2")
177  setShowAll(false);
178  else if (action == "PREVVIEW" || action == "NEXTVIEW")
180  else if (action == "VIEWINPUT")
181  viewInputs();
182  else
183  handled = false;
184  }
185 
186  if (m_needFill)
187  LoadList();
188 
189  if (!handled && MythScreenType::keyPressEvent(event))
190  handled = true;
191 
192  m_inEvent = false;
193 
194  return handled;
195 }
196 
198 {
199  QString label = tr("Options");
200 
201  MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
202  auto *menuPopup = new MythDialogBox(label, popupStack, "menuPopup");
203 
204  if (menuPopup->Create())
205  {
206  menuPopup->SetReturnEvent(this, "menu");
207 
208  if (m_showAll)
209  menuPopup->AddButton(tr("Show Important"));
210  else
211  menuPopup->AddButton(tr("Show All"));
212  menuPopup->AddButton(tr("Program Details"));
213  menuPopup->AddButton(tr("Program Guide"));
214  menuPopup->AddButton(tr("Channel Search"));
215  menuPopup->AddButton(tr("Upcoming by title"));
216  menuPopup->AddButton(tr("Upcoming scheduled"));
217  menuPopup->AddButton(tr("Previously Recorded"));
218  menuPopup->AddButton(tr("Custom Edit"));
219  menuPopup->AddButton(tr("Delete Rule"));
220  menuPopup->AddButton(tr("Show Inputs"));
221 
222  popupStack->AddScreen(menuPopup);
223  }
224  else
225  {
226  delete menuPopup;
227  }
228 }
229 
230 void ViewScheduled::LoadList(bool useExistingData)
231 {
232  if (m_inFill)
233  return;
234 
235  m_inFill = true;
236 
238 
239  QString callsign;
240  QDateTime startts;
241  QDateTime recstartts;
242  QDate group = m_currentGroup;
243 
244  if (currentItem)
245  {
246  auto *currentpginfo = currentItem->GetData().value<ProgramInfo*>();
247  if (currentpginfo)
248  {
249  callsign = currentpginfo->GetChannelSchedulingID();
250  startts = currentpginfo->GetScheduledStartTime();
251  recstartts = currentpginfo->GetRecordingStartTime();
252  }
253  }
254 
255  QDateTime now = MythDate::current();
256 
257  QMap<int, int> toomanycounts;
258 
260  if (m_groupList)
261  m_groupList->Reset();
262 
263  m_recgroupList.clear();
264 
265  if (!useExistingData)
267 
268  auto pit = m_recList.begin();
269  QString currentDate;
271  m_recgroupList[m_defaultGroup].setAutoDelete(false);
272  while (pit != m_recList.end())
273  {
274  ProgramInfo *pginfo = *pit;
275  const RecStatus::Type recstatus = pginfo->GetRecordingStatus();
276  if ((pginfo->GetRecordingEndTime() >= now ||
277  pginfo->GetScheduledEndTime() >= now ||
278  recstatus == RecStatus::Recording ||
279  recstatus == RecStatus::Tuning ||
280  recstatus == RecStatus::Failing) &&
281  (m_showAll ||
282  (recstatus >= RecStatus::Pending &&
283  recstatus <= RecStatus::WillRecord) ||
284  recstatus == RecStatus::DontRecord ||
285  (recstatus == RecStatus::TooManyRecordings &&
286  ++toomanycounts[pginfo->GetRecordingRuleID()] <= 1) ||
287  (recstatus > RecStatus::TooManyRecordings &&
288  recstatus != RecStatus::Repeat &&
289  recstatus != RecStatus::NeverRecord)))
290  {
291  m_inputref[pginfo->GetInputID()]++;
292  if (pginfo->GetInputID() > m_maxinput)
293  m_maxinput = pginfo->GetInputID();
294 
295  QDate date = pginfo->GetRecordingStartTime().toLocalTime().date();
296  m_recgroupList[date].push_back(pginfo);
297  m_recgroupList[date].setAutoDelete(false);
298 
299  m_recgroupList[m_defaultGroup].push_back(pginfo);
300 
301  ++pit;
302  }
303  else
304  {
305  pit = m_recList.erase(pit);
306  continue;
307  }
308  }
309 
310  if (m_groupList)
311  {
312  QString label;
313  QMap<QDate,ProgramList>::iterator dateit = m_recgroupList.begin();
314  while (dateit != m_recgroupList.end())
315  {
316  if (dateit.key().isNull())
317  label = tr("All");
318  else
319  label = MythDate::toString(
320  dateit.key(), MythDate::kDateFull | MythDate::kSimplify);
321 
323  QVariant::fromValue(dateit.key()));
324  ++dateit;
325  }
326 
327  // Restore group
328  if (m_recgroupList.contains(group))
329  m_currentGroup = group;
330  else
332 
333  m_groupList->SetValueByData(QVariant::fromValue(m_currentGroup));
334  }
335 
336  FillList();
337 
338  // Restore position after a list update
339  if (!callsign.isEmpty())
340  {
342 
343  int listPos = ((int) plist.size()) - 1;
344  for (int i = listPos; i >= 0; --i)
345  {
346  ProgramInfo *pginfo = plist[i];
347  if (callsign == pginfo->GetChannelSchedulingID() &&
348  startts == pginfo->GetScheduledStartTime())
349  {
350  listPos = i;
351  break;
352  }
353  if (recstartts <= pginfo->GetRecordingStartTime())
354  listPos = i;
355  }
357  }
358 
359  m_inFill = false;
360  m_needFill = false;
361 }
362 
363 
365 {
366  if (!item || m_recList.empty())
367  return;
368 
369  auto group = item->GetData().value<QDate>();
370 
371  m_currentGroup = group;
372 
373  if (!m_inFill)
374  FillList();
375 }
376 
378 {
380 
381  MythUIText *norecordingText = dynamic_cast<MythUIText*>
382  (GetChild("norecordings_info"));
383 
384  if (norecordingText)
385  norecordingText->SetVisible(m_recList.empty());
386 
387  if (m_recList.empty())
388  return;
389 
390  ProgramList plist;
391 
392  if (!m_recgroupList.contains(m_currentGroup))
394 
396 
397  auto pit = plist.begin();
398  while (pit != plist.end())
399  {
400  ProgramInfo *pginfo = *pit;
401  if (!pginfo)
402  {
403  ++pit;
404  continue;
405  }
406 
407  QString state;
408 
409  const RecStatus::Type recstatus = pginfo->GetRecordingStatus();
410  if (recstatus == RecStatus::Recording ||
411  recstatus == RecStatus::Tuning)
412  state = "running";
413  else if (recstatus == RecStatus::Conflict ||
414  recstatus == RecStatus::Offline ||
415  recstatus == RecStatus::TunerBusy ||
416  recstatus == RecStatus::Failed ||
417  recstatus == RecStatus::Failing ||
418  recstatus == RecStatus::Aborted ||
419  recstatus == RecStatus::Missed)
420  state = "error";
421  else if (recstatus == RecStatus::WillRecord ||
422  recstatus == RecStatus::Pending)
423  {
424  if (m_curinput == 0 || pginfo->GetInputID() == m_curinput)
425  {
426  if (pginfo->GetRecordingPriority2() < 0)
427  state = "warning";
428  else
429  state = "normal";
430  }
431  }
432  else if (recstatus == RecStatus::Repeat ||
433  recstatus == RecStatus::NeverRecord ||
434  recstatus == RecStatus::DontRecord ||
435  (recstatus != RecStatus::DontRecord &&
436  recstatus <= RecStatus::EarlierShowing))
437  state = "disabled";
438  else
439  state = "warning";
440 
441  auto *item = new MythUIButtonListItem(m_schedulesList,"",
442  QVariant::fromValue(pginfo));
443 
444  InfoMap infoMap;
445  pginfo->ToMap(infoMap);
446  item->SetTextFromMap(infoMap, state);
447 
448  QString rating = QString::number(pginfo->GetStars(10));
449  item->DisplayState(rating, "ratingstate");
450  item->DisplayState(state, "status");
451 
452  ++pit;
453  }
454 
455  MythUIText *statusText = dynamic_cast<MythUIText*>(GetChild("status"));
456  if (statusText)
457  {
458  if (m_conflictBool)
459  {
460  // Find first conflict and store in m_conflictDate field
461  for (auto & conflict : plist)
462  {
463  if (conflict->GetRecordingStatus() == RecStatus::Conflict)
464  {
465  m_conflictDate = conflict->GetRecordingStartTime()
466  .toLocalTime().date();
467  break;
468  }
469  }
470 
471  // TODO: This can be templated instead of hardcoding
472  // Conflict/No Conflict
473  QString cstring = tr("Conflict %1")
476 
477  statusText->SetText(cstring);
478  }
479  else
480  statusText->SetText(tr("No Conflicts"));
481  }
482 
483  MythUIText *filterText = dynamic_cast<MythUIText*>(GetChild("filter"));
484  if (filterText)
485  {
486  if (m_showAll)
487  filterText->SetText(tr("All"));
488  else
489  filterText->SetText(tr("Important"));
490  }
491 }
492 
494 {
495  if (!item)
496  return;
497 
498  auto *pginfo = item->GetData().value<ProgramInfo*> ();
499  if (pginfo)
500  {
501  InfoMap infoMap;
502  pginfo->ToMap(infoMap);
503  SetTextFromMap(infoMap);
504 
505  MythUIStateType *ratingState = dynamic_cast<MythUIStateType*>
506  (GetChild("ratingstate"));
507  if (ratingState)
508  {
509  QString rating = QString::number(pginfo->GetStars(10));
510  ratingState->DisplayState(rating);
511  }
512  }
513 }
514 
516 {
518 
519  if (!item)
520  return;
521 
522  auto *pginfo = item->GetData().value<ProgramInfo*>();
523  if (!pginfo)
524  return;
525 
526  auto *record = new RecordingRule();
527  if (!record->LoadByProgram(pginfo))
528  {
529  delete record;
530  return;
531  }
532 
533  QString message = tr("Delete '%1' %2 rule?").arg(record->m_title)
534  .arg(toString(pginfo->GetRecordingRuleType()));
535 
536  MythScreenStack *popupStack = GetMythMainWindow()->GetStack("popup stack");
537 
538  auto *okPopup = new MythConfirmationDialog(popupStack, message, true);
539 
540  okPopup->SetReturnEvent(this, "deleterule");
541  okPopup->SetData(QVariant::fromValue(record));
542 
543  if (okPopup->Create())
544  popupStack->AddScreen(okPopup);
545  else
546  delete okPopup;
547 }
548 
550 {
551  m_showAll = all;
552  m_needFill = true;
553 }
554 
556 {
557  m_needFill = true;
558 
559  m_curinput++;
560  while (m_curinput <= m_maxinput)
561  {
562  if (m_inputref[m_curinput] > 0)
563  return;
564  m_curinput++;
565  }
566  m_curinput = 0;
567 }
568 
570 {
571  if (m_player)
572  m_player->StartEmbedding(QRect());
573 }
574 
575 void ViewScheduled::customEvent(QEvent *event)
576 {
577  if (event->type() == MythEvent::MythEventMessage)
578  {
579  auto *me = dynamic_cast<MythEvent *>(event);
580  if (me == nullptr)
581  return;
582 
583  const QString& message = me->Message();
584  if (message != "SCHEDULE_CHANGE")
585  return;
586 
587  m_needFill = true;
588 
589  if (m_inEvent)
590  return;
591 
592  m_inEvent = true;
593 
594  LoadList();
595 
596  m_inEvent = false;
597  }
598  else if (event->type() == DialogCompletionEvent::kEventType)
599  {
600  auto *dce = (DialogCompletionEvent*)(event);
601 
602  QString resultid = dce->GetId();
603  QString resulttext = dce->GetResultText();
604  int buttonnum = dce->GetResult();
605 
606  if (resultid == "deleterule")
607  {
608  auto *record = dce->GetData().value<RecordingRule *>();
609  if (record)
610  {
611  if (buttonnum > 0)
612  {
613  if (!record->Delete())
614  LOG(VB_GENERAL, LOG_ERR,
615  "Failed to delete recording rule");
616  }
617  delete record;
618  }
619 
620  EmbedTVWindow();
621  }
622  else if (resultid == "menu")
623  {
624  if (resulttext == tr("Show Important"))
625  {
626  setShowAll(false);
627  }
628  else if (resulttext == tr("Show All"))
629  {
630  setShowAll(true);
631  }
632  else if (resulttext == tr("Program Details"))
633  {
634  ShowDetails();
635  }
636  else if (resulttext == tr("Program Guide"))
637  {
638  ShowGuide();
639  }
640  else if (resulttext == tr("Channel Search"))
641  {
643  }
644  else if (resulttext == tr("Upcoming by title"))
645  {
646  ShowUpcoming();
647  }
648  else if (resulttext == tr("Upcoming scheduled"))
649  {
651  }
652  else if (resulttext == tr("Previously Recorded"))
653  {
654  ShowPrevious();
655  }
656  else if (resulttext == tr("Custom Edit"))
657  {
658  EditCustom();
659  }
660  else if (resulttext == tr("Delete Rule"))
661  {
662  deleteRule();
663  }
664  else if (resulttext == tr("Show Inputs"))
665  {
666  viewInputs();
667  }
668 
669  if (m_needFill)
670  LoadList();
671  }
672  else
674  }
675 }
676 
678 {
680  return item ? item->GetData().value<ProgramInfo*>() : nullptr;
681 }
MythScreenType::LoadInBackground
void LoadInBackground(const QString &message="")
Definition: mythscreentype.cpp:302
RecStatus::Type
Type
Definition: recStatus.h:16
ViewScheduled::GetCurrentProgram
ProgramInfo * GetCurrentProgram(void) const override
Definition: viewscheduled.cpp:677
MythMainWindow::GetMainStack
MythScreenStack * GetMainStack()
Definition: mythmainwindow.cpp:304
ViewScheduled::m_currentGroup
QDate m_currentGroup
Definition: viewscheduled.h:80
MythDate::toString
QString toString(const QDateTime &raw_dt, uint format)
Returns formatted string representing the time.
Definition: mythdate.cpp:80
MythEvent::MythEventMessage
static Type MythEventMessage
Definition: mythevent.h:73
MythUIButtonList::GetItemCurrent
MythUIButtonListItem * GetItemCurrent() const
Definition: mythuibuttonlist.cpp:1590
MythUIButtonList::SetValueByData
void SetValueByData(const QVariant &data)
Definition: mythuibuttonlist.cpp:1542
mythuitext.h
LoadFromScheduler
bool LoadFromScheduler(AutoDeleteDeque< TYPE * > &destination, bool &hasConflicts, const QString &altTable="", int recordid=-1)
Definition: programinfo.h:880
guidegrid.h
ViewScheduled::Init
void Init(void) override
Used after calling Load() to assign data to widgets and other UI initilisation which is prohibited in...
Definition: viewscheduled.cpp:111
false
VERBOSE_PREAMBLE false
Definition: verbosedefs.h:85
ViewScheduled::Close
void Close(void) override
Definition: viewscheduled.cpp:116
RecStatus::NeverRecord
@ NeverRecord
Definition: recStatus.h:43
ViewScheduled::m_needFill
bool m_needFill
Definition: viewscheduled.h:74
ScheduleCommon::customEvent
void customEvent(QEvent *event) override
Definition: schedulecommon.cpp:475
ViewScheduled::m_defaultGroup
QDate m_defaultGroup
Definition: viewscheduled.h:81
ViewScheduled::m_curinput
uint m_curinput
Definition: viewscheduled.h:85
RecStatus::Tuning
@ Tuning
Definition: recStatus.h:22
ViewScheduled::m_inputref
QMap< int, int > m_inputref
Definition: viewscheduled.h:83
MythMainWindow::TranslateKeyPress
bool TranslateKeyPress(const QString &context, QKeyEvent *e, QStringList &actions, bool allowJumps=true)
Get a list of actions for a keypress in the given context.
Definition: mythmainwindow.cpp:1106
MythUIType::GetChild
MythUIType * GetChild(const QString &name) const
Get a named child of this UIType.
Definition: mythuitype.cpp:130
ScheduleCommon::ShowUpcomingScheduled
virtual void ShowUpcomingScheduled(void) const
Show the upcoming recordings for this recording rule.
Definition: schedulecommon.cpp:89
DialogCompletionEvent::kEventType
static Type kEventType
Definition: mythdialogbox.h:57
ViewScheduled::ViewScheduled
ViewScheduled(MythScreenStack *parent, TV *player=nullptr, bool showTV=false)
Definition: viewscheduled.cpp:45
MythEvent
This class is used as a container for messages.
Definition: mythevent.h:17
AutoDeleteDeque::empty
bool empty(void) const
Definition: autodeletedeque.h:66
mythdialogbox.h
MythScreenStack
Definition: mythscreenstack.h:16
ProgramInfo::GetChannelSchedulingID
QString GetChannelSchedulingID(void) const
This is the unique programming identifier of a channel.
Definition: programinfo.h:378
RecStatus::TunerBusy
@ TunerBusy
Definition: recStatus.h:24
RecordingRule
Internal representation of a recording rule, mirrors the record table.
Definition: recordingrule.h:33
ViewScheduled::deleteRule
void deleteRule()
Definition: viewscheduled.cpp:515
ViewScheduled::SwitchList
void SwitchList(void)
Definition: viewscheduled.cpp:125
ScheduleCommon::ShowGuide
virtual void ShowGuide(void) const
Show the program guide.
Definition: schedulecommon.cpp:132
ProgramInfo::GetScheduledEndTime
QDateTime GetScheduledEndTime(void) const
The scheduled end time of the program.
Definition: programinfo.h:392
LOG
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
Definition: mythlogging.h:23
mythuistatetype.h
MythUIButtonList::SetSearchFields
void SetSearchFields(const QString &fields)
Definition: mythuibuttonlist.h:206
ViewScheduled::m_showAll
bool m_showAll
Definition: viewscheduled.h:70
recordingtypes.h
ProgramInfo::GetRecordingEndTime
QDateTime GetRecordingEndTime(void) const
Approximate time the recording should have ended, did end, or is intended to end.
Definition: programinfo.h:407
remoteutil.h
MythMainWindow::GetStack
MythScreenStack * GetStack(const QString &stackname)
Definition: mythmainwindow.cpp:309
mythuibuttonlist.h
ScheduleCommon::ShowDetails
virtual void ShowDetails(void) const
Show the Program Details screen.
Definition: schedulecommon.cpp:33
ViewScheduled::m_player
TV * m_player
Definition: viewscheduled.h:87
MythDate::current
QDateTime current(bool stripped)
Returns current Date and Time in UTC.
Definition: mythdate.cpp:10
MythEvent::Message
const QString & Message() const
Definition: mythevent.h:65
ProgramInfo::GetRecordingStartTime
QDateTime GetRecordingStartTime(void) const
Approximate time the recording started.
Definition: programinfo.h:399
ScheduleCommon::EditRecording
virtual void EditRecording(bool may_watch_now=false)
Creates a dialog for editing the recording status, blocking until user leaves dialog.
Definition: schedulecommon.cpp:274
ScheduleCommon::EditScheduled
virtual void EditScheduled(void)
Creates a dialog for editing the recording schedule.
Definition: schedulecommon.cpp:166
MythScreenType::GetFocusWidget
MythUIType * GetFocusWidget(void) const
Definition: mythscreentype.cpp:112
programtypes.h
ViewScheduled::Load
void Load(void) override
Load data which will ultimately be displayed on-screen or used to determine what appears on-screen (S...
Definition: viewscheduled.cpp:106
InfoMap
QHash< QString, QString > InfoMap
Definition: mythtypes.h:15
MythObservable::addListener
void addListener(QObject *listener)
Add a listener to the observable.
Definition: mythobservable.cpp:38
TV::StartEmbedding
bool StartEmbedding(const QRect &embedRect)
Definition: tv_play.cpp:8459
AutoDeleteDeque::begin
iterator begin(void)
Definition: autodeletedeque.h:50
RecStatus::WillRecord
@ WillRecord
Definition: recStatus.h:31
MythUIButtonListItem
Definition: mythuibuttonlist.h:28
toString
QString toString(MarkTypes type)
Definition: programtypes.cpp:26
ScheduleCommon::ShowPrevious
virtual void ShowPrevious(void) const
Show the previous recordings for this recording rule.
Definition: schedulecommon.cpp:248
ViewScheduled::m_schedulesList
MythUIButtonList * m_schedulesList
Definition: viewscheduled.h:67
RecStatus::TooManyRecordings
@ TooManyRecordings
Definition: recStatus.h:37
ProgramInfo::GetScheduledStartTime
QDateTime GetScheduledStartTime(void) const
The scheduled start time of program.
Definition: programinfo.h:385
ScheduleCommon::EditCustom
virtual void EditCustom(void)
Creates a dialog for creating a custom recording rule.
Definition: schedulecommon.cpp:202
mythlogging.h
ProgramInfo::GetRecordingStatus
RecStatus::Type GetRecordingStatus(void) const
Definition: programinfo.h:442
ViewScheduled::Create
bool Create(void) override
Definition: viewscheduled.cpp:66
tv_actions.h
MythScreenType::SetFocusWidget
bool SetFocusWidget(MythUIType *widget=nullptr)
Definition: mythscreentype.cpp:117
MythDialogBox
Basic menu dialog, message and a list of options.
Definition: mythdialogbox.h:138
ViewScheduled::m_inFill
bool m_inFill
Definition: viewscheduled.h:73
MythScreenType::BuildFocusList
void BuildFocusList(void)
Definition: mythscreentype.cpp:222
hardwareprofile.scan.rating
def rating(profile, smoonURL, gate)
Definition: scan.py:39
RecStatus::Failing
@ Failing
Definition: recStatus.h:18
ACTION_CHANNELSEARCH
#define ACTION_CHANNELSEARCH
Definition: tv_actions.h:28
ViewScheduled::EmbedTVWindow
void EmbedTVWindow(void)
Definition: viewscheduled.cpp:569
MythUIComposite::SetTextFromMap
virtual void SetTextFromMap(const InfoMap &infoMap)
Definition: mythuicomposite.cpp:9
ScheduleCommon
Definition: schedulecommon.h:16
RecStatus::Aborted
@ Aborted
Definition: recStatus.h:28
RecStatus::Conflict
@ Conflict
Definition: recStatus.h:39
RecStatus::Failed
@ Failed
Definition: recStatus.h:23
ViewScheduled::m_recgroupList
QMap< QDate, ProgramList > m_recgroupList
Definition: viewscheduled.h:78
MythUIButtonList::SetLCDTitles
void SetLCDTitles(const QString &title, const QString &columnList="")
Definition: mythuibuttonlist.cpp:3038
RecStatus::Missed
@ Missed
Definition: recStatus.h:27
MythUIButtonListItem::GetData
QVariant GetData()
Definition: mythuibuttonlist.cpp:3588
gCoreContext
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
Definition: mythcorecontext.cpp:57
ViewScheduled::m_recList
ProgramList m_recList
Definition: viewscheduled.h:77
ViewScheduled::m_groupList
MythUIButtonList * m_groupList
Definition: viewscheduled.h:68
AutoDeleteDeque::end
iterator end(void)
Definition: autodeletedeque.h:51
ViewScheduled::ShowMenu
void ShowMenu(void) override
Definition: viewscheduled.cpp:197
ViewScheduled::m_conflictDate
QDate m_conflictDate
Definition: viewscheduled.h:63
MythScreenType::GetScreenStack
MythScreenStack * GetScreenStack() const
Definition: mythscreentype.cpp:233
ViewScheduled::RunViewScheduled
static void * RunViewScheduled(void *player, bool showTv)
Definition: viewscheduled.cpp:32
RecStatus::Offline
@ Offline
Definition: recStatus.h:44
ViewScheduled::setShowAll
void setShowAll(bool all)
Definition: viewscheduled.cpp:549
RecStatus::Pending
@ Pending
Definition: recStatus.h:17
MythDate::kSimplify
@ kSimplify
Do Today/Yesterday/Tomorrow transform.
Definition: mythdate.h:23
AutoDeleteDeque< ProgramInfo * >
ProgramInfo::GetInputID
uint GetInputID(void) const
Definition: programinfo.h:458
ViewScheduled::m_maxinput
uint m_maxinput
Definition: viewscheduled.h:84
ProgramList
AutoDeleteDeque< ProgramInfo * > ProgramList
Definition: programinfo.h:31
recordinginfo.h
ProgramInfo
Holds information on recordings and videos.
Definition: programinfo.h:68
MythUIText
All purpose text widget, displays a text string.
Definition: mythuitext.h:29
MythScreenType::keyPressEvent
bool keyPressEvent(QKeyEvent *event) override
Key event handler.
Definition: mythscreentype.cpp:414
RecStatus::Recording
@ Recording
Definition: recStatus.h:30
ViewScheduled::customEvent
void customEvent(QEvent *event) override
Definition: viewscheduled.cpp:575
RecStatus::DontRecord
@ DontRecord
Definition: recStatus.h:33
MythConfirmationDialog
Dialog asking for user confirmation. Ok and optional Cancel button.
Definition: mythdialogbox.h:222
mythcorecontext.h
XMLParseBase::LoadWindowFromXML
static bool LoadWindowFromXML(const QString &xmlfile, const QString &windowname, MythUIType *parent)
Definition: xmlparsebase.cpp:692
ViewScheduled::m_inEvent
bool m_inEvent
Definition: viewscheduled.h:72
RecStatus::EarlierShowing
@ EarlierShowing
Definition: recStatus.h:36
DialogCompletionEvent
Event dispatched from MythUI modal dialogs to a listening class containing a result of some form.
Definition: mythdialogbox.h:42
MythUIText::SetText
virtual void SetText(const QString &text)
Definition: mythuitext.cpp:134
ViewScheduled::m_conflictBool
bool m_conflictBool
Definition: viewscheduled.h:62
MythUIType::SetVisible
virtual void SetVisible(bool visible)
Definition: mythuitype.cpp:1085
MythScreenStack::PopScreen
virtual void PopScreen(MythScreenType *screen=nullptr, bool allowFade=true, bool deleteScreen=true)
Definition: mythscreenstack.cpp:83
ViewScheduled::~ViewScheduled
~ViewScheduled() override
Definition: viewscheduled.cpp:53
ProgramInfo::ToMap
virtual void ToMap(InfoMap &progMap, bool showrerecord=false, uint star_range=10) const
Converts ProgramInfo into QString QHash containing each field in ProgramInfo converted into localized...
Definition: programinfo.cpp:1464
ScheduleCommon::ShowUpcoming
virtual void ShowUpcoming(void) const
Show the upcoming recordings for this title.
Definition: schedulecommon.cpp:73
ViewScheduled::LoadList
void LoadList(bool useExistingData=false)
Definition: viewscheduled.cpp:230
MythUIButtonList::Reset
void Reset() override
Reset the widget to it's original state, should not reset changes made by the theme.
Definition: mythuibuttonlist.cpp:114
GetMythMainWindow
MythMainWindow * GetMythMainWindow(void)
Definition: mythmainwindow.cpp:107
RecStatus::Repeat
@ Repeat
Definition: recStatus.h:41
MythUIButtonList::SetItemCurrent
void SetItemCurrent(MythUIButtonListItem *item)
Definition: mythuibuttonlist.cpp:1557
build_compdb.action
action
Definition: build_compdb.py:9
MythDate::kDateFull
@ kDateFull
Default local time.
Definition: mythdate.h:16
ScheduleCommon::ShowChannelSearch
virtual void ShowChannelSearch(void) const
Show the channel search.
Definition: schedulecommon.cpp:113
AutoDeleteDeque::erase
iterator erase(iterator it)
Definition: autodeletedeque.h:34
ProgramInfo::GetRecordingPriority2
int GetRecordingPriority2(void) const
Definition: programinfo.h:436
ProgramInfo::GetRecordingRuleID
uint GetRecordingRuleID(void) const
Definition: programinfo.h:444
recordingrule.h
ViewScheduled::updateInfo
void updateInfo(MythUIButtonListItem *item)
Definition: viewscheduled.cpp:493
MythUIButtonList
List widget, displays list items in a variety of themeable arrangements and can trigger signals when ...
Definition: mythuibuttonlist.h:144
ViewScheduled::keyPressEvent
bool keyPressEvent(QKeyEvent *event) override
Key event handler.
Definition: viewscheduled.cpp:133
mythmainwindow.h
ViewScheduled::viewInputs
void viewInputs(void)
Definition: viewscheduled.cpp:555
ViewScheduled::ChangeGroup
void ChangeGroup(MythUIButtonListItem *item)
Definition: viewscheduled.cpp:364
MythScreenStack::AddScreen
virtual void AddScreen(MythScreenType *screen, bool allowFade=true)
Definition: mythscreenstack.cpp:49
MythObservable::removeListener
void removeListener(QObject *listener)
Remove a listener to the observable.
Definition: mythobservable.cpp:55
MythUIStateType
This widget is used for grouping other widgets for display when a particular named state is called....
Definition: mythuistatetype.h:23
MythCoreContext::SaveBoolSetting
void SaveBoolSetting(const QString &key, bool newValue)
Definition: mythcorecontext.h:148
AutoDeleteDeque::size
size_t size(void) const
Definition: autodeletedeque.h:67
MythUIStateType::DisplayState
bool DisplayState(const QString &name)
Definition: mythuistatetype.cpp:84
viewscheduled.h
tv_play.h
ViewScheduled::FillList
void FillList(void)
Definition: viewscheduled.cpp:377
TV
Control TV playback.
Definition: tv_play.h:281
ProgramInfo::GetStars
float GetStars(void) const
Definition: programinfo.h:437