Moved timer from MouseEventSpy to EnergySaver. Connected MouseEventSpy and MusicController to EnergySaver.
70 lines
1.6 KiB
C++
70 lines
1.6 KiB
C++
#include "MouseEventSpy.h"
|
|
|
|
#include <QGuiApplication>
|
|
#include <QDebug>
|
|
|
|
MouseEventSpy::MouseEventSpy(QObject *parent) : QObject(parent)
|
|
{
|
|
}
|
|
|
|
/**
|
|
* @brief Create instance if necessary.
|
|
*
|
|
* If no instance has been created yet, create new instance and install it as event filter
|
|
* in QGuiApplication.
|
|
*
|
|
* @see MouseEventSpy::instance()
|
|
*/
|
|
void MouseEventSpy::init()
|
|
{
|
|
instance();
|
|
}
|
|
|
|
/**
|
|
* @brief Implements the singleton pattern.
|
|
* @return Instance
|
|
*
|
|
* If no instance has been created yet, create new instance and install it as event filter
|
|
* in QGuiApplication.
|
|
*/
|
|
MouseEventSpy* MouseEventSpy::instance()
|
|
{
|
|
static MouseEventSpy* inst;
|
|
if (inst == nullptr)
|
|
{
|
|
inst = new MouseEventSpy();
|
|
QGuiApplication* app = qGuiApp;
|
|
app->installEventFilter(inst);
|
|
}
|
|
return inst;
|
|
}
|
|
|
|
/**
|
|
* @brief Expand QObject::eventFilter to react to MouseEvents.
|
|
*
|
|
* Restart timer each time a mouse event is detected.
|
|
*/
|
|
bool MouseEventSpy::eventFilter(QObject* watched, QEvent* event)
|
|
{
|
|
QEvent::Type t = event->type();
|
|
if (isMouseEvent(t)
|
|
&& event->spontaneous() // Take only mouse events from outside of Qt
|
|
)
|
|
{
|
|
emit mouseEventDetected();
|
|
}
|
|
return QObject::eventFilter(watched, event);
|
|
}
|
|
|
|
/**
|
|
* @brief Checks whether the event type is a mouse event.
|
|
* @param t Event type
|
|
* @return Returns whether the event type is a mouse event.
|
|
*/
|
|
bool MouseEventSpy::isMouseEvent(QEvent::Type t)
|
|
{
|
|
return (t == QEvent::MouseButtonDblClick
|
|
|| t == QEvent::MouseButtonPress
|
|
|| t == QEvent::MouseButtonRelease
|
|
|| t == QEvent::MouseMove);
|
|
}
|