MythTV master
zmminiplayer.cpp
Go to the documentation of this file.
1
2#include "zmminiplayer.h"
3
4// C++
5#include <chrono>
6
7// Qt
8#include <QTimer>
9
10// MythTV
15
16// mythzoneminder
17#include "zmclient.h"
18
19static constexpr std::chrono::milliseconds FRAME_UPDATE_TIME { 100ms }; // try to update the frame 10 times a second
20
22 : ZMLivePlayer(parent, true),
23 m_displayTimer(new QTimer(this))
24{
25 m_displayTimer->setSingleShot(true);
27
28}
29
31{
33
34 // Timers are deleted by Qt
35 m_displayTimer->disconnect();
36 m_displayTimer = nullptr;
37
38 if (LCD *lcd = LCD::Get())
39 lcd->switchToTime ();
40}
41
43{
44 // if we was triggered because of an alarm wait for the monitor to become idle
45 if (m_alarmMonitor != -1)
46 {
48 if (mon && (mon->state == ALARM || mon->state == ALERT))
49 {
50 m_displayTimer->start(10s);
51 return;
52 }
53 }
54
55 Close();
56}
57
59{
61 return false;
62
63 m_displayTimer->start(10s);
64
66
67 return true;
68}
69
70void ZMMiniPlayer::customEvent (QEvent* event)
71{
72 if (event->type() == MythEvent::kMythEventMessage)
73 {
74 auto *me = dynamic_cast<MythEvent*>(event);
75 if (!me)
76 return;
77
78 if (me->Message().startsWith("ZONEMINDER_NOTIFICATION"))
79 {
80 QStringList list = me->Message().simplified().split(' ');
81
82 if (list.size() < 2)
83 return;
84
85 int monID = list[1].toInt();
86 if (monID != m_alarmMonitor)
87 {
88 m_alarmMonitor = monID;
89
90 m_frameTimer->stop();
91
92 Monitor *mon = ZMClient::get()->getMonitorByID(monID);
93
94 if (mon)
95 {
96 m_players->at(0)->setMonitor(mon);
97 m_players->at(0)->updateCamera();
98 }
99
101 }
102
103 // restart the display timer on any notification messages if it is active
104 if (m_displayTimer->isActive())
105 m_displayTimer->start(10s);
106 }
107 }
108
110}
111
112bool ZMMiniPlayer::keyPressEvent(QKeyEvent *event)
113{
114 // restart the display timer on any keypress if it is active
115 if (m_displayTimer && m_displayTimer->isActive())
116 m_displayTimer->start();
117
119 return true;
120
121 QStringList actions;
122 bool handled = GetMythMainWindow()->TranslateKeyPress("Music", event, actions);
123
124 for (int i = 0; i < actions.size() && !handled; i++)
125 {
126 const QString& action = actions[i];
127 handled = true;
128
129 if (action == "SELECT")
130 {
131 if (m_displayTimer)
132 m_displayTimer->stop();
133 }
134 else if (action == "ESCAPE")
135 {
136 Close();
137 }
138 else if (action == "MENU")
139 {
140 }
141 else
142 {
143 handled = false;
144 }
145 }
146
147 if (!handled && ZMLivePlayer::keyPressEvent(event))
148 handled = true;
149
150 return handled;
151}
Definition: lcddevice.h:170
static LCD * Get(void)
Definition: lcddevice.cpp:69
State state
Definition: zmdefines.h:131
This class is used as a container for messages.
Definition: mythevent.h:17
const QString & Message() const
Definition: mythevent.h:65
static const Type kMythEventMessage
Definition: mythevent.h:79
bool TranslateKeyPress(const QString &Context, QKeyEvent *Event, QStringList &Actions, bool AllowJumps=true)
Get a list of actions for a keypress in the given context.
void addListener(QObject *listener)
Add a listener to the observable.
void removeListener(QObject *listener)
Remove a listener to the observable.
MythUIType * GetFocusWidget(void) const
virtual void Close()
Monitor * getMonitorByID(int monID)
Definition: zmclient.cpp:862
static ZMClient * get(void)
Definition: zmclient.cpp:37
QTimer * m_frameTimer
Definition: zmliveplayer.h:87
bool keyPressEvent(QKeyEvent *event) override
Key event handler.
bool Create(void) override
std::vector< Player * > * m_players
Definition: zmliveplayer.h:92
int m_alarmMonitor
Definition: zmliveplayer.h:95
void customEvent(QEvent *event) override
void timerTimeout(void)
void customEvent(QEvent *event) override
ZMMiniPlayer(MythScreenStack *parent)
bool keyPressEvent(QKeyEvent *event) override
Key event handler.
~ZMMiniPlayer() override
bool Create(void) override
QTimer * m_displayTimer
Definition: zmminiplayer.h:29
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
MythMainWindow * GetMythMainWindow(void)
VERBOSE_PREAMBLE Most true
Definition: verbosedefs.h:95
static constexpr std::chrono::milliseconds FRAME_UPDATE_TIME
@ ALERT
Definition: zmserver.h:73
@ ALARM
Definition: zmserver.h:72