diff options
Diffstat (limited to 'src/plugins/sensors/blackberry/bbsensorbackend.cpp')
-rw-r--r-- | src/plugins/sensors/blackberry/bbsensorbackend.cpp | 45 |
1 files changed, 22 insertions, 23 deletions
diff --git a/src/plugins/sensors/blackberry/bbsensorbackend.cpp b/src/plugins/sensors/blackberry/bbsensorbackend.cpp index a1829b1a..8c53aa26 100644 --- a/src/plugins/sensors/blackberry/bbsensorbackend.cpp +++ b/src/plugins/sensors/blackberry/bbsensorbackend.cpp @@ -40,8 +40,8 @@ ****************************************************************************/ #include "bbsensorbackend.h" +#include "bbguihelper.h" #include <QtCore/QDebug> -#include <QtGui/QGuiApplication> #include <fcntl.h> static const int microSecondsPerSecond = 1000 * 1000; @@ -59,9 +59,8 @@ static uint hertzToMicroSeconds(int hertz) BbSensorBackendBase::BbSensorBackendBase(const QString &devicePath, sensor_type_e sensorType, QSensor *sensor) - : QSensorBackend(sensor), m_deviceFile(devicePath), m_sensorType(sensorType) + : QSensorBackend(sensor), m_deviceFile(devicePath), m_sensorType(sensorType), m_guiHelper(0) { - QCoreApplication::instance()->installEventFilter(this); connect(sensor, SIGNAL(alwaysOnChanged()), this, SLOT(applyAlwaysOnProperty())); // Set some sensible default values @@ -69,6 +68,11 @@ BbSensorBackendBase::BbSensorBackendBase(const QString &devicePath, sensor_type_ sensor->setProperty("maxBufferSize", defaultBufferSize); } +BbGuiHelper *BbSensorBackendBase::guiHelper() const +{ + return m_guiHelper; +} + QFile &BbSensorBackendBase::deviceFile() { return m_deviceFile; @@ -107,6 +111,13 @@ void BbSensorBackendBase::initSensorInfo() } } +void BbSensorBackendBase::setGuiHelper(BbGuiHelper *guiHelper) +{ + Q_ASSERT(!m_guiHelper); + m_guiHelper = guiHelper; + connect(m_guiHelper, SIGNAL(applicationActiveChanged()), this, SLOT(updatePauseState())); +} + void BbSensorBackendBase::additionalDeviceInit() { } @@ -121,27 +132,10 @@ qreal BbSensorBackendBase::convertValue(float bbValue) return bbValue; } -bool BbSensorBackendBase::eventFilter(QObject *object, QEvent *event) -{ - if (object == QCoreApplication::instance()) { - switch (event->type()) { - case QEvent::ApplicationActivate: - setPaused(false); - break; - case QEvent::ApplicationDeactivate: - if (!sensor()->isAlwaysOn()) - setPaused(true); - break; - default: - break; - } - } - - return QSensorBackend::eventFilter(object, event); -} - void BbSensorBackendBase::start() { + Q_ASSERT(m_guiHelper); + if (!m_deviceFile.open(QFile::ReadOnly | QFile::Unbuffered)) { qDebug() << "Starting sensor" << m_deviceFile.fileName() << "failed:" << m_deviceFile.errorString(); @@ -250,7 +244,7 @@ void BbSensorBackendBase::applyAlwaysOnProperty() } // We might need to pause now - setPaused(QGuiApplication::focusWindow() == 0 && !sensor()->isAlwaysOn()); + updatePauseState(); } void BbSensorBackendBase::setPaused(bool paused) @@ -268,3 +262,8 @@ void BbSensorBackendBase::setPaused(bool paused) .arg(m_deviceFile.fileName()).toLocal8Bit()); } } + +void BbSensorBackendBase::updatePauseState() +{ + setPaused(!sensor()->isAlwaysOn() && !m_guiHelper->applicationActive()); +} |