summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/sensors/qsensor.cpp17
-rw-r--r--src/sensors/qsensor.h4
-rw-r--r--src/sensors/qsensor_p.h3
-rw-r--r--tests/auto/qsensor/tst_qsensor.cpp10
4 files changed, 34 insertions, 0 deletions
diff --git a/src/sensors/qsensor.cpp b/src/sensors/qsensor.cpp
index 39820797..9dc11d19 100644
--- a/src/sensors/qsensor.cpp
+++ b/src/sensors/qsensor.cpp
@@ -341,6 +341,23 @@ bool QSensor::isActive() const
}
/*!
+ \property QSensor::alwaysOn
+ \brief a value to indicate if the sensor should remain running when the screen is off.
+
+ Some platforms have a policy of suspending sensors when the screen turns off.
+ Setting this property to true will ensure the sensor continues to run.
+*/
+void QSensor::setAlwaysOn(bool alwaysOn)
+{
+ d->alwaysOn = alwaysOn;
+}
+
+bool QSensor::isAlwaysOn() const
+{
+ return d->alwaysOn;
+}
+
+/*!
\property QSensor::availableDataRates
\brief the data rates that the sensor supports.
diff --git a/src/sensors/qsensor.h b/src/sensors/qsensor.h
index aca95ce1..08bb0a7e 100644
--- a/src/sensors/qsensor.h
+++ b/src/sensors/qsensor.h
@@ -89,6 +89,7 @@ class Q_SENSORS_EXPORT QSensor : public QObject
Q_PROPERTY(int outputRange READ outputRange WRITE setOutputRange)
Q_PROPERTY(QString description READ description)
Q_PROPERTY(int error READ error NOTIFY sensorError)
+ Q_PROPERTY(bool alwaysOn READ isAlwaysOn WRITE setAlwaysOn)
#ifdef Q_QDOC
Q_PROPERTY(int maxBufferSize)
Q_PROPERTY(int efficientBufferSize)
@@ -111,6 +112,9 @@ public:
void setActive(bool active);
bool isActive() const;
+ bool isAlwaysOn() const;
+ void setAlwaysOn(bool alwaysOn);
+
qrangelist availableDataRates() const;
int dataRate() const;
void setDataRate(int rate);
diff --git a/src/sensors/qsensor_p.h b/src/sensors/qsensor_p.h
index e87f10c3..d0876726 100644
--- a/src/sensors/qsensor_p.h
+++ b/src/sensors/qsensor_p.h
@@ -75,6 +75,7 @@ public:
, filter_reading(0)
, cache_reading(0)
, error(0)
+ , alwaysOn(false)
{
}
@@ -100,6 +101,8 @@ public:
QSensorReading *cache_reading;
int error;
+
+ bool alwaysOn;
};
class QSensorReadingPrivate
diff --git a/tests/auto/qsensor/tst_qsensor.cpp b/tests/auto/qsensor/tst_qsensor.cpp
index f378b89f..f56baad5 100644
--- a/tests/auto/qsensor/tst_qsensor.cpp
+++ b/tests/auto/qsensor/tst_qsensor.cpp
@@ -810,6 +810,16 @@ private slots:
QVERIFY(!sensor.isActive());
}
+ void testAlwaysOn()
+ {
+ TestSensor sensor;
+ QCOMPARE(sensor.isAlwaysOn(), false);
+ sensor.setAlwaysOn(true);
+ QCOMPARE(sensor.isAlwaysOn(), true);
+ sensor.setAlwaysOn(false);
+ QCOMPARE(sensor.isAlwaysOn(), false);
+ }
+
void testIsRegistered()
{
bool expected;