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
11 #include <libmyth/mythcontext.h>
12 #include <libmythbase/lcddevice.h>
14 #include <libmythui/mythuiimage.h>
15 
16 // mythzoneminder
17 #include "zmclient.h"
18 
19 static 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 {
60  if (!ZMLivePlayer::Create())
61  return false;
62 
63  m_displayTimer->start(10s);
64 
66 
67  return true;
68 }
69 
70 void 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 
112 bool 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 
118  if (GetFocusWidget() && GetFocusWidget()->keyPressEvent(event))
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  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  handled = false;
143  }
144 
145  if (!handled && ZMLivePlayer::keyPressEvent(event))
146  handled = true;
147 
148  return handled;
149 }
ZMMiniPlayer::timerTimeout
void timerTimeout(void)
Definition: zmminiplayer.cpp:42
hardwareprofile.smolt.timeout
float timeout
Definition: smolt.py:102
ZMLivePlayer::Create
bool Create(void) override
Definition: zmliveplayer.cpp:47
MythEvent::kMythEventMessage
static const Type kMythEventMessage
Definition: mythevent.h:79
MythScreenType::Close
virtual void Close()
Definition: mythscreentype.cpp:386
MythEvent
This class is used as a container for messages.
Definition: mythevent.h:16
MythScreenStack
Definition: mythscreenstack.h:16
ZMMiniPlayer::Create
bool Create(void) override
Definition: zmminiplayer.cpp:58
ZMClient::getMonitorByID
Monitor * getMonitorByID(int monID)
Definition: zmclient.cpp:853
ZMLivePlayer::keyPressEvent
bool keyPressEvent(QKeyEvent *event) override
Key event handler.
Definition: zmliveplayer.cpp:187
ZMLivePlayer::m_alarmMonitor
int m_alarmMonitor
Definition: zmliveplayer.h:95
LCD::Get
static LCD * Get(void)
Definition: lcddevice.cpp:69
mythuiimage.h
MythEvent::Message
const QString & Message() const
Definition: mythevent.h:65
true
VERBOSE_PREAMBLE Most true
Definition: verbosedefs.h:95
MythScreenType::GetFocusWidget
MythUIType * GetFocusWidget(void) const
Definition: mythscreentype.cpp:113
MythObservable::addListener
void addListener(QObject *listener)
Add a listener to the observable.
Definition: mythobservable.cpp:38
zmclient.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:1112
ZMMiniPlayer::customEvent
void customEvent(QEvent *event) override
Definition: zmminiplayer.cpp:70
ALERT
@ ALERT
Definition: zmserver.h:73
ZMLivePlayer
Definition: zmliveplayer.h:60
FRAME_UPDATE_TIME
static constexpr std::chrono::milliseconds FRAME_UPDATE_TIME
Definition: zmminiplayer.cpp:19
ZMClient::get
static ZMClient * get(void)
Definition: zmclient.cpp:37
gCoreContext
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
Definition: mythcorecontext.cpp:55
zmminiplayer.h
ZMLivePlayer::m_frameTimer
QTimer * m_frameTimer
Definition: zmliveplayer.h:87
ZMMiniPlayer::~ZMMiniPlayer
~ZMMiniPlayer() override
Definition: zmminiplayer.cpp:30
Monitor::state
State state
Definition: zmdefines.h:122
ZMMiniPlayer::m_displayTimer
QTimer * m_displayTimer
Definition: zmminiplayer.h:29
ZMMiniPlayer::ZMMiniPlayer
ZMMiniPlayer(MythScreenStack *parent)
Definition: zmminiplayer.cpp:21
ZMMiniPlayer::keyPressEvent
bool keyPressEvent(QKeyEvent *event) override
Key event handler.
Definition: zmminiplayer.cpp:112
ZMLivePlayer::m_players
std::vector< Player * > * m_players
Definition: zmliveplayer.h:92
mythcontext.h
ALARM
@ ALARM
Definition: zmserver.h:72
GetMythMainWindow
MythMainWindow * GetMythMainWindow(void)
Definition: mythmainwindow.cpp:104
build_compdb.action
action
Definition: build_compdb.py:9
ZMLivePlayer::customEvent
void customEvent(QEvent *event) override
Definition: zmliveplayer.cpp:271
Monitor
Definition: zmdefines.h:99
lcddevice.h
mythmainwindow.h
MythObservable::removeListener
void removeListener(QObject *listener)
Remove a listener to the observable.
Definition: mythobservable.cpp:55
LCD
Definition: lcddevice.h:169