summaryrefslogtreecommitdiffstats
path: root/src/sensors
diff options
context:
space:
mode:
Diffstat (limited to 'src/sensors')
-rw-r--r--src/sensors/gestures/qsensorgesturemanagerprivate.cpp47
-rw-r--r--src/sensors/gestures/qsensorgesturemanagerprivate_p.h9
-rw-r--r--src/sensors/gestures/simulatorgesturescommon.cpp108
-rw-r--r--src/sensors/gestures/simulatorgesturescommon_p.h93
-rw-r--r--src/sensors/sensors.pro10
5 files changed, 267 insertions, 0 deletions
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 <QtSimulator/version.h>
+#include <QtSimulator/QtSimulator>
+
+#include <QDebug>
+#include <QStringList>
+
+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 <QtSimulator/connection.h>
+#include <QtSimulator/connectionworker.h>
+#include <QStringList>
+
+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\