From 4575c1fda70f8b8e1ac4959ad9386964cb9a6222 Mon Sep 17 00:00:00 2001 From: Lorn Potter Date: Thu, 17 May 2012 09:25:54 +1000 Subject: send only signals being started. Avoids developer confusion. Change-Id: I7f49f14d0546a2a59a26777c6f8fa083ec29e0ba Reviewed-by: Lincoln Ramsay --- .../gestures/qsensorgesturemanagerprivate.cpp | 27 ++++++++++++++++++++-- .../gestures/qsensorgesturemanagerprivate_p.h | 3 +++ src/sensors/gestures/qsensorgesturerecognizer.cpp | 14 ++++++++--- src/sensors/gestures/qsensorgesturerecognizer.h | 4 ++++ src/sensors/gestures/simulatorgesturescommon.cpp | 13 +++++++++++ src/sensors/gestures/simulatorgesturescommon_p.h | 1 + 6 files changed, 57 insertions(+), 5 deletions(-) (limited to 'src/sensors') diff --git a/src/sensors/gestures/qsensorgesturemanagerprivate.cpp b/src/sensors/gestures/qsensorgesturemanagerprivate.cpp index c87d22da..15fccdb9 100644 --- a/src/sensors/gestures/qsensorgesturemanagerprivate.cpp +++ b/src/sensors/gestures/qsensorgesturemanagerprivate.cpp @@ -64,6 +64,9 @@ QSensorGestureManagerPrivate::QSensorGestureManagerPrivate(QObject *parent) : connect(this,SIGNAL(newSensorGestures(QStringList)), connection,SLOT(newSensorGestures(QStringList))); + + connect(this,SIGNAL(removeSensorGestures(QStringList)), + connection,SLOT(removeSensorGestures(QStringList))); #endif loader = new QFactoryLoader("com.Nokia.QSensorGesturePluginInterface", QLatin1String("/sensorgestures")); @@ -148,8 +151,8 @@ bool QSensorGestureManagerPrivate::loadRecognizer(const QString &recognizerId) registeredSensorGestures.insert(recognizer->id(),recognizer); #ifdef SIMULATOR_BUILD - QStringList list = recognizer->gestureSignals(); - Q_EMIT newSensorGestures(list); + connect(recognizer, SIGNAL(started()), this, SLOT(recognizerStarted()), Qt::UniqueConnection); + connect(recognizer, SIGNAL(stopped()), this, SLOT(recognizerStopped()), Qt::UniqueConnection); #endif } } @@ -218,6 +221,26 @@ void QSensorGestureManagerPrivate::sensorGestureDetected() } } +void QSensorGestureManagerPrivate::recognizerStarted() +{ + QSensorGestureRecognizer *recognizer = qobject_cast(sender()); + QStringList list = recognizer->gestureSignals(); + list.removeOne("detected(QString)"); + list.removeOne("started()"); + list.removeOne("stopped()"); + Q_EMIT newSensorGestures(list); +} + +void QSensorGestureManagerPrivate::recognizerStopped() +{ + QSensorGestureRecognizer *recognizer = qobject_cast(sender()); + QStringList list = recognizer->gestureSignals(); + list.removeOne("detected(QString)"); + list.removeOne("started()"); + list.removeOne("stopped()"); + Q_EMIT removeSensorGestures(list); +} + #endif diff --git a/src/sensors/gestures/qsensorgesturemanagerprivate_p.h b/src/sensors/gestures/qsensorgesturemanagerprivate_p.h index 4d3d9c4d..71b88644 100644 --- a/src/sensors/gestures/qsensorgesturemanagerprivate_p.h +++ b/src/sensors/gestures/qsensorgesturemanagerprivate_p.h @@ -84,9 +84,12 @@ Q_SIGNALS: #ifdef SIMULATOR_BUILD Q_SIGNALS: void newSensorGestures(QStringList); + void removeSensorGestures(QStringList); private slots: void sensorGestureDetected(); + void recognizerStarted(); + void recognizerStopped(); #endif }; diff --git a/src/sensors/gestures/qsensorgesturerecognizer.cpp b/src/sensors/gestures/qsensorgesturerecognizer.cpp index 2b6105e2..0a744b2b 100644 --- a/src/sensors/gestures/qsensorgesturerecognizer.cpp +++ b/src/sensors/gestures/qsensorgesturerecognizer.cpp @@ -181,8 +181,12 @@ void QSensorGestureRecognizer::startBackend() qWarning() << "Not starting. Gesture Recognizer not initialized"; return; } - if (d_ptr->count++ == 0) - start(); + if (d_ptr->count++ == 0) { + start(); +#ifdef SIMULATOR_BUILD + Q_EMIT started(); +#endif + } } /*! @@ -197,8 +201,12 @@ void QSensorGestureRecognizer::stopBackend() qWarning() << "Not stopping. Gesture Recognizer not initialized"; return; } - if (--d_ptr->count == 0) + if (--d_ptr->count == 0) { stop(); +#ifdef SIMULATOR_BUILD + Q_EMIT stopped(); +#endif + } } QT_END_NAMESPACE diff --git a/src/sensors/gestures/qsensorgesturerecognizer.h b/src/sensors/gestures/qsensorgesturerecognizer.h index 2a271c7b..06929e72 100644 --- a/src/sensors/gestures/qsensorgesturerecognizer.h +++ b/src/sensors/gestures/qsensorgesturerecognizer.h @@ -73,6 +73,10 @@ public: Q_SIGNALS: void detected(const QString &); +#ifdef SIMULATOR_BUILD + void started(); + void stopped(); +#endif protected: virtual void create() = 0; diff --git a/src/sensors/gestures/simulatorgesturescommon.cpp b/src/sensors/gestures/simulatorgesturescommon.cpp index 2578e459..4c2adb51 100644 --- a/src/sensors/gestures/simulatorgesturescommon.cpp +++ b/src/sensors/gestures/simulatorgesturescommon.cpp @@ -70,6 +70,7 @@ SensorGesturesConnection::SensorGesturesConnection(QObject *parent) SensorGesturesConnection::~SensorGesturesConnection() { + mWorker->call("setSensorGestures", QStringList()); delete mWorker; } @@ -91,6 +92,7 @@ void SensorGesturesConnection::newSensorGestureDetected() void SensorGesturesConnection::newSensorGestures(const QStringList &gestures) { if (!mWorker) return; + Q_FOREACH (const QString &gest, gestures) { if (!gest.contains(QLatin1String("detected"))) { QString tmp = gest.left(gest.length()-2); @@ -102,6 +104,17 @@ void SensorGesturesConnection::newSensorGestures(const QStringList &gestures) mWorker->call("setSensorGestures", allGestures); } +void SensorGesturesConnection::removeSensorGestures(const QStringList &gestures) +{ + Q_FOREACH (const QString &gest, gestures) { + QString tmp = gest.left(gest.length()-2); + if (allGestures.contains(tmp)) { + allGestures.removeOne(tmp); + } + } + mWorker->call("setSensorGestures", allGestures); +} + QString get_qtSensorGestureData() { return *qtSensorGestureData(); diff --git a/src/sensors/gestures/simulatorgesturescommon_p.h b/src/sensors/gestures/simulatorgesturescommon_p.h index 6fd0d754..2699c6a4 100644 --- a/src/sensors/gestures/simulatorgesturescommon_p.h +++ b/src/sensors/gestures/simulatorgesturescommon_p.h @@ -79,6 +79,7 @@ public slots: void setSensorGestureData(const QString &); void newSensorGestureDetected(); void newSensorGestures(const QStringList &gestures); + void removeSensorGestures(const QStringList &gestures); private: Simulator::Connection *mConnection; -- cgit v1.2.3