void Tst_qsensorgesturePluginsTest::tst_sensor_plugins_shake() { QSensorGestureManager manager; QVERIFY(manager.gestureIds().contains("QtSensors.shake")); QSensorGestureRecognizer *recognizer = manager.sensorGestureRecognizer("QtSensors.shake"); QCOMPARE(recognizer->isActive(), false); QTest::ignoreMessage(QtWarningMsg, "Not starting. Gesture Recognizer not initialized "); recognizer->startBackend(); QCOMPARE(recognizer->isActive(), false); QTest::ignoreMessage(QtWarningMsg, "Not stopping. Gesture Recognizer not initialized "); recognizer->stopBackend(); QCOMPARE(recognizer->isActive(), false); QScopedPointer<QSensorGesture> gesture(new QSensorGesture(QStringList() << "QtSensors.shake")); QCOMPARE(gesture->isActive(),false); QCOMPARE(gesture->validIds(), QStringList() << "QtSensors.shake"); QCOMPARE(QStringList() << recognizer->id(), gesture->validIds()); gesture->startDetection(); QCOMPARE(gesture->isActive(),true); QCOMPARE(recognizer->isActive(), true); gesture->stopDetection(); QCOMPARE(recognizer->isActive(), false); }
void Tst_qsensorgesturePluginsTest::tst_sensor_plugins_qtsensors_all() { QStringList list; list << "QtSensors.cover"; list << "QtSensors.doubletap"; list << "QtSensors.hover"; list << "QtSensors.pickup"; list << "QtSensors.shake2"; list << "QtSensors.slam"; list << "QtSensors.turnover"; list << "QtSensors.twist"; list << "QtSensors.whip"; QSensorGestureManager manager; QScopedPointer<QSensorGesture> gesture(new QSensorGesture(list)); QVERIFY(gesture->invalidIds().count() == 0); QVERIFY(gesture->validIds().count() == 9); QVERIFY(gesture->gestureSignals().count() == 14); gesture->startDetection(); QVERIFY(gesture->isActive()); QSensorGestureRecognizer *recognizer = manager.sensorGestureRecognizer("QtSensors.turnover"); recognizer->stopBackend(); QVERIFY(!recognizer->isActive()); QVERIFY(gesture->isActive()); }
void Tst_qsensorgesturePluginsTest::tst_sensor_plugins_qtsensors() { QFETCH(QString, gestureId); QSensorGestureManager manager; QVERIFY(manager.gestureIds().contains(gestureId)); QScopedPointer<QSensorGesture> gesture(new QSensorGesture(QStringList() << gestureId)); QScopedPointer<QSensorGesture> gesture2(new QSensorGesture(QStringList() << gestureId)); QCOMPARE(gesture->isActive(),false); QCOMPARE(gesture->validIds(), QStringList() << gestureId); QSensorGestureRecognizer *recognizer = manager.sensorGestureRecognizer(gestureId); QCOMPARE(QStringList() << recognizer->id(), gesture->validIds()); QCOMPARE(QStringList() << QStringList(), gesture->invalidIds()); QVERIFY(recognizer->isActive() == false); QVERIFY(gesture->isActive() == false); QVERIFY(gesture2->isActive() == false); gesture->startDetection(); QVERIFY(gesture->isActive() == true); QVERIFY(gesture2->isActive() == false); QVERIFY(recognizer->isActive() == true); gesture2->startDetection(); QVERIFY(gesture->isActive() == true); QVERIFY(gesture2->isActive() == true); QVERIFY(recognizer->isActive() == true); gesture2->stopDetection(); QVERIFY(gesture->isActive() == true); QVERIFY(gesture2->isActive() == false); QVERIFY(recognizer->isActive() == true); gesture->stopDetection(); QVERIFY(gesture->isActive() == false); QVERIFY(gesture2->isActive() == false); QVERIFY(recognizer->isActive() == false); QVERIFY(recognizer->gestureSignals().count() > 1); QVERIFY(recognizer->gestureSignals().contains("detected(QString)")); }
void MyObject::create() { //! [Receiving sensor gesture signals] // Create a QSensorGestureManager QSensorGestureManager gestureManager; // Get a list of known recognizers QStringList recognizersList = gestureManager.gestureIds(); // Create a QSensorGeture object for each of those gesture recognizers QSensorGesture *gesture = new QSensorGesture( gestureManager.gestureIds(), this); // Connect the known signals up. connect(gesture, SIGNAL(detected(QString)), this, SLOT(gestureDetected(QString))); //! [Receiving sensor gesture signals] }
void MusicWidget::setupSensors() { QSensorGestureManager manager; QStringList gestureIds = manager.gestureIds(); qDebug() << gestureIds; if(gestureIds.contains("QtSensors.shake2")) { qDebug() << "setup shake 2 sensor"; m_shakeGesture = new QSensorGesture( QStringList() << "QtSensors.shake2" , this); connect(m_shakeGesture, SIGNAL(shakeUp()), m_playlist, SLOT(previous())); connect(m_shakeGesture, SIGNAL(shakeDown()), m_playlist, SLOT(next())); connect(m_shakeGesture, SIGNAL(shakeLeft()), m_playlist, SLOT(previous())); connect(m_shakeGesture, SIGNAL(shakeRight()), m_playlist, SLOT(next())); } else if(gestureIds.contains("QtSensors.shake")) { qDebug() << "setup shake sensor"; m_shakeGesture = new QSensorGesture( QStringList() << "QtSensors.shake" , this); connect(m_shakeGesture, SIGNAL(shake()), m_playlist, SLOT(next())); } if(gestureIds.contains("QtSensors.turnover")) { m_turnoverGesture = new QSensorGesture( QStringList("QtSensors.turnover") ,this ); connect(m_turnoverGesture, SIGNAL(turnover()), this, SLOT(onTurnover())); } }
void tst_Sensors2QMLAPI::testGesture() { QTemplateGesturePlugin* plugin = new QTemplateGesturePlugin(); QList <QSensorGestureRecognizer *> recognizers = plugin->createRecognizers(); QSensorGestureManager manager; QmlSensorGesture* gs = new QmlSensorGesture(this); gs->componentComplete(); QSignalSpy spy_availableGesturesChanged(gs, SIGNAL(availableGesturesChanged())); QSignalSpy spy_detected(gs, SIGNAL(detected(QString))); QSignalSpy spy_gesturesChanged(gs, SIGNAL(gesturesChanged())); QSignalSpy spy_validGesturesChanged(gs, SIGNAL(validGesturesChanged())); QSignalSpy spy_invalidGesturesChanged(gs, SIGNAL(invalidGesturesChanged())); QSignalSpy spy_enabledChanged(gs, SIGNAL(enabledChanged())); //This flag is needed if you run this unit test with an alread installed template plugin bool registered = false; for (int i = 0; i < recognizers.count(); i++){ registered = manager.registerSensorGestureRecognizer(recognizers[i]); } if (registered) { QCOMPARE(spy_availableGesturesChanged.count(), 2); } //check creation of a not known plugin QCOMPARE(spy_invalidGesturesChanged.count(), 0); QCOMPARE(spy_gesturesChanged.count(), 0); gs->setGestures(QStringList() << "lollipop"); QCOMPARE(spy_gesturesChanged.count(), 1); QCOMPARE(spy_invalidGesturesChanged.count(), 1); //check creation of a known plugin QCOMPARE(spy_validGesturesChanged.count(), 0); QCOMPARE(spy_gesturesChanged.count(), 1); spy_invalidGesturesChanged.clear(); spy_validGesturesChanged.clear(); gs->setGestures(QStringList() << "QtSensors.template"); QCOMPARE(spy_gesturesChanged.count(), 2); QCOMPARE(spy_invalidGesturesChanged.count(), 1); QCOMPARE(spy_validGesturesChanged.count(), 1); //enable "QtSensors.template" QCOMPARE(spy_enabledChanged.count(), 0); QCOMPARE(spy_detected.count(), 0); gs->setEnabled(true); QCOMPARE(spy_enabledChanged.count(), 1); QCOMPARE(spy_detected.count(), 1); //set gesture during running sensor should not emit gesture changed spy_gesturesChanged.clear(); gs->setGestures(QStringList() << "QtSensors.template2"); QCOMPARE(spy_gesturesChanged.count(), 0); gs->setEnabled(false); QmlSensorGesture* gs1 = new QmlSensorGesture(this); QSignalSpy spy1_detected(gs1, SIGNAL(detected(QString))); QSignalSpy spy1_gesturesChanged(gs1, SIGNAL(gesturesChanged())); QSignalSpy spy1_validGesturesChanged(gs1, SIGNAL(validGesturesChanged())); QSignalSpy spy1_invalidGesturesChanged(gs1, SIGNAL(invalidGesturesChanged())); QSignalSpy spy1_enabledChanged(gs1, SIGNAL(enabledChanged())); gs1->componentComplete(); //set enable = true without gesture should gs1->setEnabled(true); QCOMPARE(spy1_enabledChanged.count(), 1); gs1->setEnabled(false); spy1_enabledChanged.clear(); //reding gestures check if we get back an empty string list QStringList gestures = gs1->gestures(); QCOMPARE(gestures.count(), 0); QStringList validgestures = gs1->validGestures(); QCOMPARE(validgestures.count(), 0); QStringList invalidgestures = gs1->invalidGestures(); QCOMPARE(invalidgestures.count(), 0); //check types "QtSensors.template" "QtSensors.template1" "lollipop" //expect valid 2 not available 1 gestures << "QtSensors.template" << "QtSensors.template1" << "lollipop"; gs1->setGestures(gestures); gestures = gs1->gestures(); QCOMPARE(gestures.count(), 3); QCOMPARE(spy1_validGesturesChanged.count(), 1); QCOMPARE(spy1_invalidGesturesChanged.count(), 1); QCOMPARE(spy1_gesturesChanged.count(), 1); //set same gesture again should not emit gesture changed gs1->setGestures(gestures); QCOMPARE(spy1_gesturesChanged.count(), 1); spy1_gesturesChanged.clear(); gestures.clear(); gs1->setGestures(gestures); QCOMPARE(spy1_gesturesChanged.count(), 1); //enable "QtSensors.template" and "QtSensors.template1" gestures << "QtSensors.template" << "QtSensors.template1"; gs1->setEnabled(false); gs1->setGestures(gestures); spy1_enabledChanged.clear(); spy1_detected.clear(); gs1->setEnabled(true); QCOMPARE(spy1_enabledChanged.count(), 1); QCOMPARE(spy1_detected.count(), 2); gs1->setEnabled(false); //check sensor shouldn't run until the componentComplete gets called QmlSensorGesture* gs2 = new QmlSensorGesture(this); QSignalSpy spy2_detected(gs2, SIGNAL(detected(QString))); gs2->setGestures(QStringList() << "QtSensors.template"); gs2->setEnabled(true); QCOMPARE(spy2_detected.count(), 0); gs2->componentComplete(); QCOMPARE(spy2_detected.count(), 1); }