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