MythTV master
mythmainwindow.h
Go to the documentation of this file.
1#ifndef MYTHMAINWINDOW_H_
2#define MYTHMAINWINDOW_H_
3
4// Qt
5#include <QTimer>
6
7// MythTV
10#include "libmythui/mythrect.h"
14
15class QEvent;
16class MythThemeBase;
17class MythMediaDevice;
18
19using MediaPlayCallback = int (*)(const QString& , const QString& , const QString& , const QString& , const QString& , int, int, const QString& , std::chrono::minutes, const QString& , const QString& , bool);
20
22class MythDisplay;
26class MythRender;
27
29{
30 Q_OBJECT
31
34 friend class MythPainterWindowQt;
35
36 public:
37 bool eventFilter(QObject* Watched, QEvent* Event) override;
38
39 void Init(bool MayReInit = true);
40 void Show();
41 void MoveResize(QRect& Geometry);
42
43 void AddScreenStack(MythScreenStack* Stack, bool Main = false);
44 void PopScreenStack();
45 int GetStackCount();
46 MythScreenStack* GetMainStack();
47 MythScreenStack* GetStack(const QString& Stackname);
48 MythScreenStack* GetStackAt(int Position);
49
50 bool TranslateKeyPress(const QString& Context, QKeyEvent* Event,
51 QStringList& Actions, bool AllowJumps = true);
52 bool KeyLongPressFilter(QEvent** Event, QScopedPointer<QEvent>& NewEvent);
53
54 void ReloadKeys();
55 void ClearKey(const QString& Context, const QString& Action);
56 void ClearKeyContext(const QString& Context);
57 void BindKey(const QString& Context, const QString& Action, const QString& Key);
58 void RegisterKey(const QString& Context, const QString& Action,
59 const QString& Description, const QString& Key);
60 static QString GetKey(const QString& Context, const QString& Action);
61 QObject* GetTarget(QKeyEvent& Key);
62 QString GetActionText(const QString& Context, const QString& Action) const;
63
64 void ClearJump(const QString& Destination);
65 void BindJump(const QString& Destination, const QString& Key);
66 void RegisterJump(const QString& Destination, const QString& Description,
67 const QString& Key, void (*Callback)(void),
68 bool Exittomain = true, QString LocalAction = "");
69 void ClearAllJumps();
70 void RegisterMediaPlugin(const QString& Name, const QString& Desc,
72 bool HandleMedia(const QString& Handler, const QString& Mrl,
73 const QString& Plot="", const QString& Title="",
74 const QString& Subtitle="", const QString& Director="",
75 int Season=0, int Episode=0, const QString& Inetref="",
76 std::chrono::minutes LenMins=2h, const QString& Year="1895",
77 const QString& Id="", bool UseBookmarks = false);
78 void HandleTVAction(const QString& Action);
79
80 void JumpTo(const QString& Destination, bool Pop = true);
81 bool DestinationExists(const QString& Destination) const;
82 QStringList EnumerateDestinations() const;
83
84 bool IsExitingToMain() const;
85
86 static MythMainWindow *getMainWindow(bool UseDB = true);
87 static void destroyMainWindow();
88
89 MythDisplay* GetDisplay();
90 MythPainter* GetPainter();
91 QWidget* GetPaintWindow();
93 MythNotificationCenter* GetCurrentNotificationCenter();
94 void ShowPainterWindow();
95 void HidePainterWindow();
96 static void GrabWindow(QImage& Image);
97 static bool SaveScreenShot(const QImage& Image, QString Filename = "");
98 static bool ScreenShot(int Width = 0, int Height = 0, QString Filename = "");
99 static void RestoreScreensaver();
100 static void DisableScreensaver();
101 static void ResetScreensaver();
102 static bool IsScreensaverAsleep();
103 static bool IsTopScreenInitialized();
104 void RemoteScreenShot(QString Filename, int Width, int Height);
105 void AllowInput(bool Allow);
106 void RestartInputHandlers();
107 uint PushDrawDisabled();
108 uint PopDrawDisabled();
109 void SetEffectsEnabled(bool Enable);
110 void Draw(MythPainter* Painter = nullptr);
111 void ResetIdleTimer();
112 void PauseIdleTimer(bool Pause);
113 void DisableIdleTimer(bool DisableIdle = true);
114 void EnterStandby(bool Manual = true);
115 void ExitStandby(bool Manual = true);
116
117 QPaintEngine* paintEngine() const override;
118
119 public slots:
120 void MouseTimeout();
121 void HideMouseTimeout();
122 void IdleTimeout();
123
124 protected slots:
125 void Animate();
126 void DoRemoteScreenShot(const QString& Filename, int Width, int Height);
127 void SetDrawEnabled(bool Enable);
128 void OnApplicationStateChange(Qt::ApplicationState State);
129
130 signals:
131 void SignalRemoteScreenShot(QString Filename, int Width, int Height);
132 void SignalSetDrawEnabled(bool Enable);
137
138 protected:
139 explicit MythMainWindow(bool UseDB = true);
140 ~MythMainWindow() override;
141
142 static void LoadQtConfig();
143 void InitKeys();
144
145 void customEvent(QEvent* Event) override;
146 void closeEvent(QCloseEvent* Event) override;
147 void drawScreen(QPaintEvent* Event = nullptr);
148 bool event(QEvent* Event) override;
149 void ExitToMainMenu();
150 void ShowMouseCursor(bool Show);
151
152 private slots:
153 void DelayedAction();
154
155 private:
156 MythMainWindowPrivate* m_priv { nullptr };
157 MythDisplay* m_display { nullptr };
160 MythThemeBase* m_themeBase { nullptr };
161 MythPainter* m_painter { nullptr };
162 MythPainterWindow* m_painterWin { nullptr };
163 MythInputDeviceHandler* m_deviceHandler { nullptr };
164 MythScreenSaverControl* m_screensaver { nullptr };
166 std::chrono::minutes m_idleTime { 0min };
167};
168
174
175static inline void
176REG_KEY(const QString& Context, const QString& Action,
177 const QString& Description, const QString& Key)
178{
179 GetMythMainWindow()->RegisterKey(Context, Action, Description, Key);
180}
181
182static inline QString
183GET_KEY(const QString& Context, const QString& Action)
184{
185 return MythMainWindow::GetKey(Context, Action);
186}
187
188static inline void
189REG_JUMP(const QString& Destination, const QString& Description,
190 const QString& Key, void (*Callback)(void))
191{
192 GetMythMainWindow()->RegisterJump(Destination, Description, Key, Callback);
193}
194
195static inline void
196REG_JUMPLOC(const QString& Destination, const QString& Description,
197 const QString& Key, void (*Callback)(void), const QString& LocalAction)
198{
199 GetMythMainWindow()->RegisterJump(Destination, Description, Key, Callback, true, LocalAction);
200}
201
202static inline void
203REG_JUMPEX(const QString& Destination, const QString& Description,
204 const QString& Key, void (*Callback)(void), bool ExitToMain)
205{
206 GetMythMainWindow()->RegisterJump(Destination, Description, Key, Callback, ExitToMain);
207}
208
209static inline void
210REG_MEDIAPLAYER(const QString& Name, const QString& Desc, MediaPlayCallback Func)
211{
213}
214
215#endif
An action (for this plugin) consists of a description, and a set of key sequences.
Definition: action.h:41
Event details.
Definition: zmdefines.h:28
A wrapper around sundry external input devices.
void SignalRemoteScreenShot(QString Filename, int Width, int Height)
void SignalDisableScreensaver()
QRegion m_repaintRegion
void SignalResetScreensaver()
void SignalRestoreScreensaver()
void RegisterMediaPlugin(const QString &Name, const QString &Desc, MediaPlayCallback Func)
void RegisterJump(const QString &Destination, const QString &Description, const QString &Key, void(*Callback)(void), bool Exittomain=true, QString LocalAction="")
void SignalSetDrawEnabled(bool Enable)
static QString GetKey(const QString &Context, const QString &Action)
void RegisterKey(const QString &Context, const QString &Action, const QString &Description, const QString &Key)
void SignalWindowReady()
MythRender * GetRenderDevice()
Controls all instances of the screensaver.
unsigned int uint
Definition: compat.h:60
static void ReloadKeys(void)
static void InitKeys(void)
static void REG_JUMPLOC(const QString &Destination, const QString &Description, const QString &Key, void(*Callback)(void), const QString &LocalAction)
MUI_PUBLIC void DestroyMythMainWindow()
MUI_PUBLIC MythMainWindow * GetMythMainWindow()
static void REG_JUMPEX(const QString &Destination, const QString &Description, const QString &Key, void(*Callback)(void), bool ExitToMain)
MUI_PUBLIC MythPainter * GetMythPainter()
MUI_PUBLIC bool HasMythMainWindow()
int(*)(const QString &, const QString &, const QString &, const QString &, const QString &, int, int, const QString &, std::chrono::minutes, const QString &, const QString &, bool) MediaPlayCallback
static void REG_MEDIAPLAYER(const QString &Name, const QString &Desc, MediaPlayCallback Func)
static void REG_JUMP(const QString &Destination, const QString &Description, const QString &Key, void(*Callback)(void))
static QString GET_KEY(const QString &Context, const QString &Action)
static void REG_KEY(const QString &Context, const QString &Action, const QString &Description, const QString &Key)
MUI_PUBLIC MythNotificationCenter * GetNotificationCenter()
#define MUI_PUBLIC
Definition: mythuiexp.h:9
State
Definition: zmserver.h:69