MythTV  master
mythdialogbox.cpp
Go to the documentation of this file.
1 
2 #include "mythdialogbox.h"
3 
4 #include <QCoreApplication>
5 #include <QDate>
6 #include <QDateTime>
7 #include <QFileInfo>
8 #include <QString>
9 #include <QStringList>
10 #include <QTime>
11 #include <utility>
12 
13 #include "libmythbase/mythdate.h"
15 
16 #include "mythmainwindow.h"
17 #include "mythfontproperties.h"
18 #include "mythuiutils.h"
19 #include "mythuitext.h"
20 #include "mythuiimage.h"
21 #include "mythuibuttonlist.h"
22 #include "mythuibutton.h"
23 #include "mythuistatetype.h"
24 #include "mythuispinbox.h"
25 #include "mythgesture.h"
26 
27 const QEvent::Type DialogCompletionEvent::kEventType =
28  (QEvent::Type) QEvent::registerEventType();
29 
30 // Force this class to have a vtable so that dynamic_cast works.
31 // NOLINTNEXTLINE(modernize-use-equals-default)
33 {
34 }
35 
36 MythMenu::MythMenu(QString text, QObject *retobject, QString resultid) :
37  m_text(std::move(text)), m_resultid(std::move(resultid)), m_retObject(retobject)
38 {
39  Init();
40 }
41 
42 MythMenu::MythMenu(QString title, QString text, QObject *retobject, QString resultid) :
43  m_title(std::move(title)), m_text(std::move(text)), m_resultid(std::move(resultid)),
44  m_retObject(retobject)
45 {
46  Init();
47 }
48 
50 {
51  while (!m_menuItems.isEmpty())
52  {
53  MythMenuItem *item = m_menuItems.takeFirst();
54 
55  delete item->m_subMenu;
56  delete item;
57  }
58 }
59 
60 void MythMenu::AddItemV(const QString &title, QVariant data, MythMenu *subMenu, bool selected, bool checked)
61 {
62  auto *item = new MythMenuItem(title, checked, subMenu);
63  item->SetData(std::move(data));
64  AddItem(item, selected, subMenu);
65 }
66 
67 // For non-class, static class, or lambda functions.
68 void MythMenu::AddItem(const QString &title, const MythUICallbackNMF &slot,
69  MythMenu *subMenu, bool selected, bool checked)
70 {
71  auto *item = new MythMenuItem(title, slot, checked, subMenu);
72  AddItem(item, selected, subMenu);
73 }
74 
75 void MythMenu::AddItem(MythMenuItem *item, bool selected, MythMenu *subMenu)
76 {
77  m_menuItems.append(item);
78 
79  if (selected)
80  m_selectedItem = m_menuItems.indexOf(item);
81 
82  if (subMenu)
83  subMenu->SetParent(this);
84 }
85 
86 void MythMenu::SetSelectedByTitle(const QString& title)
87 {
88  for (auto *item : std::as_const(m_menuItems))
89  {
90  if (!item)
91  continue;
92 
93  if (item->m_text == title)
94  {
95  m_selectedItem = m_menuItems.indexOf(item);
96  break;
97  }
98  }
99 }
100 
101 void MythMenu::SetSelectedByData(const QVariant& data)
102 {
103  for (auto *item : std::as_const(m_menuItems))
104  {
105  if (!item)
106  continue;
107 
108  if (item->m_data == data)
109  {
110  m_selectedItem = m_menuItems.indexOf(item);
111  break;
112  }
113  }
114 }
115 
117 
119 {
120  if (m_menu)
121  {
122  delete m_menu;
123  m_menu = nullptr;
124  }
125 }
126 
128 {
129  QString windowName = (m_fullscreen ? "MythDialogBox" : "MythPopupBox");
130 
131  if (m_osdDialog)
132  {
133  if (!XMLParseBase::LoadWindowFromXML("osd.xml", windowName, this))
134  return false;
135  }
136  else if (!CopyWindowFromBase(windowName, this))
137  return false;
138 
139  bool err = false;
140  if (m_fullscreen)
141  UIUtilW::Assign(this, m_titlearea, "title");
142  UIUtilE::Assign(this, m_textarea, "messagearea", &err);
143  UIUtilE::Assign(this, m_buttonList, "list", &err);
144 
145  if (err)
146  {
147  LOG(VB_GENERAL, LOG_ERR, QString("Cannot load screen '%1'")
148  .arg(windowName));
149  return false;
150  }
151 
152  if (m_titlearea)
155 
156  BuildFocusList();
157 
158  if (m_menu)
159  updateMenu();
160 
162  this, &MythDialogBox::Select);
163 
164  return true;
165 }
166 
168 {
169  m_menu = menu;
171  updateMenu();
172 }
173 
175 {
176  if (!m_buttonList)
177  {
178  LOG(VB_GENERAL, LOG_ERR, "UpdateMenu() called before we have a button list to update!");
179  return;
180  }
181 
182  if (!m_currentMenu)
183  return;
184 
185  if (m_titlearea)
187 
189 
190  m_buttonList->Reset();
191 
192  for (int x = 0; x < m_currentMenu->m_menuItems.count(); x++)
193  {
194  MythMenuItem *menuItem = m_currentMenu->m_menuItems.at(x);
195  auto *button = new MythUIButtonListItem(m_buttonList, menuItem->m_text);
196  button->SetData(QVariant::fromValue(menuItem));
197  button->setDrawArrow((menuItem->m_subMenu != nullptr));
198 
199  if (m_currentMenu->m_selectedItem == x)
200  m_buttonList->SetItemCurrent(button);
201  }
202  // GetVisibleCount here makes sure that the dialog size is
203  // calculated correctly
206 }
207 
209 {
210  if (!item)
211  return;
212 
213  if (m_currentMenu)
214  {
215  auto *menuItem = item->GetData().value< MythMenuItem * >();
216  if (menuItem == nullptr)
217  return;
218  if (menuItem->m_subMenu)
219  {
221  m_currentMenu = menuItem->m_subMenu;
222  updateMenu();
223  return;
224  }
225 
226  if (menuItem->m_useSlot)
227  {
228  const char *slot = menuItem->m_data.value < const char * >();
229  if (slot)
230  {
231  connect(this, SIGNAL(Selected()), m_currentMenu->m_retObject, slot,
232  Qt::QueuedConnection);
233  emit Selected();
234  }
235  else if (menuItem->m_data.value<MythUICallbackNMF>())
236  {
238  menuItem->m_data.value<MythUICallbackNMF>(),
239  Qt::QueuedConnection);
240  emit Selected();
241  }
242  else if (menuItem->m_data.value<MythUICallbackMF>())
243  {
245  menuItem->m_data.value<MythUICallbackMF>(),
246  Qt::QueuedConnection);
247  emit Selected();
248  }
249  else if (menuItem->m_data.value<MythUICallbackMFc>())
250  {
252  menuItem->m_data.value<MythUICallbackMFc>(),
253  Qt::QueuedConnection);
254  emit Selected();
255  }
256  }
257 
258  SendEvent(m_buttonList->GetItemPos(item), item->GetText(), menuItem->m_data);
259  }
260  else
261  {
262  if (m_useSlots)
263  {
264  const char *slot = item->GetData().value<const char *>();
265  if (slot)
266  {
267  connect(this, SIGNAL(Selected()), m_retObject, slot,
268  Qt::QueuedConnection);
269  emit Selected();
270  }
271  else if (item->GetData().value<MythUICallbackNMF>())
272  {
273  connect(this, &MythDialogBox::Selected, m_retObject,
274  item->GetData().value<MythUICallbackNMF>(),
275  Qt::QueuedConnection);
276  emit Selected();
277  }
278  else if (item->GetData().value<MythUICallbackMF>())
279  {
280  connect(this, &MythDialogBox::Selected, m_retObject,
281  item->GetData().value<MythUICallbackMF>(),
282  Qt::QueuedConnection);
283  emit Selected();
284  }
285  else if (item->GetData().value<MythUICallbackMFc>())
286  {
287  connect(this, &MythDialogBox::Selected, m_retObject,
288  item->GetData().value<MythUICallbackMFc>(),
289  Qt::QueuedConnection);
290  emit Selected();
291  }
292  }
293 
294  SendEvent(m_buttonList->GetItemPos(item), item->GetText(), item->GetData());
295  }
296 
297  if (m_screenStack)
298  m_screenStack->PopScreen(nullptr, false);
299 }
300 
301 void MythDialogBox::SetReturnEvent(QObject *retobject,
302  const QString &resultid)
303 {
304  m_retObject = retobject;
305  m_id = resultid;
306 }
307 
308 void MythDialogBox::SetBackAction(const QString &text, QVariant data)
309 {
310  m_backtext = text;
311  m_backdata = std::move(data);
312 }
313 
314 void MythDialogBox::SetExitAction(const QString &text, QVariant data)
315 {
316  m_exittext = text;
317  m_exitdata = std::move(data);
318 }
319 
320 void MythDialogBox::SetText(const QString &text)
321 {
322  if (m_textarea)
323  m_textarea->SetText(text);
324 }
325 
326 void MythDialogBox::AddButtonV(const QString &title, QVariant data, bool newMenu,
327  bool setCurrent)
328 {
329  auto *button = new MythUIButtonListItem(m_buttonList, title);
330  button->SetData(std::move(data));
331  button->setDrawArrow(newMenu);
332 
333  if (setCurrent)
334  m_buttonList->SetItemCurrent(button);
335  // GetVisibleCount here makes sure that the dialog size is
336  // calculated correctly
338 }
339 
340 bool MythDialogBox::inputMethodEvent(QInputMethodEvent *event)
341 {
342  return GetFocusWidget()->inputMethodEvent(event);
343 }
344 
345 bool MythDialogBox::keyPressEvent(QKeyEvent *event)
346 {
347  if (GetFocusWidget()->keyPressEvent(event))
348  return true;
349 
350  bool handled = false;
351  QStringList actions;
352  handled = GetMythMainWindow()->TranslateKeyPress("qt", event, actions);
353 
354  for (int i = 0; i < actions.size() && !handled; i++)
355  {
356  QString action = actions[i];
357  handled = true;
358 
359  if (action == "ESCAPE")
360  {
362  if (m_exitdata == 0 && m_exittext.isEmpty())
363  Close();
364  }
365  else if ((action == "LEFT" &&
367  (action == "UP" &&
369  {
371  {
373  updateMenu();
374  return true;
375  }
376 
378  Close();
379  }
380  else if (action == "MENU")
381  {
382  SendEvent(-2);
383  Close();
384  }
385  else if ((action == "RIGHT" &&
387  (action == "DOWN" &&
389  {
391  }
392  else
393  handled = false;
394  }
395 
396  if (!handled && MythScreenType::keyPressEvent(event))
397  handled = true;
398 
399  return handled;
400 }
401 
403 {
404  bool handled = false;
405  if (event->GetGesture() == MythGestureEvent::Click)
406  {
407  switch (event->GetButton())
408  {
409  case Qt::RightButton:
410  SendEvent(-2);
411  Close();
412  handled = true;
413  break;
414  default :
415  break;
416  }
417 
418  }
419 
420  if (!handled && MythScreenType::gestureEvent(event))
421  handled = true;
422 
423  return handled;
424 }
425 
426 void MythDialogBox::SendEvent(int res, const QString& text, const QVariant& data)
427 {
428  if (m_currentMenu)
429  {
430  emit Closed(m_currentMenu->m_resultid, res);
431 
433  return;
434 
435  auto *dce = new DialogCompletionEvent(m_currentMenu->m_resultid, res, text, data);
436  QCoreApplication::postEvent(m_currentMenu->m_retObject, dce);
437  }
438  else
439  {
440  emit Closed(m_id, res);
441 
442  if (!m_retObject)
443  return;
444 
445  auto *dce = new DialogCompletionEvent(m_id, res, text, data);
446  QCoreApplication::postEvent(m_retObject, dce);
447  }
448 }
449 
451 
453 {
454  if (!CopyWindowFromBase("MythConfirmationDialog", this))
455  return false;
456 
457  MythUIButton *okButton = nullptr;
458  MythUIButton *cancelButton = nullptr;
459 
460  bool err = false;
461  UIUtilE::Assign(this, m_messageText, "message", &err);
462  UIUtilE::Assign(this, okButton, "ok", &err);
463  UIUtilE::Assign(this, cancelButton, "cancel", &err);
464 
465  if (err)
466  {
467  LOG(VB_GENERAL, LOG_ERR, "Cannot load screen 'MythConfirmationDialog'");
468  return false;
469  }
470 
471  if (cancelButton && m_showCancel)
472  connect(cancelButton, &MythUIButton::Clicked, this, &MythConfirmationDialog::Cancel);
473  else if (cancelButton)
474  cancelButton->SetVisible(false);
475 
476  if (okButton)
477  connect(okButton, &MythUIButton::Clicked, this, &MythConfirmationDialog::Confirm);
478 
480 
481  BuildFocusList();
482 
483  if (m_showCancel)
484  SetFocusWidget(cancelButton);
485  else
486  SetFocusWidget(okButton);
487 
488  return true;
489 }
490 
492 {
493  if (GetFocusWidget()->keyPressEvent(event))
494  return true;
495 
496  bool handled = false;
497  QStringList actions;
498  handled = GetMythMainWindow()->TranslateKeyPress("qt", event, actions);
499 
500  for (int i = 0; i < actions.size() && !handled; i++)
501  {
502  QString action = actions[i];
503  handled = true;
504 
505  if (action == "ESCAPE")
506  sendResult(false);
507  else
508  handled = false;
509  }
510 
511  if (!handled && MythScreenType::keyPressEvent(event))
512  handled = true;
513 
514  return handled;
515 }
516 
517 void MythConfirmationDialog::SetMessage(const QString &message)
518 {
519  m_message = message;
520  if (m_messageText)
522 }
523 
525  const QString &resultid)
526 {
527  m_retObject = retobject;
528  m_id = resultid;
529 }
530 
532 {
533  sendResult(true);
534 }
535 
537 {
538  sendResult(false);
539 }
540 
542 {
543  emit haveResult(ok);
544 
545  if (m_retObject)
546  {
547  int res = 0;
548  if (ok)
549  res = 1;
550 
551  auto *dce = new DialogCompletionEvent(m_id, res, "", m_resultData);
552  QCoreApplication::postEvent(m_retObject, dce);
553  m_retObject = nullptr;
554  }
555 
556  Close();
557 }
558 
562 MythConfirmationDialog *ShowOkPopup(const QString &message, bool showCancel)
563 {
564  QString LOC = "ShowOkPopup('" + message + "') - ";
565  MythScreenStack *stk = nullptr;
566 
568 
569  if (win)
570  stk = win->GetStack("popup stack");
571  else
572  {
573  LOG(VB_GENERAL, LOG_ERR, LOC + "no main window?");
574  return nullptr;
575  }
576 
577  if (!stk)
578  {
579  LOG(VB_GENERAL, LOG_ERR, LOC + "no popup stack? "
580  "Is there a MythThemeBase?");
581  return nullptr;
582  }
583 
584  auto *pop = new MythConfirmationDialog(stk, message, showCancel);
585  if (pop->Create())
586  {
587  stk->AddScreen(pop);
588  }
589  else
590  {
591  delete pop;
592  pop = nullptr;
593  LOG(VB_GENERAL, LOG_ERR, LOC + "Couldn't Create() Dialog");
594  }
595 
596  return pop;
597 }
598 
600 {
601  if (!dialog)
602  return true; // No dialog is treated as user pressing OK
603 
604  // Local event loop processes events whilst we wait
605  QEventLoop block;
606 
607  // Quit when dialog exits
608  QObject::connect(dialog, &MythConfirmationDialog::haveResult,
609  &block, [&block](bool result)
610  { block.exit(result ? 1 : 0); });
611 
612  // Block and return dialog result
613  return block.exec() != 0;
614 }
615 
617 
619 {
620  if (!CopyWindowFromBase("MythTextInputDialog", this))
621  return false;
622 
623  MythUIText *messageText = nullptr;
624  MythUIButton *okButton = nullptr;
625  MythUIButton *cancelButton = nullptr;
626 
627  bool err = false;
628  UIUtilE::Assign(this, m_textEdit, "input", &err);
629  UIUtilE::Assign(this, messageText, "message", &err);
630  UIUtilE::Assign(this, okButton, "ok", &err);
631  UIUtilW::Assign(this, cancelButton, "cancel");
632 
633  if (err)
634  {
635  LOG(VB_GENERAL, LOG_ERR, "Cannot load screen 'MythTextInputDialog'");
636  return false;
637  }
638 
639  if (cancelButton)
640  connect(cancelButton, &MythUIButton::Clicked, this, &MythScreenType::Close);
641  if (okButton)
642  connect(okButton, &MythUIButton::Clicked, this, &MythTextInputDialog::sendResult);
643 
647 
648  if (messageText)
649  messageText->SetText(m_message);
650 
651  BuildFocusList();
652 
653  return true;
654 }
655 
656 void MythTextInputDialog::SetReturnEvent(QObject *retobject,
657  const QString &resultid)
658 {
659  m_retObject = retobject;
660  m_id = resultid;
661 }
662 
664 {
665  QString inputString = m_textEdit->GetText();
666  emit haveResult(inputString);
667 
668  if (m_retObject)
669  {
670  auto *dce = new DialogCompletionEvent(m_id, 0, inputString, "");
671  QCoreApplication::postEvent(m_retObject, dce);
672  }
673 
674  Close();
675 }
676 
678 
680  QString message)
681  : MythScreenType(parent, "mythspinboxpopup"),
682  m_message(std::move(message)),
683  m_id("")
684 {
685 }
686 
688 {
689  if (!CopyWindowFromBase("MythSpinBoxDialog", this))
690  return false;
691 
692  MythUIText *messageText = nullptr;
693  MythUIButton *okButton = nullptr;
694  MythUIButton *cancelButton = nullptr;
695 
696  bool err = false;
697  UIUtilE::Assign(this, m_spinBox, "input", &err);
698  UIUtilE::Assign(this, messageText, "message", &err);
699  UIUtilE::Assign(this, okButton, "ok", &err);
700  UIUtilW::Assign(this, cancelButton, "cancel");
701 
702  if (err)
703  {
704  LOG(VB_GENERAL, LOG_ERR, "Cannot load screen 'MythSpinBoxDialog'");
705  return false;
706  }
707 
708  if (cancelButton)
709  connect(cancelButton, &MythUIButton::Clicked, this, &MythScreenType::Close);
710  if (okButton)
711  connect(okButton, &MythUIButton::Clicked, this, &MythSpinBoxDialog::sendResult);
712 
713  if (messageText)
714  messageText->SetText(m_message);
715  BuildFocusList();
716 
717  return true;
718 }
719 
724 void MythSpinBoxDialog::SetRange(int low, int high, int step, uint pageMultiple)
725 {
726  m_spinBox->SetRange(low, high, step, pageMultiple);
727 }
728 
732 void MythSpinBoxDialog::AddSelection(const QString& label, int value)
733 {
734  m_spinBox->AddSelection(value, label);
735 }
736 
741 void MythSpinBoxDialog::SetValue (const QString & value)
742 {
743  m_spinBox->SetValue(value);
744 }
745 
750 {
751  m_spinBox->SetValue(value);
752 }
753 
754 void MythSpinBoxDialog::SetReturnEvent(QObject *retobject,
755  const QString &resultid)
756 {
757  m_retObject = retobject;
758  m_id = resultid;
759 }
760 
762 {
763  QString inputString = m_spinBox->GetValue();
764  emit haveResult(inputString);
765 
766  if (m_retObject)
767  {
768  auto *dce = new DialogCompletionEvent(m_id, 0, inputString, "");
769  QCoreApplication::postEvent(m_retObject, dce);
770  }
771 
772  Close();
773 }
774 
776 
778 {
779  if (!CopyWindowFromBase("MythSearchDialog", this))
780  return false;
781 
782  MythUIButton *okButton = nullptr;
783  MythUIButton *cancelButton = nullptr;
784 
785  bool err = false;
786  UIUtilE::Assign(this, m_textEdit, "input", &err);
787  UIUtilE::Assign(this, m_titleText, "title", &err);
788  UIUtilW::Assign(this, m_matchesText, "matches");
789  UIUtilE::Assign(this, m_itemList, "itemlist", &err);
790  UIUtilE::Assign(this, okButton, "ok", &err);
791  UIUtilW::Assign(this, cancelButton, "cancel");
792 
793  if (err)
794  {
795  LOG(VB_GENERAL, LOG_ERR, "Cannot load screen 'MythSearchDialog'");
796  return false;
797  }
798 
799  if (cancelButton)
800  connect(cancelButton, &MythUIButton::Clicked, this, &MythScreenType::Close);
801 
802  if (okButton)
803  connect(okButton, &MythUIButton::Clicked, this, &MythUISearchDialog::slotSendResult);
804 
807 
810 
812  if (m_matchesText)
813  m_matchesText->SetText(tr("%n match(es)", "", 0));
814 
815  BuildFocusList();
816 
817  slotUpdateList();
818 
819  return true;
820 }
821 
822 void MythUISearchDialog::SetReturnEvent(QObject *retobject,
823  const QString &resultid)
824 {
825  m_retObject = retobject;
826  m_id = resultid;
827 }
828 
830 {
831  if (!m_itemList->GetItemCurrent())
832  return;
833 
834  QString result = m_itemList->GetValue();
835 
836  emit haveResult(result);
837 
838  if (m_retObject)
839  {
840  auto *dce = new DialogCompletionEvent(m_id, 0, result, "");
841  QCoreApplication::postEvent(m_retObject, dce);
842  }
843 
844  Close();
845 }
846 
848 {
849  m_itemList->Reset();
850 
851  for (const QString& item : std::as_const(m_list))
852  {
853  if (m_matchAnywhere)
854  {
855  if (!item.contains(m_textEdit->GetText(), Qt::CaseInsensitive))
856  continue;
857  }
858  else
859  {
860  if (!item.startsWith(m_textEdit->GetText(), Qt::CaseInsensitive))
861  continue;
862  }
863 
864  // add item to list
865  new MythUIButtonListItem(m_itemList, item, nullptr, false);
866  }
867 
869 
870  if (m_matchesText)
871  m_matchesText->SetText(tr("%n match(es)", "", 0));
872 }
873 
875 
877  QString message,
878  int resolutionFlags,
879  QDateTime startTime,
880  int rangeLimit)
881  : MythScreenType(parent, "timepopup"),
882  m_message(std::move(message)), m_startTime(std::move(startTime)),
883  m_resolution(resolutionFlags), m_rangeLimit(rangeLimit)
884 {
885 }
886 
888 {
889  if (!CopyWindowFromBase("MythTimeInputDialog", this))
890  return false;
891 
892  MythUIText *messageText = nullptr;
893  MythUIButton *okButton = nullptr;
894 
895  bool err = false;
896  UIUtilE::Assign(this, messageText, "message", &err);
897  UIUtilE::Assign(this, m_dateList, "dates", &err);
898  UIUtilE::Assign(this, m_timeList, "times", &err);
899  UIUtilE::Assign(this, okButton, "ok", &err);
900 
901  if (err)
902  {
903  LOG(VB_GENERAL, LOG_ERR, "Cannot load screen 'MythTimeInputDialog'");
904  return false;
905  }
906 
907  m_dateList->SetVisible(false);
908  m_timeList->SetVisible(false);
909 
910  // Date
911  if (kNoDate != (m_resolution & 0xF))
912  {
913  const QDate startdate(m_startTime.toLocalTime().date());
914  QDate date(startdate);
915 
916  int limit = 0;
918  {
919  limit += m_rangeLimit;
920  }
921  if (m_resolution & kPastDates)
922  {
923  limit += m_rangeLimit;
924  date = date.addDays(0-m_rangeLimit);
925  }
926 
927  QString text;
928  bool selected = false;
929  for (int x = 0; x <= limit; x++)
930  {
931  selected = false;
932  if (m_resolution & kDay)
933  {
934  date = date.addDays(1);
936  if (m_rangeLimit >= 356)
937  flags |= MythDate::kAddYear;
938  text = MythDate::toString(date, flags);
939 
940  if (date == startdate)
941  selected = true;
942  }
943  else if (m_resolution & kMonth)
944  {
945  date = date.addMonths(1);
946  text = date.toString("MMM yyyy");
947 
948  if ((date.month() == startdate.month()) &&
949  (date.year() == startdate.year()))
950  selected = true;
951  }
952  else if (m_resolution & kYear)
953  {
954  date = date.addYears(1);
955  text = date.toString("yyyy");
956  if (date.year() == startdate.year())
957  selected = true;
958  }
959 
960  auto *item = new MythUIButtonListItem(m_dateList, text, nullptr, false);
961  item->SetData(QVariant(date));
962 
963  if (selected)
964  m_dateList->SetItemCurrent(item);
965  }
966  m_dateList->SetVisible(true);
967  }
968 
969  // Time
970  if (kNoTime != (m_resolution & 0xF0))
971  {
972  QDate startdate(m_startTime.toLocalTime().date());
973  QTime starttime(m_startTime.toLocalTime().time());
974  QTime time(0,0,0);
975  QString text;
976  bool selected = false;
977 
978  int limit = (m_resolution & kMinutes) ? (60 * 24) : 24;
979 
980  for (int x = 0; x < limit; x++)
981  {
982  selected = false;
983  if (m_resolution & kMinutes)
984  {
985  time = time.addSecs(60);
986  QDateTime dt = QDateTime(startdate, time, Qt::LocalTime);
988 
989  if (time == starttime)
990  selected = true;
991  }
992  else if (m_resolution & kHours)
993  {
994  time = time.addSecs(60*60);
995  text = time.toString("hh:00");
996 
997  if (time.hour() == starttime.hour())
998  selected = true;
999  }
1000 
1001  auto *item = new MythUIButtonListItem(m_timeList, text, nullptr, false);
1002  item->SetData(QVariant(time));
1003 
1004  if (selected)
1005  m_timeList->SetItemCurrent(item);
1006  }
1007  m_timeList->SetVisible(true);
1008  }
1009 
1010  if (messageText && !m_message.isEmpty())
1011  messageText->SetText(m_message);
1012 
1013  if (okButton)
1014  connect(okButton, &MythUIButton::Clicked, this, &MythTimeInputDialog::okClicked);
1015 
1016  BuildFocusList();
1017 
1018  return true;
1019 }
1020 
1021 void MythTimeInputDialog::SetReturnEvent(QObject* retobject,
1022  const QString& resultid)
1023 {
1024  m_retObject = retobject;
1025  m_id = resultid;
1026 }
1027 
1029 {
1030  QDate date = m_dateList->GetDataValue().toDate();
1031  QTime time = m_timeList->GetDataValue().toTime();
1032 
1033  QDateTime dateTime = QDateTime(date, time, Qt::LocalTime).toUTC();
1034 
1035  emit haveResult(dateTime);
1036 
1037  if (m_retObject)
1038  {
1039  QVariant data(dateTime);
1040  auto *dce = new DialogCompletionEvent(m_id, 0, "", data);
1041  QCoreApplication::postEvent(m_retObject, dce);
1042  }
1043 
1044  Close();
1045 }
MythUIButton::Clicked
void Clicked()
MythMenu::m_menuItems
QList< MythMenuItem * > m_menuItems
Definition: mythdialogbox.h:154
MythDialogBox::m_backdata
QVariant m_backdata
Definition: mythdialogbox.h:255
MythDialogBox::m_id
QString m_id
Definition: mythdialogbox.h:246
WaitFor
bool WaitFor(MythConfirmationDialog *dialog)
Blocks until confirmation dialog exits.
Definition: mythdialogbox.cpp:599
MythMainWindow::GetMainStack
MythScreenStack * GetMainStack()
Definition: mythmainwindow.cpp:318
MythDialogBox::SetReturnEvent
void SetReturnEvent(QObject *retobject, const QString &resultid)
Definition: mythdialogbox.cpp:301
MythDate::toString
QString toString(const QDateTime &raw_dt, uint format)
Returns formatted string representing the time.
Definition: mythdate.cpp:84
MythUIButtonList::GetItemCurrent
MythUIButtonListItem * GetItemCurrent() const
Definition: mythuibuttonlist.cpp:1591
MythUISearchDialog::m_title
QString m_title
Definition: mythdialogbox.h:437
MythTimeInputDialog::kHours
@ kHours
Definition: mythdialogbox.h:473
mythuitext.h
MythMenu::Init
void Init(void)
Definition: mythdialogbox.h:146
MythUIButtonList::GetLayout
LayoutType GetLayout() const
Definition: mythuibuttonlist.h:232
MythSpinBoxDialog::sendResult
void sendResult()
Definition: mythdialogbox.cpp:761
MythUIType::inputMethodEvent
virtual bool inputMethodEvent(QInputMethodEvent *event)
Input Method event handler.
Definition: mythuitype.cpp:1003
MythUISpinBox::GetValue
QString GetValue(void) const override
Definition: mythuispinbox.h:31
MythDialogBox::m_currentMenu
MythMenu * m_currentMenu
Definition: mythdialogbox.h:260
MythConfirmationDialog::Create
bool Create(void) override
Definition: mythdialogbox.cpp:452
MythUISearchDialog::m_titleText
MythUIText * m_titleText
Definition: mythdialogbox.h:434
MythSpinBoxDialog::Create
bool Create(void) override
Definition: mythdialogbox.cpp:687
MythGestureEvent::GetGesture
Gesture GetGesture() const
Definition: mythgesture.h:85
MythGestureEvent::GetButton
Qt::MouseButton GetButton() const
Definition: mythgesture.h:88
MythTimeInputDialog::m_id
QString m_id
Definition: mythdialogbox.h:508
MythConfirmationDialog::m_resultData
QVariant m_resultData
Definition: mythdialogbox.h:299
MythSpinBoxDialog::m_spinBox
MythUISpinBox * m_spinBox
Definition: mythdialogbox.h:374
MythTimeInputDialog::kDay
@ kDay
Definition: mythdialogbox.h:469
MythTextInputDialog::m_isPassword
bool m_isPassword
Definition: mythdialogbox.h:338
MythScreenType::Close
virtual void Close()
Definition: mythscreentype.cpp:386
MythDialogBox::m_titlearea
MythUIText * m_titlearea
Definition: mythdialogbox.h:242
MythDialogBox::SendEvent
void SendEvent(int res, const QString &text="", const QVariant &data=0)
Definition: mythdialogbox.cpp:426
MythUISearchDialog::slotSendResult
void slotSendResult(void)
Definition: mythdialogbox.cpp:829
MythDialogBox::m_textarea
MythUIText * m_textarea
Definition: mythdialogbox.h:243
MythSpinBoxDialog::m_id
QString m_id
Definition: mythdialogbox.h:378
MythSpinBoxDialog::MythSpinBoxDialog
MythSpinBoxDialog(MythScreenStack *parent, QString message)
Definition: mythdialogbox.cpp:679
MythMenu::SetSelectedByData
void SetSelectedByData(const QVariant &data)
Definition: mythdialogbox.cpp:101
MythTimeInputDialog::kYear
@ kYear
Definition: mythdialogbox.h:467
MythConfirmationDialog::SetReturnEvent
void SetReturnEvent(QObject *retobject, const QString &resultid)
Definition: mythdialogbox.cpp:524
MythDialogBox::m_fullscreen
bool m_fullscreen
Definition: mythdialogbox.h:249
MythTimeInputDialog::kPastDates
@ kPastDates
Definition: mythdialogbox.h:478
MythDialogBox::SetBackAction
void SetBackAction(const QString &text, QVariant data)
Definition: mythdialogbox.cpp:308
MythTextInputDialog::m_id
QString m_id
Definition: mythdialogbox.h:340
MythUISearchDialog::haveResult
void haveResult(QString)
MythUISearchDialog::SetReturnEvent
void SetReturnEvent(QObject *retobject, const QString &resultid)
Definition: mythdialogbox.cpp:822
MythMenu::AddItem
void AddItem(const QString &title)
Definition: mythdialogbox.h:110
LOC
#define LOC
Definition: audioconvert.cpp:41
MythConfirmationDialog::haveResult
void haveResult(bool)
mythdialogbox.h
MythScreenStack
Definition: mythscreenstack.h:16
MythDialogBox::m_useSlots
bool m_useSlots
Definition: mythdialogbox.h:247
MythTimeInputDialog::kMonth
@ kMonth
Definition: mythdialogbox.h:468
MythDialogBox::m_exitdata
QVariant m_exitdata
Definition: mythdialogbox.h:257
MythMenu::m_selectedItem
int m_selectedItem
Definition: mythdialogbox.h:155
MythUISearchDialog::m_matchAnywhere
bool m_matchAnywhere
Definition: mythdialogbox.h:440
MythTextInputDialog::m_message
QString m_message
Definition: mythdialogbox.h:335
MythTextInputDialog::m_defaultValue
QString m_defaultValue
Definition: mythdialogbox.h:336
LOG
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
Definition: mythlogging.h:39
MythDialogBox::Closed
void Closed(QString, int)
MythScreenType
Screen in which all other widgets are contained and rendered.
Definition: mythscreentype.h:45
mythuistatetype.h
MythUITextEdit::GetText
QString GetText(void) const
Definition: mythuitextedit.h:50
MythSpinBoxDialog::AddSelection
void AddSelection(const QString &label, int value)
Definition: mythdialogbox.cpp:732
MythConfirmationDialog::sendResult
void sendResult(bool ok)
Definition: mythdialogbox.cpp:541
MythUICallbackNMF
std::function< void(void)> MythUICallbackNMF
Definition: mythuitype.h:42
MythTextInputDialog::haveResult
void haveResult(QString)
MythConfirmationDialog::m_showCancel
bool m_showCancel
Definition: mythdialogbox.h:296
MythConfirmationDialog::Confirm
void Confirm(void)
Definition: mythdialogbox.cpp:531
MythDialogBox::Select
void Select(MythUIButtonListItem *item)
Definition: mythdialogbox.cpp:208
MythUISpinBox::SetRange
void SetRange(int low, int high, int step, uint pageMultiple=5)
Set the lower and upper bounds of the spinbox, the interval and page amount.
Definition: mythuispinbox.cpp:26
MythConfirmationDialog::m_message
QString m_message
Definition: mythdialogbox.h:295
mythuibuttonlist.h
MythUISearchDialog::Create
bool Create(void) override
Definition: mythdialogbox.cpp:777
MythTextInputDialog::m_textEdit
MythUITextEdit * m_textEdit
Definition: mythdialogbox.h:334
MythSpinBoxDialog::m_message
QString m_message
Definition: mythdialogbox.h:375
mythuiimage.h
MythConfirmationDialog::keyPressEvent
bool keyPressEvent(QKeyEvent *event) override
Key event handler.
Definition: mythdialogbox.cpp:491
MythTimeInputDialog::SetReturnEvent
void SetReturnEvent(QObject *retobject, const QString &resultid)
Definition: mythdialogbox.cpp:1021
MythMenuItem::m_subMenu
MythMenu * m_subMenu
Definition: mythdialogbox.h:92
MythMenu::SetSelectedByTitle
void SetSelectedByTitle(const QString &title)
Definition: mythdialogbox.cpp:86
MythScreenType::GetFocusWidget
MythUIType * GetFocusWidget(void) const
Definition: mythscreentype.cpp:113
MythTextInputDialog::m_filter
InputFilter m_filter
Definition: mythdialogbox.h:337
MythUIButtonList::GetItemPos
int GetItemPos(MythUIButtonListItem *item) const
Definition: mythuibuttonlist.cpp:1699
MythSpinBoxDialog::haveResult
void haveResult(QString)
mythuiutils.h
MythUIButtonListItem
Definition: mythuibuttonlist.h:41
MythUISpinBox::SetValue
void SetValue(int val) override
Definition: mythuispinbox.h:26
MythUITextEdit::SetText
void SetText(const QString &text, bool moveCursor=true)
Definition: mythuitextedit.cpp:197
MythUICallbackMF
void(QObject::*)(void) MythUICallbackMF
Definition: mythuitype.h:44
mythdate.h
MythMenuItem::m_text
QString m_text
Definition: mythdialogbox.h:89
MythDialogBox::keyPressEvent
bool keyPressEvent(QKeyEvent *event) override
Key event handler.
Definition: mythdialogbox.cpp:345
MythDialogBox::m_osdDialog
bool m_osdDialog
Definition: mythdialogbox.h:250
mythfontproperties.h
MythTimeInputDialog::kNoDate
@ kNoDate
Definition: mythdialogbox.h:466
mythlogging.h
MythTimeInputDialog::MythTimeInputDialog
MythTimeInputDialog(MythScreenStack *parent, QString message, int resolutionFlags, QDateTime startTime=QDateTime::currentDateTime(), int rangeLimit=14)
Definition: mythdialogbox.cpp:876
MythTimeInputDialog::kNoTime
@ kNoTime
Definition: mythdialogbox.h:472
MythDialogBox::m_text
QString m_text
Definition: mythdialogbox.h:252
MythDialogBox::SetMenuItems
void SetMenuItems(MythMenu *menu)
Definition: mythdialogbox.cpp:167
MythUIButtonList::itemClicked
void itemClicked(MythUIButtonListItem *item)
MythMainWindow::TranslateKeyPress
bool TranslateKeyPress(const QString &Context, QKeyEvent *Event, QStringList &Actions, bool AllowJumps=true)
Get a list of actions for a keypress in the given context.
Definition: mythmainwindow.cpp:1112
MythUIButtonList::GetCurrentPos
int GetCurrentPos() const
Definition: mythuibuttonlist.h:238
MythDialogBox::m_buttonList
MythUIButtonList * m_buttonList
Definition: mythdialogbox.h:244
MythScreenType::SetFocusWidget
bool SetFocusWidget(MythUIType *widget=nullptr)
Definition: mythscreentype.cpp:118
MythDialogBox::SetExitAction
void SetExitAction(const QString &text, QVariant data)
Definition: mythdialogbox.cpp:314
menu
static MythThemedMenu * menu
Definition: mythtv-setup.cpp:58
MythTimeInputDialog::m_rangeLimit
int m_rangeLimit
Definition: mythdialogbox.h:500
MythTimeInputDialog::m_timeList
MythUIButtonList * m_timeList
Definition: mythdialogbox.h:505
MythDialogBox::Create
bool Create(void) override
Definition: mythdialogbox.cpp:127
MythDialogBox::SetText
void SetText(const QString &text)
Definition: mythdialogbox.cpp:320
MythScreenType::BuildFocusList
void BuildFocusList(void)
Definition: mythscreentype.cpp:206
MythTimeInputDialog::okClicked
void okClicked(void)
Definition: mythdialogbox.cpp:1028
XMLParseBase::CopyWindowFromBase
static bool CopyWindowFromBase(const QString &windowname, MythScreenType *win)
Definition: xmlparsebase.cpp:912
MythMenu::m_parentMenu
MythMenu * m_parentMenu
Definition: mythdialogbox.h:149
MythUIButton
A single button widget.
Definition: mythuibutton.h:21
MythMenuItem
Definition: mythdialogbox.h:67
MythTimeInputDialog::kMinutes
@ kMinutes
Definition: mythdialogbox.h:474
MythTextInputDialog::m_retObject
QObject * m_retObject
Definition: mythdialogbox.h:339
MythDialogBox::gestureEvent
bool gestureEvent(MythGestureEvent *event) override
Mouse click/movement handler, receives mouse gesture events from the QCoreApplication event loop.
Definition: mythdialogbox.cpp:402
MythUIButtonList::GetDataValue
QVariant GetDataValue() const
Definition: mythuibuttonlist.cpp:1620
MythGestureEvent::Click
@ Click
Definition: mythgesture.h:77
MythUITextEdit::SetPassword
void SetPassword(bool isPassword)
Definition: mythuitextedit.h:53
MythTimeInputDialog::m_dateList
MythUIButtonList * m_dateList
Definition: mythdialogbox.h:504
MythMenu::MythMenu
MythMenu(QString text, QObject *retobject, QString resultid)
Definition: mythdialogbox.cpp:36
MythSpinBoxDialog::m_retObject
QObject * m_retObject
Definition: mythdialogbox.h:377
MythTimeInputDialog::haveResult
void haveResult(QDateTime time)
MythUITextEdit::SetFilter
void SetFilter(InputFilter filter)
Definition: mythuitextedit.h:52
MythUIButtonListItem::GetData
QVariant GetData()
Definition: mythuibuttonlist.cpp:3660
uint
unsigned int uint
Definition: compat.h:81
MythUIButtonList::GetVisibleCount
int GetVisibleCount()
Definition: mythuibuttonlist.cpp:1661
MythSpinBoxDialog::SetValue
void SetValue(const QString &value)
Can be called only after MythSpinBoxDialog::Create() return successfully The range need to be set bef...
Definition: mythdialogbox.cpp:741
mythgesture.h
A C++ ripoff of the stroke library for MythTV.
UIUtilDisp::Assign
static bool Assign(ContainerType *container, UIType *&item, const QString &name, bool *err=nullptr)
Definition: mythuiutils.h:27
MythMenu::m_text
QString m_text
Definition: mythdialogbox.h:151
MythUISearchDialog::m_textEdit
MythUITextEdit * m_textEdit
Definition: mythdialogbox.h:433
MythMenu::m_resultid
QString m_resultid
Definition: mythdialogbox.h:152
MythMenu::SetParent
void SetParent(MythMenu *parent)
Definition: mythdialogbox.h:141
MythDate::kSimplify
@ kSimplify
Do Today/Yesterday/Tomorrow transform.
Definition: mythdate.h:26
MythDialogBox::inputMethodEvent
bool inputMethodEvent(QInputMethodEvent *event) override
Input Method event handler.
Definition: mythdialogbox.cpp:340
MythUIButtonListItem::GetText
QString GetText(const QString &name="") const
Definition: mythuibuttonlist.cpp:3315
mythuispinbox.h
MythDialogBox::m_title
QString m_title
Definition: mythdialogbox.h:251
MythDialogBox::AddButtonV
void AddButtonV(const QString &title, QVariant data=0, bool newMenu=false, bool setCurrent=false)
Definition: mythdialogbox.cpp:326
MythSpinBoxDialog::SetRange
void SetRange(int low, int high, int step, uint pageMultiple=5)
Set the lower and upper bounds of the spinbox, the interval and page amount.
Definition: mythdialogbox.cpp:724
MythMenu
Definition: mythdialogbox.h:99
MythDialogBox::Selected
void Selected()
MythUISearchDialog::m_defaultValue
QString m_defaultValue
Definition: mythdialogbox.h:438
MythTimeInputDialog::m_startTime
QDateTime m_startTime
Definition: mythdialogbox.h:498
MythUIText
All purpose text widget, displays a text string.
Definition: mythuitext.h:28
MythScreenType::keyPressEvent
bool keyPressEvent(QKeyEvent *event) override
Key event handler.
Definition: mythscreentype.cpp:404
MythMenu::m_title
QString m_title
Definition: mythdialogbox.h:150
MythUISearchDialog::slotUpdateList
void slotUpdateList(void)
Definition: mythdialogbox.cpp:847
MythDate::kAddYear
@ kAddYear
Add year to string if not included.
Definition: mythdate.h:25
MythConfirmationDialog
Dialog asking for user confirmation. Ok and optional Cancel button.
Definition: mythdialogbox.h:272
MythTimeInputDialog::m_resolution
int m_resolution
Definition: mythdialogbox.h:499
MythUIButtonList::LayoutVertical
@ LayoutVertical
Definition: mythuibuttonlist.h:207
MythTextInputDialog::Create
bool Create(void) override
Definition: mythdialogbox.cpp:618
XMLParseBase::LoadWindowFromXML
static bool LoadWindowFromXML(const QString &xmlfile, const QString &windowname, MythUIType *parent)
Definition: xmlparsebase.cpp:687
MythUISearchDialog::m_retObject
QObject * m_retObject
Definition: mythdialogbox.h:442
std
Definition: mythchrono.h:23
MythConfirmationDialog::m_messageText
MythUIText * m_messageText
Definition: mythdialogbox.h:294
DialogCompletionEvent
Event dispatched from MythUI modal dialogs to a listening class containing a result of some form.
Definition: mythdialogbox.h:41
MythUISearchDialog::m_itemList
MythUIButtonList * m_itemList
Definition: mythdialogbox.h:432
MythTimeInputDialog::Create
bool Create() override
Definition: mythdialogbox.cpp:887
MythConfirmationDialog::m_retObject
QObject * m_retObject
Definition: mythdialogbox.h:297
MythUIButtonList::GetValue
virtual QString GetValue() const
Definition: mythuibuttonlist.cpp:1610
MythUIText::SetText
virtual void SetText(const QString &text)
Definition: mythuitext.cpp:132
MythUIType::SetVisible
virtual void SetVisible(bool visible)
Definition: mythuitype.cpp:1110
MythTextInputDialog::SetReturnEvent
void SetReturnEvent(QObject *retobject, const QString &resultid)
Definition: mythdialogbox.cpp:656
MythScreenStack::PopScreen
virtual void PopScreen(MythScreenType *screen=nullptr, bool allowFade=true, bool deleteScreen=true)
Definition: mythscreenstack.cpp:86
DialogCompletionEvent::~DialogCompletionEvent
~DialogCompletionEvent() override
Definition: mythdialogbox.cpp:32
DialogCompletionEvent::kEventType
static const Type kEventType
Definition: mythdialogbox.h:57
MythConfirmationDialog::m_id
QString m_id
Definition: mythdialogbox.h:298
MythUIButtonList::Reset
void Reset() override
Reset the widget to it's original state, should not reset changes made by the theme.
Definition: mythuibuttonlist.cpp:116
GetMythMainWindow
MythMainWindow * GetMythMainWindow(void)
Definition: mythmainwindow.cpp:104
MythUISearchDialog::m_list
QStringList m_list
Definition: mythdialogbox.h:439
MythTimeInputDialog::m_retObject
QObject * m_retObject
Definition: mythdialogbox.h:507
MythUISearchDialog::m_matchesText
MythUIText * m_matchesText
Definition: mythdialogbox.h:435
MythDialogBox::m_backtext
QString m_backtext
Definition: mythdialogbox.h:254
MythUIButtonList::SetItemCurrent
void SetItemCurrent(MythUIButtonListItem *item)
Definition: mythuibuttonlist.cpp:1558
MythSpinBoxDialog::SetReturnEvent
void SetReturnEvent(QObject *retobject, const QString &resultid)
Definition: mythdialogbox.cpp:754
build_compdb.action
action
Definition: build_compdb.py:9
MythMenu::~MythMenu
~MythMenu(void)
Definition: mythdialogbox.cpp:49
MythConfirmationDialog::SetMessage
void SetMessage(const QString &message)
Definition: mythdialogbox.cpp:517
mythuibutton.h
MythScreenType::gestureEvent
bool gestureEvent(MythGestureEvent *event) override
Mouse click/movement handler, receives mouse gesture events from the QCoreApplication event loop.
Definition: mythscreentype.cpp:446
MythMainWindow::GetStack
MythScreenStack * GetStack(const QString &Stackname)
Definition: mythmainwindow.cpp:323
MythDate::kDateFull
@ kDateFull
Default local time.
Definition: mythdate.h:19
MythUITextEdit::valueChanged
void valueChanged()
MythTimeInputDialog::kFutureDates
@ kFutureDates
Definition: mythdialogbox.h:477
MythMenu::m_retObject
QObject * m_retObject
Definition: mythdialogbox.h:153
MythScreenType::m_screenStack
MythScreenStack * m_screenStack
Definition: mythscreentype.h:130
MythGestureEvent
A custom event that represents a mouse gesture.
Definition: mythgesture.h:39
MythDialogBox::~MythDialogBox
~MythDialogBox(void) override
Definition: mythdialogbox.cpp:118
MythUICallbackMFc
void(QObject::*)(void) const MythUICallbackMFc
Definition: mythuitype.h:45
MythDate::kTime
@ kTime
Default local time.
Definition: mythdate.h:22
MythUIButtonList::LayoutHorizontal
@ LayoutHorizontal
Definition: mythuibuttonlist.h:207
MythDialogBox::updateMenu
void updateMenu(void)
Definition: mythdialogbox.cpp:174
mythmainwindow.h
MythScreenStack::AddScreen
virtual void AddScreen(MythScreenType *screen, bool allowFade=true)
Definition: mythscreenstack.cpp:52
MythUIType::SetRedraw
void SetRedraw(void)
Definition: mythuitype.cpp:310
MythDialogBox::m_exittext
QString m_exittext
Definition: mythdialogbox.h:256
MythUISpinBox::AddSelection
void AddSelection(int value, const QString &label="")
Add a special label for a value of the spinbox, it does not need to be in the range.
Definition: mythuispinbox.cpp:96
ShowOkPopup
MythConfirmationDialog * ShowOkPopup(const QString &message, bool showCancel)
Non-blocking version of MythPopupBox::showOkPopup()
Definition: mythdialogbox.cpp:562
MythTimeInputDialog::m_message
QString m_message
Definition: mythdialogbox.h:497
MythUISearchDialog::m_id
QString m_id
Definition: mythdialogbox.h:443
MythConfirmationDialog::Cancel
void Cancel()
Definition: mythdialogbox.cpp:536
MythMainWindow
Definition: mythmainwindow.h:28
MythTextInputDialog::sendResult
void sendResult()
Definition: mythdialogbox.cpp:663
MythMenu::AddItemV
void AddItemV(const QString &title, QVariant data=0, MythMenu *subMenu=nullptr, bool selected=false, bool checked=false)
Definition: mythdialogbox.cpp:60
MythDialogBox::m_retObject
QObject * m_retObject
Definition: mythdialogbox.h:245
MythScreenStack::GetTopScreen
virtual MythScreenType * GetTopScreen(void) const
Definition: mythscreenstack.cpp:182
MythDialogBox::m_menu
MythMenu * m_menu
Definition: mythdialogbox.h:259