From ef0fd213a74b9bc44f44ee9c65ae144eb3ea7bde Mon Sep 17 00:00:00 2001 From: Lorn Potter Date: Thu, 26 Apr 2012 16:18:41 +1000 Subject: make simulator work better with gestures. code from the plugin has been moved into the manager so that every other plugin can be triggered by the emluator. Change-Id: I37232ab6d45a027541ab1b5c504b2844049ba522 Reviewed-by: Lincoln Ramsay --- doc/src/qtsensorgestures-emulator.qdoc | 43 ++------ src/plugins/sensorgestures/sensorgestures.pro | 1 - src/plugins/sensorgestures/simulator/plugin.json | 1 - .../simulator/qsimulatorrecognizer.cpp | 107 -------------------- .../simulator/qsimulatorrecognizer.h | 75 -------------- .../simulator/qsimulatorsensorgestureplugin.cpp | 77 --------------- .../simulator/qsimulatorsensorgestureplugin.h | 67 ------------- src/plugins/sensorgestures/simulator/simulator.pro | 27 ------ .../simulator/simulatorgesturescommon.cpp | 101 ------------------- .../simulator/simulatorgesturescommon.h | 79 --------------- .../gestures/qsensorgesturemanagerprivate.cpp | 47 +++++++++ .../gestures/qsensorgesturemanagerprivate_p.h | 9 ++ src/sensors/gestures/simulatorgesturescommon.cpp | 108 +++++++++++++++++++++ src/sensors/gestures/simulatorgesturescommon_p.h | 93 ++++++++++++++++++ src/sensors/sensors.pro | 10 ++ 15 files changed, 273 insertions(+), 572 deletions(-) delete mode 100644 src/plugins/sensorgestures/simulator/plugin.json delete mode 100644 src/plugins/sensorgestures/simulator/qsimulatorrecognizer.cpp delete mode 100644 src/plugins/sensorgestures/simulator/qsimulatorrecognizer.h delete mode 100644 src/plugins/sensorgestures/simulator/qsimulatorsensorgestureplugin.cpp delete mode 100644 src/plugins/sensorgestures/simulator/qsimulatorsensorgestureplugin.h delete mode 100644 src/plugins/sensorgestures/simulator/simulator.pro delete mode 100644 src/plugins/sensorgestures/simulator/simulatorgesturescommon.cpp delete mode 100644 src/plugins/sensorgestures/simulator/simulatorgesturescommon.h create mode 100644 src/sensors/gestures/simulatorgesturescommon.cpp create mode 100644 src/sensors/gestures/simulatorgesturescommon_p.h diff --git a/doc/src/qtsensorgestures-emulator.qdoc b/doc/src/qtsensorgestures-emulator.qdoc index f6692783..c25ff59e 100644 --- a/doc/src/qtsensorgestures-emulator.qdoc +++ b/doc/src/qtsensorgestures-emulator.qdoc @@ -34,49 +34,18 @@ Whether creating client apps using Qt's built-in sensor gestures, or creating customized recognizers, the Emulator can be used to help develop client -apps and recognizers using the special 'QtSensors.emulator' plugin to send -arbitrary signals to the emulator environment. +apps and recognizers. \section1 Developing sensor gesture clients. For instance, the Emulator can be used for writing a client app that needs -to use a 'spin' gesture. The app can temporarily connect and start the -'QtSensors.emulator' plugin in the Emulator. +to use the 'slam' gesture. Under the 'Sensors' heading in the Emulator control, you will see an edit -box for 'Sensor gestures'. +box for 'Sensor gestures' that will contain a list of signals available +when your client instantiates a QSensorGesture. -Type the word, "spin", hit enter to set it, and then click the 'Send' button -to send a detected("spin") signal to the QtSensors.emulator plugin. - -You do not even need to wait for the recognizer plugin to be written! - -\section1 Developing sensor gesture plugins. - -Once the recognizer is written, the scripting facility may be used in the Emulator -to script the sensors to trigger your custom plugins signals. - -A sensor gesture script for the 'turnover' gesture looks like this: - -\code -// simulate turnover gesture - -//set the phone FaceUp -sensors.accelerometerX = 0 -sensors.accelerometerZ = 9.8 -sensors.accelerometerY = 0 -yield(100) - - -// set the phone FaceDown -sensors.accelerometerZ = -9.8 - -// set the Proximity to close -sensors.proximitySensorClose = true - -\endcode - -This will cause the simulator sensor plugin to send these signals to a real recognizer plugin -as real QAccelerometer and QProximity sensor values. +Select 'slam', and then click the 'Send' button +to send a detected("slam") signal to the client. */ diff --git a/src/plugins/sensorgestures/sensorgestures.pro b/src/plugins/sensorgestures/sensorgestures.pro index 3882709b..162fb8eb 100644 --- a/src/plugins/sensorgestures/sensorgestures.pro +++ b/src/plugins/sensorgestures/sensorgestures.pro @@ -1,3 +1,2 @@ TEMPLATE = subdirs SUBDIRS += shake qtsensors -simulator:SUBDIRS += simulator diff --git a/src/plugins/sensorgestures/simulator/plugin.json b/src/plugins/sensorgestures/simulator/plugin.json deleted file mode 100644 index 8a55b3ae..00000000 --- a/src/plugins/sensorgestures/simulator/plugin.json +++ /dev/null @@ -1 +0,0 @@ -{ "Keys": [ "notused" ] } diff --git a/src/plugins/sensorgestures/simulator/qsimulatorrecognizer.cpp b/src/plugins/sensorgestures/simulator/qsimulatorrecognizer.cpp deleted file mode 100644 index 3b627ff3..00000000 --- a/src/plugins/sensorgestures/simulator/qsimulatorrecognizer.cpp +++ /dev/null @@ -1,107 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the QtSensors module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include -#include - -#include "qsimulatorrecognizer.h" -#include "simulatorgesturescommon.h" - -QSimulatorSensorGestureRecognizer::QSimulatorSensorGestureRecognizer(QObject *parent) - : QSensorGestureRecognizer(parent) -{ - timer = new QTimer(this); - connect(timer,SIGNAL(timeout()),this,SLOT(timeout())); - - timer->setInterval(1000); -} - -QSimulatorSensorGestureRecognizer::~QSimulatorSensorGestureRecognizer() -{ - if (timer->isActive()) - timer->stop(); -} - -void QSimulatorSensorGestureRecognizer::create() -{ - SensorGesturesConnection *connection = new SensorGesturesConnection(this); - connect(connection,SIGNAL(sensorGestureDetected()),this,SLOT(sensorGestureDetected())); -} - -void QSimulatorSensorGestureRecognizer::sensorGestureDetected() -{ - detectingState = true; -} - - -bool QSimulatorSensorGestureRecognizer::start() -{ - timer->start(); - timeout(); - return timer->isActive(); -} - -bool QSimulatorSensorGestureRecognizer::stop() -{ - timer->stop(); - return timer->isActive(); -} - - -bool QSimulatorSensorGestureRecognizer::isActive() -{ - return timer->isActive(); -} - -QString QSimulatorSensorGestureRecognizer::id() const -{ - return QString("QtSensors.emulator"); -} - -void QSimulatorSensorGestureRecognizer::timeout() -{ - if (detectingState) { - QString str = get_qtSensorGestureData(); - emit detected(str); - detectingState = false; - } -} diff --git a/src/plugins/sensorgestures/simulator/qsimulatorrecognizer.h b/src/plugins/sensorgestures/simulator/qsimulatorrecognizer.h deleted file mode 100644 index a301a5f8..00000000 --- a/src/plugins/sensorgestures/simulator/qsimulatorrecognizer.h +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the QtSensors module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QSIMULATORRECOGNIZER_H -#define QSIMULATORRECOGNIZER_H - -#include -#include - -#include - -class QSimulatorSensorGestureRecognizer : public QSensorGestureRecognizer -{ - Q_OBJECT - -public: - - QSimulatorSensorGestureRecognizer(QObject *parent = 0); - ~QSimulatorSensorGestureRecognizer(); - - void create(); - - QString id() const; - bool start(); - bool stop(); - bool isActive(); - -private slots: - void timeout(); - void sensorGestureDetected(); -private: - bool detectingState; - QTimer *timer; - -}; - -#endif // QSHAKERECOGNIZER_H diff --git a/src/plugins/sensorgestures/simulator/qsimulatorsensorgestureplugin.cpp b/src/plugins/sensorgestures/simulator/qsimulatorsensorgestureplugin.cpp deleted file mode 100644 index 66dcd854..00000000 --- a/src/plugins/sensorgestures/simulator/qsimulatorsensorgestureplugin.cpp +++ /dev/null @@ -1,77 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the QtSensors module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include -#include - -#include "qsimulatorsensorgestureplugin.h" - -#include -#include - -#include "qsimulatorrecognizer.h" - - -QSimulatorSensorGesturePlugin::QSimulatorSensorGesturePlugin() -{ -} - -QSimulatorSensorGesturePlugin::~QSimulatorSensorGesturePlugin() -{ -} - -QStringList QSimulatorSensorGesturePlugin::supportedIds() const -{ - QStringList list; - list << "QtSensors.emulator"; - return list; -} - -QList QSimulatorSensorGesturePlugin::createRecognizers() -{ - QList recognizers; - - QSensorGestureRecognizer *sRec = new QSimulatorSensorGestureRecognizer(this); - recognizers.append(sRec); - - return recognizers; -} diff --git a/src/plugins/sensorgestures/simulator/qsimulatorsensorgestureplugin.h b/src/plugins/sensorgestures/simulator/qsimulatorsensorgestureplugin.h deleted file mode 100644 index 4f598007..00000000 --- a/src/plugins/sensorgestures/simulator/qsimulatorsensorgestureplugin.h +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the QtSensors module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QSIMULATORSENSORGESTUREPLUGIN_H -#define QSIMULATORSENSORGESTUREPLUGIN_H - -#include -#include - -#include - -class QSimulatorSensorGesturePlugin : public QObject, public QSensorGesturePluginInterface -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "com.Nokia.QSensorGesturePluginInterface" FILE "plugin.json") - Q_INTERFACES(QSensorGesturePluginInterface) - -public: - explicit QSimulatorSensorGesturePlugin(); - ~QSimulatorSensorGesturePlugin(); - - QList createRecognizers(); - - QStringList gestureSignals() const; - QStringList supportedIds() const; - QString name() const { return "EmulatorGestures"; } -}; - -#endif // QSIMULATORSENSORGESTUREPLUGIN_H diff --git a/src/plugins/sensorgestures/simulator/simulator.pro b/src/plugins/sensorgestures/simulator/simulator.pro deleted file mode 100644 index 5f1712d1..00000000 --- a/src/plugins/sensorgestures/simulator/simulator.pro +++ /dev/null @@ -1,27 +0,0 @@ -load(qt_module) - -TARGET = qtsensorgestures_simulator -load(qt_plugin) - -DESTDIR = $$QT.sensors.plugins/sensorgestures - -QT=core gui network sensors simulator - -target.path += $$[QT_INSTALL_PLUGINS]/sensorgestures -INSTALLS += target - -HEADERS += \ - simulatorgesturescommon.h\ - qsimulatorrecognizer.h\ - qsimulatorsensorgestureplugin.h - - -SOURCES += \ - simulatorgesturescommon.cpp\ - qsimulatorrecognizer.cpp\ - qsimulatorsensorgestureplugin.cpp - -OTHER_FILES += \ - plugin.json - - diff --git a/src/plugins/sensorgestures/simulator/simulatorgesturescommon.cpp b/src/plugins/sensorgestures/simulator/simulatorgesturescommon.cpp deleted file mode 100644 index c9db8f9f..00000000 --- a/src/plugins/sensorgestures/simulator/simulatorgesturescommon.cpp +++ /dev/null @@ -1,101 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the QtSensors module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "simulatorgesturescommon.h" - -#include -#include -#include - -using namespace Simulator; - - -Q_GLOBAL_STATIC(QString, qtSensorGestureData) - -SensorGesturesConnection::SensorGesturesConnection(QObject *parent) - : QObject(parent) -{ - mConnection = new Connection(Connection::Client, "QtSimulator_Mobility_ServerName1.3.0.0", - 0xbeef+1, Version(1,0,0,0), this); - mWorker = mConnection->connectToServer(Connection::simulatorHostName(true), 0xbeef+1); - - if (!mWorker) { - qWarning() << "Could not connect to server"; - return; - } - newSensorGestures(); - - mWorker->addReceiver(this); - mWorker->call("setRequestsSensorGestures"); -} - -SensorGesturesConnection::~SensorGesturesConnection() -{ - delete mWorker; -} - -void SensorGesturesConnection::setSensorGestureData(const QString &data) -{ - QString gesture = data; - if (data.contains("detected")) { - gesture.remove("detected("); - gesture.remove(")"); - } - *qtSensorGestureData() = gesture; -} - -void SensorGesturesConnection::newSensorGestureDetected() -{ - emit sensorGestureDetected(); -} - -void SensorGesturesConnection::newSensorGestures() -{ - QStringList allGestures; - allGestures << "shake"; - mWorker->call("setSensorGestures", allGestures); -} - -QString get_qtSensorGestureData() -{ - return *qtSensorGestureData(); -} - diff --git a/src/plugins/sensorgestures/simulator/simulatorgesturescommon.h b/src/plugins/sensorgestures/simulator/simulatorgesturescommon.h deleted file mode 100644 index aa07b8b1..00000000 --- a/src/plugins/sensorgestures/simulator/simulatorgesturescommon.h +++ /dev/null @@ -1,79 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** This file is part of the QtSensors module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef SIMULATORGESTURESCOMMON_H -#define SIMULATORGESTURESCOMMON_H - -#include -#include - -class QTimer; - -namespace Simulator -{ - class Connection; - class ConnectionWorker; -} - -class SensorGesturesConnection : public QObject -{ - Q_OBJECT -public: - explicit SensorGesturesConnection(QObject *parent = 0); - virtual ~SensorGesturesConnection(); - -Q_SIGNALS: - void sensorGestureDetected(); - -public slots: - void setSensorGestureData(const QString &); - void newSensorGestureDetected(); - void newSensorGestures(); - -private: - Simulator::Connection *mConnection; - Simulator::ConnectionWorker *mWorker; -}; - -QString get_qtSensorGestureData(); - -#endif //SIMULATORGESTURESCOMMON_H - diff --git a/src/sensors/gestures/qsensorgesturemanagerprivate.cpp b/src/sensors/gestures/qsensorgesturemanagerprivate.cpp index cc5d1034..eaaf8e3c 100644 --- a/src/sensors/gestures/qsensorgesturemanagerprivate.cpp +++ b/src/sensors/gestures/qsensorgesturemanagerprivate.cpp @@ -48,11 +48,24 @@ #include "qsensorgesturemanagerprivate_p.h" #include "qsensorgestureplugininterface.h" +#ifdef SIMULATOR_BUILD +#include "simulatorgesturescommon_p.h" +#endif + QT_BEGIN_NAMESPACE QSensorGestureManagerPrivate::QSensorGestureManagerPrivate(QObject *parent) : QObject(parent) { +#ifdef SIMULATOR_BUILD + SensorGesturesConnection *connection = new SensorGesturesConnection(this); + connect(connection,SIGNAL(sensorGestureDetected()), + this,SLOT(sensorGestureDetected())); + + connect(this,SIGNAL(newSensorGestures(QStringList)), + connection,SLOT(newSensorGestures(QStringList))); +#endif + loader = new QFactoryLoader("com.Nokia.QSensorGesturePluginInterface", QLatin1String("/sensorgestures")); loadPlugins(); } @@ -133,6 +146,11 @@ bool QSensorGestureManagerPrivate::loadRecognizer(const QString &recognizerId) delete recognizer; } else { registeredSensorGestures.insert(recognizer->id(),recognizer); + +#ifdef SIMULATOR_BUILD + QStringList list = recognizer->gestureSignals(); + Q_EMIT newSensorGestures(list); +#endif } } } @@ -173,5 +191,34 @@ QStringList QSensorGestureManagerPrivate::gestureIds() return knownIds; } +#ifdef SIMULATOR_BUILD +void QSensorGestureManagerPrivate::sensorGestureDetected() +{ + QString str = get_qtSensorGestureData(); + + Q_FOREACH (const QString &id, gestureIds()) { + QSensorGestureRecognizer *recognizer = sensorGestureRecognizer(id); + if (recognizer != 0) { + Q_FOREACH (const QString &sig, recognizer->gestureSignals()) { + if (!sig.contains("detected")) { //weed out detected signals + QString tmp; + tmp = sig.left(sig.length() - 2); + if (str == tmp) { + // named signal for c++ + QMetaObject::invokeMethod(recognizer, str.toLocal8Bit(), Qt::DirectConnection); + // detected signal for qml and c++ + QMetaObject::invokeMethod(recognizer, "detected", Qt::DirectConnection, + Q_ARG(QString, str)); + break; + + } + } + } + } + } +} + +#endif + QT_END_NAMESPACE diff --git a/src/sensors/gestures/qsensorgesturemanagerprivate_p.h b/src/sensors/gestures/qsensorgesturemanagerprivate_p.h index e67c9749..4d3d9c4d 100644 --- a/src/sensors/gestures/qsensorgesturemanagerprivate_p.h +++ b/src/sensors/gestures/qsensorgesturemanagerprivate_p.h @@ -80,6 +80,15 @@ public: void initPlugin(QObject *o); Q_SIGNALS: void newSensorGestureAvailable(); + +#ifdef SIMULATOR_BUILD +Q_SIGNALS: + void newSensorGestures(QStringList); + +private slots: + void sensorGestureDetected(); + +#endif }; QT_END_NAMESPACE diff --git a/src/sensors/gestures/simulatorgesturescommon.cpp b/src/sensors/gestures/simulatorgesturescommon.cpp new file mode 100644 index 00000000..128db508 --- /dev/null +++ b/src/sensors/gestures/simulatorgesturescommon.cpp @@ -0,0 +1,108 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the QtSensors module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "simulatorgesturescommon_p.h" + +#include +#include + +#include +#include + +using namespace Simulator; + + +Q_GLOBAL_STATIC(QString, qtSensorGestureData) + +SensorGesturesConnection::SensorGesturesConnection(QObject *parent) + : QObject(parent) +{ + mConnection = new Connection(Connection::Client, QLatin1String("QtSimulator_Mobility_ServerName1.3.0.0"), + 0xbeef+1, Version(1,0,0,0), this); + mWorker = mConnection->connectToServer(Connection::simulatorHostName(true), 0xbeef+1); + + if (!mWorker) { + qWarning() << "Could not connect to server"; + return; + } + + mWorker->addReceiver(this); + mWorker->call("setRequestsSensorGestures"); +} + +SensorGesturesConnection::~SensorGesturesConnection() +{ + delete mWorker; +} + +void SensorGesturesConnection::setSensorGestureData(const QString &data) +{ + QString gesture = data; + if (data.contains(QLatin1String("detected"))) { + gesture.remove(QLatin1String("detected(")); + gesture.remove(QLatin1String(")")); + } + *qtSensorGestureData() = gesture; +} + +void SensorGesturesConnection::newSensorGestureDetected() +{ + emit sensorGestureDetected(); +} + +void SensorGesturesConnection::newSensorGestures(const QStringList &gestures) +{ + Q_FOREACH (const QString &gest, gestures) { + if (!gest.contains(QLatin1String("detected"))) { + QString tmp = gest.left(gest.length()-2); + if (!allGestures.contains(tmp)) { + allGestures.append(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 new file mode 100644 index 00000000..6fd0d754 --- /dev/null +++ b/src/sensors/gestures/simulatorgesturescommon_p.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the QtSensors module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef SIMULATORGESTURESCOMMON_H +#define SIMULATORGESTURESCOMMON_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +class QTimer; + +namespace Simulator +{ + class Connection; + class ConnectionWorker; +} + +class SensorGesturesConnection : public QObject +{ + Q_OBJECT +public: + explicit SensorGesturesConnection(QObject *parent = 0); + virtual ~SensorGesturesConnection(); + +Q_SIGNALS: + void sensorGestureDetected(); + +public slots: + void setSensorGestureData(const QString &); + void newSensorGestureDetected(); + void newSensorGestures(const QStringList &gestures); + +private: + Simulator::Connection *mConnection; + Simulator::ConnectionWorker *mWorker; + QStringList allGestures; + +}; + +QString get_qtSensorGestureData(); + +#endif //SIMULATORGESTURESCOMMON_H + diff --git a/src/sensors/sensors.pro b/src/sensors/sensors.pro index dc5f8db9..6435ec0f 100644 --- a/src/sensors/sensors.pro +++ b/src/sensors/sensors.pro @@ -14,6 +14,11 @@ QT = core core-private DEFINES += QT_BUILD_SENSORS_LIB QT_MAKEDLL !isEmpty(SENSORS_CONFIG_PATH):DEFINES += "QTSENSORS_CONFIG_PATH=\\\"$$SENSORS_CONFIG_PATH\\\"" +simulator { + DEFINES += SIMULATOR_BUILD + QT += simulator +} + load(qt_module_config) HEADERS += qtsensorsversion.h @@ -67,6 +72,11 @@ GESTURE_HEADERS += \ gestures/qsensorgesturemanagerprivate_p.h \ gestures/qsensorgestureplugininterface.h +simulator { + SOURCES += gestures/simulatorgesturescommon.cpp + GESTURE_HEADERS += gestures/simulatorgesturescommon_p.h +} + # 3 files per sensor (including QSensor) SENSORS=\ qsensor\ -- cgit v1.2.3