MythTV  master
mythscreentype.cpp
Go to the documentation of this file.
1 
2 #include "mythscreentype.h"
3 
4 #include <QCoreApplication>
5 #include <QDomDocument>
6 #include <QInputMethodEvent>
7 #include <QRunnable>
8 #include <utility>
9 
14 
15 #include "mythscreenstack.h"
16 #include "mythmainwindow.h"
17 #include "mythuihelper.h"
18 #include "mythprogressdialog.h"
19 #include "mythuigroup.h"
20 #include "mythuistatetype.h"
21 #include "mythgesture.h"
22 #include "mythuitext.h"
23 
25 {
26  public:
27  explicit SemaphoreLocker(QSemaphore *lock) : m_lock(lock)
28  {
29  if (m_lock)
30  m_lock->acquire();
31  }
33  {
34  if (m_lock)
35  m_lock->release();
36  }
37  private:
38  QSemaphore *m_lock {nullptr};
39 };
40 
41 const QEvent::Type ScreenLoadCompletionEvent::kEventType =
42  (QEvent::Type) QEvent::registerEventType();
43 
44 class ScreenLoadTask : public QRunnable
45 {
46  public:
47  explicit ScreenLoadTask(MythScreenType &parent) : m_parent(parent) {}
48 
49  private:
50  void run(void) override // QRunnable
51  {
52  m_parent.Load();
53  m_parent.m_isLoaded = true;
54  m_parent.m_isLoading = false;
55  m_parent.m_loadLock.release();
56  }
57 
59 };
60 
62  MythScreenStack *parent, const QString &name, bool fullscreen) :
63  MythUIComposite(parent, name),
64  m_fullScreen(fullscreen),
65  m_screenStack(parent)
66 {
67  // Can be overridden, of course, but default to full sized.
69 
70  if (QCoreApplication::applicationName() == MYTH_APPNAME_MYTHFRONTEND)
72  QString("SCREEN_TYPE CREATED %1").arg(name));
73 }
74 
76  MythUIType *parent, const QString &name, bool fullscreen) :
77  MythUIComposite(parent, name),
78  m_fullScreen(fullscreen)
79 {
81 
82  if (QCoreApplication::applicationName() == MYTH_APPNAME_MYTHFRONTEND)
84  QString("SCREEN_TYPE CREATED %1").arg(name));
85 }
86 
88 {
89  if (QCoreApplication::applicationName() == MYTH_APPNAME_MYTHFRONTEND)
91  QString("SCREEN_TYPE DESTROYED %1").arg(objectName()));
92 
93  // locking ensures background screen load can finish running
94  SemaphoreLocker locker(&m_loadLock);
95 
96  m_currentFocusWidget = nullptr;
97  emit Exiting();
98 }
99 
101 {
102  return m_fullScreen;
103 }
104 
106 {
107  m_fullScreen = full;
108 }
109 
111 {
112  return m_currentFocusWidget;
113 }
114 
116 {
117  if (!widget || !widget->IsVisible(true))
118  {
119  for (auto *current : std::as_const(m_focusWidgetList))
120  {
121  if (current->CanTakeFocus() && current->IsVisible(true))
122  {
123  widget = current;
124  break;
125  }
126  }
127  }
128 
129  if (!widget)
130  return false;
131 
132  if (m_currentFocusWidget == widget)
133  return true;
134 
135  MythUIText *helpText = dynamic_cast<MythUIText *>(GetChild("helptext"));
136  if (helpText)
137  helpText->Reset();
138 
141  m_currentFocusWidget = widget;
143 
144  if (helpText && !widget->GetHelpText().isEmpty())
145  helpText->SetText(widget->GetHelpText());
146 
147  return true;
148 }
149 
151 {
152  if (!m_currentFocusWidget || m_focusWidgetList.isEmpty())
153  return SetFocusWidget(nullptr);
154  if (m_focusWidgetList.size() == 1)
155  return false;
156 
157  // Run the list from the current pointer to the end/begin and loop
158  // around back to itself. Start by geting an iterator pointing at
159  // the current focus (or at the end if the focus isn't in the
160  // list).
163  if (up)
164  {
165  if (it != m_focusWidgetList.end())
166  it++;
167  if (it == m_focusWidgetList.end())
168  it = m_focusWidgetList.begin();
169  // Put an upper limit on loops to guarantee exit at some point.
170  for (auto count = m_focusWidgetList.size() * 2; count > 0; count--)
171  {
172  MythUIType *current = *it;
173  if (current->IsVisible(true) && current->IsEnabled())
174  return SetFocusWidget(current);
175  it++;
176  if (it == m_focusWidgetList.end())
177  it = m_focusWidgetList.begin();
178  if (*it == m_currentFocusWidget)
179  return false;
180  }
181  }
182  else
183  {
184  if (it == m_focusWidgetList.begin())
185  it = m_focusWidgetList.end();
186  // Put an upper limit on loops to guarantee exit at some point.
187  for (auto count = m_focusWidgetList.size() * 2; count > 0; count--)
188  {
189  it--;
190  if (*it == m_currentFocusWidget)
191  return false;
192  MythUIType *current = *it;
193  if (current->IsVisible(true) && current->IsEnabled())
194  return SetFocusWidget(current);
195  if (it == m_focusWidgetList.begin())
196  it = m_focusWidgetList.end();
197  }
198  }
199 
200  return false;
201 }
202 
204 {
205  m_focusWidgetList.clear();
206  m_currentFocusWidget = nullptr;
207 
209 
210  if (!m_focusWidgetList.empty())
211  SetFocusWidget();
212 }
213 
215 {
216  return m_screenStack;
217 }
218 
220 {
221  if (!m_fullScreen)
222  {
223  if (!GetMythMainWindow()->GetPaintWindow()->mask().isEmpty())
224  {
225  // remove this screen's area from the mask so any embedded video is
226  // shown which was covered by this screen
227  if (!m_savedMask.isEmpty())
229  }
230  }
231 
233 }
234 
236 {
237  if (!m_fullScreen)
238  {
239  if (!GetMythMainWindow()->GetPaintWindow()->mask().isEmpty())
240  {
241  // add this screens area to the mask so any embedded video isn't
242  // shown in front of this screen
243  QRegion region = GetMythMainWindow()->GetPaintWindow()->mask();
244  m_savedMask = region;
245  region = region.united(QRegion(m_area));
246  GetMythMainWindow()->GetPaintWindow()->setMask(region);
247  }
248  }
249 
251 }
252 
254 {
255  return m_isDeleting;
256 }
257 
258 void MythScreenType::SetDeleting(bool deleting)
259 {
260  m_isDeleting = deleting;
261 }
262 
264 {
265  return true;
266 }
267 
279 {
280  // Virtual
281 }
282 
283 void MythScreenType::LoadInBackground(const QString& message)
284 {
285  m_loadLock.acquire();
286 
287  m_isLoading = true;
288  m_isLoaded = false;
289 
291 
292  OpenBusyPopup(message);
293 
294  auto *loadTask = new ScreenLoadTask(*this);
295  MThreadPool::globalInstance()->start(loadTask, "ScreenLoad");
296 }
297 
299 {
300  SemaphoreLocker locker(&m_loadLock);
301 
302  m_isLoading = true;
303  m_isLoaded = false;
304 
306  Load();
307  m_isLoaded = true;
308  m_isLoading = false;
309 }
310 
312 {
313  m_isInitialized = false;
315 }
316 
317 void MythScreenType::OpenBusyPopup(const QString& message)
318 {
319  if (m_busyPopup)
320  return;
321 
322  QString msg(tr("Loading..."));
323  if (!message.isEmpty())
324  msg = message;
325 
326  MythScreenStack *popupStack =
327  GetMythMainWindow()->GetStack("popup stack");
328  m_busyPopup =
329  new MythUIBusyDialog(msg, popupStack, "mythscreentypebusydialog");
330 
331  if (m_busyPopup->Create())
332  popupStack->AddScreen(m_busyPopup, false);
333 }
334 
336 {
337  if (m_busyPopup)
338  m_busyPopup->Close();
339  m_busyPopup = nullptr;
340 }
341 
342 void MythScreenType::SetBusyPopupMessage(const QString &message)
343 {
344  if (m_busyPopup)
345  m_busyPopup->SetMessage(message);
346 }
347 
349 {
350  if (m_busyPopup)
351  m_busyPopup->Reset();
352 }
353 
358 {
359  return m_isInitialized;
360 }
361 
363 {
364  SemaphoreLocker locker(&m_loadLock); // don't run while loading..
365 
366  CloseBusyPopup();
367  Init();
368  m_isInitialized = true;
369 }
370 
379 {
380  // Virtual
381 }
382 
384 {
385  CloseBusyPopup();
386  if (GetScreenStack())
387  GetScreenStack()->PopScreen(this);
388 }
389 
391 {
392  // Virtual
393 }
394 
395 bool MythScreenType::inputMethodEvent(QInputMethodEvent *event)
396 {
399 }
400 
401 bool MythScreenType::keyPressEvent(QKeyEvent *event)
402 {
403  if (!GetMythMainWindow()->IsExitingToMain() && m_currentFocusWidget &&
405  return true;
406 
407  bool handled = false;
408  QStringList actions;
409  handled = GetMythMainWindow()->TranslateKeyPress("Global", event, actions);
410 
411  for (int i = 0; i < actions.size() && !handled; i++)
412  {
413  const QString& action = actions[i];
414  handled = true;
415 
416  if (action == "LEFT" || action == "UP" || action == "PREVIOUS")
417  {
418  if (!NextPrevWidgetFocus(false))
419  handled = false;
420  }
421  else if (action == "RIGHT" || action == "DOWN" || action == "NEXT")
422  {
423  if (!NextPrevWidgetFocus(true))
424  handled = false;
425  }
426  else if (action == "ESCAPE")
427  {
428  Close();
429  }
430  else if (action == "MENU")
431  {
432  ShowMenu();
433  }
434  else if (action.startsWith("SYSEVENT"))
435  {
436  gCoreContext->SendSystemEvent(QString("KEY_%1").arg(action.mid(8)));
437  }
438  else if (action == ACTION_SCREENSHOT)
439  {
441  }
443  {
445  }
446  else
447  {
448  handled = false;
449  }
450  }
451 
452  return handled;
453 }
454 
456 {
457  bool handled = false;
458  if (event->GetGesture() == MythGestureEvent::Click)
459  {
460  switch (event->GetButton())
461  {
462  case Qt::RightButton:
463  ShowMenu();
464  handled = true;
465  break;
466  default :
467  break;
468  }
469 
470  }
471 
472  if (!handled)
473  {
474  MythUIType *clicked = GetChildAt(event->GetPosition());
475  if (clicked && clicked->IsEnabled())
476  {
477  SetFocusWidget(clicked);
478  if (clicked->gestureEvent(event))
479  handled = true;
480  }
481  }
482 
483  return handled;
484 }
485 
490  const QString &filename, QDomElement &element, bool showWarnings)
491 {
492  if (element.tagName() == "area")
493  {
494  MythRect rect = parseRect(element, false);
495  MythRect rectN = parseRect(element);
496  QRect screenArea = GetMythMainWindow()->GetUIScreenRect();
497 
498  if (rect.x() == -1)
499  rectN.moveLeft((screenArea.width() - rectN.width()) / 2);
500 
501  if (rect.y() == -1)
502  rectN.moveTop((screenArea.height() - rectN.height()) / 2);
503 
504  SetArea(rectN);
505 
506  m_fullScreen = (m_area.width() >= screenArea.width() &&
507  m_area.height() >= screenArea.height());
508  }
509  else
510  {
511  return MythUIType::ParseElement(filename, element, showWarnings);
512  }
513 
514  return true;
515 }
516 
521 {
522  auto *st = dynamic_cast<MythScreenType *>(base);
523  if (!st)
524  {
525  LOG(VB_GENERAL, LOG_ERR, "ERROR, bad parsing");
526  return;
527  }
528 
529  m_fullScreen = st->m_fullScreen;
530  m_isDeleting = false;
531 
532  MythUIType::CopyFrom(base);
533 
534  ConnectDependants(true);
535 
536  BuildFocusList();
537 };
538 
546 {
547  LOG(VB_GENERAL, LOG_ERR, "CreateCopy called on screentype - bad.");
548 }
549 
551 {
552  if (m_painter)
553  return m_painter;
554  if (m_screenStack)
556  return GetMythPainter();
557 }
MythUIType::keyPressEvent
virtual bool keyPressEvent(QKeyEvent *event)
Key event handler.
Definition: mythuitype.cpp:989
MythUIType::m_area
MythRect m_area
Definition: mythuitype.h:274
MythScreenType::LoadInBackground
void LoadInBackground(const QString &message="")
Definition: mythscreentype.cpp:283
MythGestureEvent::GetPosition
QPoint GetPosition() const
Definition: mythgesture.h:87
MythGestureEvent::Click
@ Click
Definition: mythgesture.h:77
MythScreenType::SetBusyPopupMessage
void SetBusyPopupMessage(const QString &message)
Definition: mythscreentype.cpp:342
MythUIType::AddFocusableChildrenToList
void AddFocusableChildrenToList(FocusInfoType &focusList)
Definition: mythuitype.cpp:1149
mythuitext.h
MythUIType::inputMethodEvent
virtual bool inputMethodEvent(QInputMethodEvent *event)
Input Method event handler.
Definition: mythuitype.cpp:998
MythScreenType::NextPrevWidgetFocus
virtual bool NextPrevWidgetFocus(bool up_or_down)
Definition: mythscreentype.cpp:150
MythUIText::Reset
void Reset(void) override
Reset the widget to it's original state, should not reset changes made by the theme.
Definition: mythuitext.cpp:65
MythUIScreenBounds::GetUIScreenRect
QRect GetUIScreenRect()
Definition: mythuiscreenbounds.cpp:198
MythUIType::ConnectDependants
void ConnectDependants(bool recurse=false)
Definition: mythuitype.cpp:1438
MythGestureEvent::GetGesture
Gesture GetGesture() const
Definition: mythgesture.h:85
MythUIType::GetChildAt
MythUIType * GetChildAt(QPoint p, bool recursive=true, bool focusable=true) const
Return the first MythUIType at the given coordinates.
Definition: mythuitype.cpp:241
MythGestureEvent::GetButton
Qt::MouseButton GetButton() const
Definition: mythgesture.h:88
ACTION_SCREENSHOT
static constexpr const char * ACTION_SCREENSHOT
Definition: mythuiactions.h:22
MythScreenType::Close
virtual void Close()
Definition: mythscreentype.cpp:383
MythScreenType::m_currentFocusWidget
MythUIType * m_currentFocusWidget
Definition: mythscreentype.h:124
MythUIType::GetChild
MythUIType * GetChild(const QString &name) const
Get a named child of this UIType.
Definition: mythuitype.cpp:138
mythscreenstack.h
MythUIBusyDialog::Create
bool Create(void) override
Definition: mythprogressdialog.cpp:32
MythScreenStack
Definition: mythscreenstack.h:16
MythScreenType::Create
virtual bool Create(void)
Definition: mythscreentype.cpp:263
MythMainWindow::HandleTVAction
void HandleTVAction(const QString &Action)
Definition: mythmainwindow.cpp:1521
MythUIType::SetArea
virtual void SetArea(const MythRect &rect)
Definition: mythuitype.cpp:610
MythScreenType::OpenBusyPopup
void OpenBusyPopup(const QString &message="")
Definition: mythscreentype.cpp:317
MythScreenType::ParseElement
bool ParseElement(const QString &filename, QDomElement &element, bool showWarnings) override
Parse the xml definition of this widget setting the state of the object accordingly.
Definition: mythscreentype.cpp:489
LOG
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
Definition: mythlogging.h:39
MythScreenType
Screen in which all other widgets are contained and rendered.
Definition: mythscreentype.h:45
mythuistatetype.h
MythUIType::m_focusOrder
int m_focusOrder
Definition: mythuitype.h:272
MythRect
Wrapper around QRect allowing us to handle percentage and other relative values for areas in mythui.
Definition: mythrect.h:17
MythScreenType::CopyFrom
void CopyFrom(MythUIType *base) override
Copy this widgets state from another.
Definition: mythscreentype.cpp:520
MythScreenType::Load
virtual void Load(void)
Load data which will ultimately be displayed on-screen or used to determine what appears on-screen (S...
Definition: mythscreentype.cpp:278
MythDate::current
QDateTime current(bool stripped)
Returns current Date and Time in UTC.
Definition: mythdate.cpp:15
mythprogressdialog.h
ScreenLoadTask::m_parent
MythScreenType & m_parent
Definition: mythscreentype.cpp:58
MythScreenType::GetFocusWidget
MythUIType * GetFocusWidget(void) const
Definition: mythscreentype.cpp:110
MythRect::moveLeft
void moveLeft(const QString &sX)
Definition: mythrect.cpp:309
MythScreenType::ResetBusyPopup
void ResetBusyPopup(void)
Definition: mythscreentype.cpp:348
MythUIType::ActivateAnimations
void ActivateAnimations(MythUIAnimation::Trigger trigger)
Definition: mythuitype.cpp:288
MythScreenType::ReloadInBackground
void ReloadInBackground(void)
Definition: mythscreentype.cpp:311
mythlogging.h
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:1111
SemaphoreLocker::m_lock
QSemaphore * m_lock
Definition: mythscreentype.cpp:38
MythUIType::LoseFocus
void LoseFocus()
Definition: mythuitype.cpp:1026
ACTION_TVPOWERON
static constexpr const char * ACTION_TVPOWERON
Definition: mythuiactions.h:25
MythCoreContext::SendSystemEvent
void SendSystemEvent(const QString &msg)
Definition: mythcorecontext.cpp:1552
MythUIType::IsEnabled
bool IsEnabled(void) const
Definition: mythuitype.h:117
MythScreenType::SetFocusWidget
bool SetFocusWidget(MythUIType *widget=nullptr)
Definition: mythscreentype.cpp:115
MythScreenType::GetPainter
MythPainter * GetPainter(void) override
Definition: mythscreentype.cpp:550
MythScreenType::BuildFocusList
void BuildFocusList(void)
Definition: mythscreentype.cpp:203
MythRect::moveTop
void moveTop(const QString &sY)
Definition: mythrect.cpp:319
MythScreenType::m_busyPopup
MythUIBusyDialog * m_busyPopup
Definition: mythscreentype.h:131
MythUIType::CopyFrom
virtual void CopyFrom(MythUIType *base)
Copy this widgets state from another.
Definition: mythuitype.cpp:1171
SemaphoreLocker::~SemaphoreLocker
~SemaphoreLocker()
Definition: mythscreentype.cpp:32
MythUIBusyDialog
Definition: mythprogressdialog.h:36
MythMainWindow::GetPaintWindow
QWidget * GetPaintWindow()
Definition: mythmainwindow.cpp:267
MythScreenStack::GetPainter
static MythPainter * GetPainter(void)
Definition: mythscreenstack.cpp:389
XMLParseBase::parseRect
static MythRect parseRect(const QString &text, bool normalize=true)
Definition: xmlparsebase.cpp:132
MythScreenType::Init
virtual void Init(void)
Used after calling Load() to assign data to widgets and other UI initilisation which is prohibited in...
Definition: mythscreentype.cpp:378
ACTION_TVPOWEROFF
static constexpr const char * ACTION_TVPOWEROFF
Definition: mythuiactions.h:24
MythScreenType::m_isInitialized
bool m_isInitialized
Definition: mythscreentype.h:122
gCoreContext
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
Definition: mythcorecontext.cpp:55
MythUIType::TakeFocus
bool TakeFocus()
Definition: mythuitype.cpp:1036
MythScreenType::m_focusWidgetList
FocusInfoType m_focusWidgetList
Definition: mythscreentype.h:128
MythScreenType::LoadInForeground
void LoadInForeground(void)
Definition: mythscreentype.cpp:298
MythScreenType::GetScreenStack
MythScreenStack * GetScreenStack() const
Definition: mythscreentype.cpp:214
MythScreenType::m_loadLock
QSemaphore m_loadLock
Definition: mythscreentype.h:119
mythgesture.h
A C++ ripoff of the stroke library for MythTV.
MythUIAnimation::AboutToShow
@ AboutToShow
Definition: mythuianimation.h:51
ScreenLoadTask::ScreenLoadTask
ScreenLoadTask(MythScreenType &parent)
Definition: mythscreentype.cpp:47
mythuigroup.h
MythUIType
The base class on which all widgets and screens are based.
Definition: mythuitype.h:85
MythScreenType::~MythScreenType
~MythScreenType() override
Definition: mythscreentype.cpp:87
mthreadpool.h
mythuihelper.h
MYTH_APPNAME_MYTHFRONTEND
static constexpr const char * MYTH_APPNAME_MYTHFRONTEND
Definition: mythcorecontext.h:21
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:401
MythScreenType::m_isDeleting
bool m_isDeleting
Definition: mythscreentype.h:117
MythScreenType::doInit
void doInit(void)
Definition: mythscreentype.cpp:362
MythScreenType::CreateCopy
void CreateCopy(MythUIType *parent) override
Copy the state of this widget to the one given, it must be of the same type.
Definition: mythscreentype.cpp:545
mythcorecontext.h
MythScreenType::ScreenLoadTask
friend class ScreenLoadTask
Definition: mythscreentype.h:49
MythScreenType::inputMethodEvent
bool inputMethodEvent(QInputMethodEvent *event) override
Input Method event handler.
Definition: mythscreentype.cpp:395
MythScreenType::m_isLoaded
volatile bool m_isLoaded
Definition: mythscreentype.h:121
MythPainter
Definition: mythpainter.h:34
MythUIType::gestureEvent
virtual bool gestureEvent(MythGestureEvent *event)
Mouse click/movement handler, receives mouse gesture events from the QCoreApplication event loop.
Definition: mythuitype.cpp:1013
MythScreenType::IsDeleting
bool IsDeleting(void) const
Definition: mythscreentype.cpp:253
SemaphoreLocker::SemaphoreLocker
SemaphoreLocker(QSemaphore *lock)
Definition: mythscreentype.cpp:27
MythUIText::SetText
virtual void SetText(const QString &text)
Definition: mythuitext.cpp:115
MythScreenType::m_isLoading
volatile bool m_isLoading
Definition: mythscreentype.h:120
MythUIBusyDialog::SetMessage
void SetMessage(const QString &message)
Definition: mythprogressdialog.cpp:45
MythScreenStack::PopScreen
virtual void PopScreen(MythScreenType *screen=nullptr, bool allowFade=true, bool deleteScreen=true)
Definition: mythscreenstack.cpp:86
MythScreenType::ShowMenu
virtual void ShowMenu(void)
Definition: mythscreentype.cpp:390
MythUIType::m_painter
MythPainter * m_painter
Definition: mythuitype.h:295
GetMythMainWindow
MythMainWindow * GetMythMainWindow(void)
Definition: mythmainwindow.cpp:104
build_compdb.action
action
Definition: build_compdb.py:9
MythUIAnimation::AboutToHide
@ AboutToHide
Definition: mythuianimation.h:51
MythScreenType::m_fullScreen
bool m_fullScreen
Definition: mythscreentype.h:116
MythMainWindow::IsExitingToMain
bool IsExitingToMain() const
Definition: mythmainwindow.cpp:1039
MythScreenType::Exiting
void Exiting()
MythScreenType::gestureEvent
bool gestureEvent(MythGestureEvent *event) override
Mouse click/movement handler, receives mouse gesture events from the QCoreApplication event loop.
Definition: mythscreentype.cpp:455
MythMainWindow::GetStack
MythScreenStack * GetStack(const QString &Stackname)
Definition: mythmainwindow.cpp:322
MythScreenStack::AllowReInit
void AllowReInit(void)
Definition: mythscreenstack.h:34
MythUIBusyDialog::Reset
void Reset(void) override
Reset the widget to it's original state, should not reset changes made by the theme.
Definition: mythprogressdialog.cpp:53
MythScreenType::m_savedMask
QRegion m_savedMask
Definition: mythscreentype.h:133
MythScreenType::aboutToHide
virtual void aboutToHide(void)
Definition: mythscreentype.cpp:219
MythScreenType::m_screenStack
MythScreenStack * m_screenStack
Definition: mythscreentype.h:130
MythGestureEvent
A custom event that represents a mouse gesture.
Definition: mythgesture.h:39
MythScreenType::SetDeleting
void SetDeleting(bool deleting)
Definition: mythscreentype.cpp:258
GetMythPainter
MythPainter * GetMythPainter(void)
Definition: mythmainwindow.cpp:119
MythScreenType::aboutToShow
virtual void aboutToShow(void)
Definition: mythscreentype.cpp:235
MythUIType::ParseElement
virtual bool ParseElement(const QString &filename, QDomElement &element, bool showWarnings)
Parse the xml definition of this widget setting the state of the object accordingly.
Definition: mythuitype.cpp:1237
MythMainWindow::ScreenShot
static bool ScreenShot(int Width=0, int Height=0, QString Filename="")
Definition: mythmainwindow.cpp:564
build_compdb.filename
filename
Definition: build_compdb.py:21
MThreadPool::globalInstance
static MThreadPool * globalInstance(void)
Definition: mthreadpool.cpp:307
mythmainwindow.h
SemaphoreLocker
Definition: mythscreentype.cpp:24
MythScreenStack::AddScreen
virtual void AddScreen(MythScreenType *screen, bool allowFade=true)
Definition: mythscreenstack.cpp:52
MythScreenType::IsInitialized
bool IsInitialized(void) const
Has Init() been called on this screen?
Definition: mythscreentype.cpp:357
MythScreenType::IsFullscreen
bool IsFullscreen(void) const
Definition: mythscreentype.cpp:100
MythUIType::IsVisible
bool IsVisible(bool recurse=false) const
Definition: mythuitype.cpp:903
MythUIType::MythScreenType
friend class MythScreenType
Definition: mythuitype.h:307
ScreenLoadTask::run
void run(void) override
Definition: mythscreentype.cpp:50
ScreenLoadCompletionEvent::kEventType
static const Type kEventType
Definition: mythscreentype.h:33
MythScreenType::CloseBusyPopup
void CloseBusyPopup(void)
Definition: mythscreentype.cpp:335
MThreadPool::start
void start(QRunnable *runnable, const QString &debugName, int priority=0)
Definition: mthreadpool.cpp:342
mythscreentype.h
ScreenLoadTask
Definition: mythscreentype.cpp:44
mythobservable.h
MythScreenType::SetFullscreen
void SetFullscreen(bool full)
Definition: mythscreentype.cpp:105
MythUIType::GetHelpText
QString GetHelpText(void) const
Definition: mythuitype.h:176
MythUIComposite
Definition: mythuicomposite.h:7