summaryrefslogtreecommitdiffstats
path: root/src/plugins/sensors/simulator/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/sensors/simulator/main.cpp')
-rw-r--r--src/plugins/sensors/simulator/main.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/plugins/sensors/simulator/main.cpp b/src/plugins/sensors/simulator/main.cpp
index dda7269c..1e404086 100644
--- a/src/plugins/sensors/simulator/main.cpp
+++ b/src/plugins/sensors/simulator/main.cpp
@@ -56,6 +56,13 @@ class SimulatorSensorPlugin : public QObject, public QSensorPluginInterface, pub
Q_PLUGIN_METADATA(IID "com.nokia.Qt.QSensorPluginInterface/1.0" FILE "plugin.json")
Q_INTERFACES(QSensorPluginInterface)
public:
+ SimulatorSensorPlugin()
+ {
+ SensorsConnection *connection = SensorsConnection::instance();
+ if (!connection) return; // hardly likely but just in case...
+ connect(connection, SIGNAL(setAvailableFeatures(quint32)), this, SLOT(setAvailableFeatures(quint32)));
+ }
+
void registerSensors()
{
QSensorManager::registerBackend(QAccelerometer::type, SimulatorAccelerometer::id, this);
@@ -99,6 +106,39 @@ public:
return 0;
}
+
+ // Copied from the emulator codebase
+ enum Features {
+ Accelerometer = 0x01,
+ Magnetometer = 0x02,
+ Compass = 0x04,
+ Infraredsensor = 0x08,
+ Lightsensor = 0x10
+ };
+
+public slots:
+ void setAvailableFeatures(quint32 features)
+ {
+ check(features&Accelerometer, QAccelerometer::type, SimulatorAccelerometer::id);
+ check(features&Lightsensor, QLightSensor::type, SimulatorLightSensor::id);
+ check(features&Lightsensor, QAmbientLightSensor::type, SimulatorAmbientLightSensor::id);
+ check(features&Magnetometer, QMagnetometer::type, SimulatorMagnetometer::id);
+ check(features&Compass, QCompass::type, SimulatorCompass::id);
+ check(features&Infraredsensor, QIRProximitySensor::type, SimulatorIRProximitySensor::id);
+ check(features&Infraredsensor, QProximitySensor::type, SimulatorProximitySensor::id);
+ }
+
+private:
+ void check(bool test, const QByteArray &type, const QByteArray &id)
+ {
+ if (test) {
+ if (!QSensorManager::isBackendRegistered(type, id))
+ QSensorManager::registerBackend(type, id, this);
+ } else {
+ if (QSensorManager::isBackendRegistered(type, id))
+ QSensorManager::unregisterBackend(type, id);
+ }
+ }
};
#include "main.moc"