diff options
author | Lincoln Ramsay <lincoln.ramsay@nokia.com> | 2012-03-14 16:33:19 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-16 08:02:30 +0100 |
commit | 8d25a4a58c47431c589d8cbbc82e442360cf7e63 (patch) | |
tree | 14d4c0f123e602e8528298346f72df5debd2936c | |
parent | b6d87d1b5141987452bc30e8b1d4115998ba6fd9 (diff) | |
download | qtsensors-8d25a4a58c47431c589d8cbbc82e442360cf7e63.tar.gz |
Use the new plugin mechanism for Sensors and SensorGestures
Plugins no longer use QFactoryInterface or Q_EXPORT_PLUGIN. Instead,
Q_PLUGIN_METADATA is used.
Meta-data is provided through a .json file that is embedded into the
plugin by moc.
For now, this meta-data is not actually used because both sensors
and gestures use a dynamic registration mechanism.
Change-Id: Ic82657e2ba5768127e13f7411ca51f60772781d8
Reviewed-by: Lincoln Ramsay <lincoln.ramsay@nokia.com>
46 files changed, 98 insertions, 121 deletions
diff --git a/doc/src/snippets/sensorgestures/myplugin.h b/doc/src/snippets/sensorgestures/myplugin.h index e816534..ad3fba0 100644 --- a/doc/src/snippets/sensorgestures/myplugin.h +++ b/doc/src/snippets/sensorgestures/myplugin.h @@ -68,7 +68,9 @@ Q_SIGNALS: class MySensorGesturePlugin : public QObject, public QSensorGesturePluginInterface { Q_OBJECT - Q_INTERFACES(QSensorGesturePluginInterface:QFactoryInterface) + //Q_PLUGIN_METADATA(IID "com.Nokia.QSensorGesturePluginInterface" FILE "plugin.json") + Q_INTERFACES(QSensorGesturePluginInterface) +public: explicit MySensorGesturePlugin(); ~MySensorGesturePlugin(); @@ -78,6 +80,4 @@ class MySensorGesturePlugin : public QObject, public QSensorGesturePluginInterfa QString name() const { return "MyGestures"; } }; -//Q_EXPORT_PLUGIN2(MySensorGestureRecognizer, MySensorGesturePlugin) - #endif diff --git a/doc/src/snippets/sensorgestures/plugin.cpp b/doc/src/snippets/sensorgestures/plugin.cpp index 02b3dbd..35c21ba 100644 --- a/doc/src/snippets/sensorgestures/plugin.cpp +++ b/doc/src/snippets/sensorgestures/plugin.cpp @@ -98,6 +98,3 @@ QStringList MySensorGesturePlugin::supportedIds() const } //! [Plugin] - -//Q_EXPORT_PLUGIN2(libmy_plugin_file_name, MySensorGesturePlugin); -//#include "plugin.moc" diff --git a/doc/src/snippets/sensors/plugin.cpp b/doc/src/snippets/sensors/plugin.cpp index b75cd64..fb0708f 100644 --- a/doc/src/snippets/sensors/plugin.cpp +++ b/doc/src/snippets/sensors/plugin.cpp @@ -48,7 +48,8 @@ const char *MyBackend::id = "mybackend"; class MyPluginClass : public QObject, public QSensorPluginInterface, public QSensorBackendFactory { Q_OBJECT - Q_INTERFACES(QSensorPluginInterface:QFactoryInterface) + //Q_PLUGIN_METADATA(IID "com.nokia.Qt.QSensorPluginInterface/1.0" FILE "plugin.json") + Q_INTERFACES(QSensorPluginInterface) public: void registerSensors() { @@ -61,9 +62,7 @@ public: return new MyBackend(sensor); return 0; } - QStringList keys() const { return QStringList() << "myplugin";} }; //! [Plugin] -//Q_EXPORT_PLUGIN2(libmy_plugin_file_name, MyPluginClass); #include "plugin.moc" diff --git a/examples/sensors/grue/plugin/main.cpp b/examples/sensors/grue/plugin/main.cpp index 713b12e..36aec29 100644 --- a/examples/sensors/grue/plugin/main.cpp +++ b/examples/sensors/grue/plugin/main.cpp @@ -48,7 +48,8 @@ class GrueSensorPlugin : public QObject, public QSensorPluginInterface, public QSensorChangesInterface, public QSensorBackendFactory { Q_OBJECT - Q_INTERFACES(QSensorPluginInterface:QFactoryInterface QSensorChangesInterface) + Q_PLUGIN_METADATA(IID "com.nokia.Qt.QSensorPluginInterface/1.0" FILE "plugin.json") + Q_INTERFACES(QSensorPluginInterface QSensorChangesInterface) public: void registerSensors() { @@ -74,10 +75,7 @@ public: return 0; } - QStringList keys() const { return QStringList() << "grue";} }; -Q_EXPORT_PLUGIN2(libsensors_grueplugin, GrueSensorPlugin) - #include "main.moc" diff --git a/examples/sensors/grue/plugin/plugin.json b/examples/sensors/grue/plugin/plugin.json new file mode 100644 index 0000000..8a55b3a --- /dev/null +++ b/examples/sensors/grue/plugin/plugin.json @@ -0,0 +1 @@ +{ "Keys": [ "notused" ] } diff --git a/examples/sensors/grue/plugin/plugin.pro b/examples/sensors/grue/plugin/plugin.pro index 90d7a01..489a1ce 100644 --- a/examples/sensors/grue/plugin/plugin.pro +++ b/examples/sensors/grue/plugin/plugin.pro @@ -16,3 +16,6 @@ SOURCES += gruesensorimpl.cpp\ target.path=$$[QT_INSTALL_PLUGINS]/sensors INSTALLS += target +OTHER_FILES += \ + plugin.json + diff --git a/examples/sensors/qmlsensorgestures/plugin/plugin.json b/examples/sensors/qmlsensorgestures/plugin/plugin.json new file mode 100644 index 0000000..8a55b3a --- /dev/null +++ b/examples/sensors/qmlsensorgestures/plugin/plugin.json @@ -0,0 +1 @@ +{ "Keys": [ "notused" ] } diff --git a/examples/sensors/qmlsensorgestures/plugin/plugin.pro b/examples/sensors/qmlsensorgestures/plugin/plugin.pro index 0e9cb1a..2003e91 100644 --- a/examples/sensors/qmlsensorgestures/plugin/plugin.pro +++ b/examples/sensors/qmlsensorgestures/plugin/plugin.pro @@ -16,3 +16,6 @@ SOURCES += \ target.path += $$[QT_INSTALL_PLUGINS]/sensorgestures INSTALLS += target +OTHER_FILES += \ + plugin.json + diff --git a/examples/sensors/qmlsensorgestures/plugin/qcountergestureplugin.cpp b/examples/sensors/qmlsensorgestures/plugin/qcountergestureplugin.cpp index 0d3f2c5..1fda187 100644 --- a/examples/sensors/qmlsensorgestures/plugin/qcountergestureplugin.cpp +++ b/examples/sensors/qmlsensorgestures/plugin/qcountergestureplugin.cpp @@ -73,6 +73,3 @@ QList <QSensorGestureRecognizer *> QCounterGesturePlugin::createRecognizers() return recognizers; } - -Q_EXPORT_PLUGIN2(QCounterGestureRecognizer, QCounterGesturePlugin) - diff --git a/examples/sensors/qmlsensorgestures/plugin/qcountergestureplugin.h b/examples/sensors/qmlsensorgestures/plugin/qcountergestureplugin.h index 9b73969..4755f96 100644 --- a/examples/sensors/qmlsensorgestures/plugin/qcountergestureplugin.h +++ b/examples/sensors/qmlsensorgestures/plugin/qcountergestureplugin.h @@ -49,7 +49,8 @@ class QCounterGesturePlugin : public QObject, public QSensorGesturePluginInterface { Q_OBJECT - Q_INTERFACES(QSensorGesturePluginInterface:QFactoryInterface) + Q_PLUGIN_METADATA(IID "com.Nokia.QSensorGesturePluginInterface" FILE "plugin.json") + Q_INTERFACES(QSensorGesturePluginInterface) public: explicit QCounterGesturePlugin(); diff --git a/src/plugins/sensorgestures/qtsensors/plugin.json b/src/plugins/sensorgestures/qtsensors/plugin.json new file mode 100644 index 0000000..8a55b3a --- /dev/null +++ b/src/plugins/sensorgestures/qtsensors/plugin.json @@ -0,0 +1 @@ +{ "Keys": [ "notused" ] } diff --git a/src/plugins/sensorgestures/qtsensors/qtsensorgestureplugin.cpp b/src/plugins/sensorgestures/qtsensors/qtsensorgestureplugin.cpp index e770d36..1104420 100644 --- a/src/plugins/sensorgestures/qtsensors/qtsensorgestureplugin.cpp +++ b/src/plugins/sensorgestures/qtsensors/qtsensorgestureplugin.cpp @@ -109,7 +109,4 @@ QList <QSensorGestureRecognizer *> QtSensorGesturePlugin::createRecognizers() return recognizers; } - -Q_EXPORT_PLUGIN2(qtsensorgestures_plugin, QtSensorGesturePlugin) - QT_END_NAMESPACE diff --git a/src/plugins/sensorgestures/qtsensors/qtsensorgestureplugin.h b/src/plugins/sensorgestures/qtsensors/qtsensorgestureplugin.h index 75e4a2f..7504509 100644 --- a/src/plugins/sensorgestures/qtsensors/qtsensorgestureplugin.h +++ b/src/plugins/sensorgestures/qtsensors/qtsensorgestureplugin.h @@ -52,7 +52,8 @@ QT_BEGIN_NAMESPACE class QtSensorGesturePlugin : public QObject, public QSensorGesturePluginInterface { Q_OBJECT - Q_INTERFACES(QSensorGesturePluginInterface:QFactoryInterface) + Q_PLUGIN_METADATA(IID "com.Nokia.QSensorGesturePluginInterface" FILE "plugin.json") + Q_INTERFACES(QSensorGesturePluginInterface) public: explicit QtSensorGesturePlugin(); diff --git a/src/plugins/sensorgestures/qtsensors/qtsensors.pro b/src/plugins/sensorgestures/qtsensors/qtsensors.pro index e469fda..b02ef3d 100644 --- a/src/plugins/sensorgestures/qtsensors/qtsensors.pro +++ b/src/plugins/sensorgestures/qtsensors/qtsensors.pro @@ -34,3 +34,6 @@ SOURCES += qtsensorgestureplugin.cpp \ target.path += $$[QT_INSTALL_PLUGINS]/sensorgestures INSTALLS += target +OTHER_FILES += \ + plugin.json + diff --git a/src/plugins/sensorgestures/shake/plugin.json b/src/plugins/sensorgestures/shake/plugin.json new file mode 100644 index 0000000..8a55b3a --- /dev/null +++ b/src/plugins/sensorgestures/shake/plugin.json @@ -0,0 +1 @@ +{ "Keys": [ "notused" ] } diff --git a/src/plugins/sensorgestures/shake/qshakesensorgestureplugin.cpp b/src/plugins/sensorgestures/shake/qshakesensorgestureplugin.cpp index 7bba604..1c9b450 100644 --- a/src/plugins/sensorgestures/shake/qshakesensorgestureplugin.cpp +++ b/src/plugins/sensorgestures/shake/qshakesensorgestureplugin.cpp @@ -74,6 +74,3 @@ QList <QSensorGestureRecognizer *> QShakeSensorGesturePlugin::createRecognizers( return recognizers; } - -Q_EXPORT_PLUGIN2(qtsensorgestures_shakeplugin, QShakeSensorGesturePlugin) - diff --git a/src/plugins/sensorgestures/shake/qshakesensorgestureplugin.h b/src/plugins/sensorgestures/shake/qshakesensorgestureplugin.h index c7ad8d7..826ed0c 100644 --- a/src/plugins/sensorgestures/shake/qshakesensorgestureplugin.h +++ b/src/plugins/sensorgestures/shake/qshakesensorgestureplugin.h @@ -50,7 +50,8 @@ class QShakeSensorGesturePlugin : public QObject, public QSensorGesturePluginInterface { Q_OBJECT - Q_INTERFACES(QSensorGesturePluginInterface:QFactoryInterface) + Q_PLUGIN_METADATA(IID "com.Nokia.QSensorGesturePluginInterface" FILE "plugin.json") + Q_INTERFACES(QSensorGesturePluginInterface) public: explicit QShakeSensorGesturePlugin(); diff --git a/src/plugins/sensorgestures/shake/shake.pro b/src/plugins/sensorgestures/shake/shake.pro index 80197c7..a5e6978 100644 --- a/src/plugins/sensorgestures/shake/shake.pro +++ b/src/plugins/sensorgestures/shake/shake.pro @@ -15,3 +15,6 @@ SOURCES += qshakesensorgestureplugin.cpp \ target.path += $$[QT_INSTALL_PLUGINS]/sensorgestures INSTALLS += target +OTHER_FILES += \ + plugin.json + diff --git a/src/plugins/sensorgestures/simulator/plugin.json b/src/plugins/sensorgestures/simulator/plugin.json new file mode 100644 index 0000000..8a55b3a --- /dev/null +++ b/src/plugins/sensorgestures/simulator/plugin.json @@ -0,0 +1 @@ +{ "Keys": [ "notused" ] } diff --git a/src/plugins/sensorgestures/simulator/qsimulatorsensorgestureplugin.cpp b/src/plugins/sensorgestures/simulator/qsimulatorsensorgestureplugin.cpp index a8d45a1..66dcd85 100644 --- a/src/plugins/sensorgestures/simulator/qsimulatorsensorgestureplugin.cpp +++ b/src/plugins/sensorgestures/simulator/qsimulatorsensorgestureplugin.cpp @@ -75,6 +75,3 @@ QList <QSensorGestureRecognizer *> QSimulatorSensorGesturePlugin::createRecogniz return recognizers; } - -Q_EXPORT_PLUGIN2(QSimulatorSensorGestureRecognizer, QSimulatorSensorGesturePlugin) - diff --git a/src/plugins/sensorgestures/simulator/qsimulatorsensorgestureplugin.h b/src/plugins/sensorgestures/simulator/qsimulatorsensorgestureplugin.h index 9fe91bd..4f59800 100644 --- a/src/plugins/sensorgestures/simulator/qsimulatorsensorgestureplugin.h +++ b/src/plugins/sensorgestures/simulator/qsimulatorsensorgestureplugin.h @@ -50,7 +50,8 @@ class QSimulatorSensorGesturePlugin : public QObject, public QSensorGesturePluginInterface { Q_OBJECT - Q_INTERFACES(QSensorGesturePluginInterface:QFactoryInterface) + Q_PLUGIN_METADATA(IID "com.Nokia.QSensorGesturePluginInterface" FILE "plugin.json") + Q_INTERFACES(QSensorGesturePluginInterface) public: explicit QSimulatorSensorGesturePlugin(); diff --git a/src/plugins/sensorgestures/simulator/simulator.pro b/src/plugins/sensorgestures/simulator/simulator.pro index 015d01f..5f1712d 100644 --- a/src/plugins/sensorgestures/simulator/simulator.pro +++ b/src/plugins/sensorgestures/simulator/simulator.pro @@ -21,4 +21,7 @@ SOURCES += \ qsimulatorrecognizer.cpp\ qsimulatorsensorgestureplugin.cpp +OTHER_FILES += \ + plugin.json + diff --git a/src/plugins/sensors/dummy/dummy.pri b/src/plugins/sensors/dummy/dummy.pri deleted file mode 100644 index 502081c..0000000 --- a/src/plugins/sensors/dummy/dummy.pri +++ /dev/null @@ -1,9 +0,0 @@ -HEADERS += dummycommon.h\ - dummyaccelerometer.h\ - dummylightsensor.h\ - -SOURCES += dummycommon.cpp\ - dummyaccelerometer.cpp\ - dummylightsensor.cpp\ - main.cpp\ - diff --git a/src/plugins/sensors/dummy/dummy.pro b/src/plugins/sensors/dummy/dummy.pro index b49c0be..2cf1392 100644 --- a/src/plugins/sensors/dummy/dummy.pro +++ b/src/plugins/sensors/dummy/dummy.pro @@ -7,7 +7,16 @@ load(qt_plugin) DESTDIR = $$QT.sensors.plugins/sensors -include(dummy.pri) +HEADERS += dummycommon.h\ + dummyaccelerometer.h\ + dummylightsensor.h + +SOURCES += dummycommon.cpp\ + dummyaccelerometer.cpp\ + dummylightsensor.cpp\ + main.cpp + +OTHER_FILES = plugin.json unix:!mac:LIBS+=-lrt diff --git a/src/plugins/sensors/dummy/main.cpp b/src/plugins/sensors/dummy/main.cpp index b9aa7d2..df69c5f 100644 --- a/src/plugins/sensors/dummy/main.cpp +++ b/src/plugins/sensors/dummy/main.cpp @@ -50,7 +50,8 @@ class dummySensorPlugin : public QObject, public QSensorPluginInterface, public QSensorBackendFactory { Q_OBJECT - Q_INTERFACES(QSensorPluginInterface:QFactoryInterface) + Q_PLUGIN_METADATA(IID "com.nokia.Qt.QSensorPluginInterface/1.0" FILE "plugin.json") + Q_INTERFACES(QSensorPluginInterface) public: void registerSensors() { @@ -71,10 +72,7 @@ public: return 0; } - QStringList keys() const { return QStringList() << "dummy";} }; -Q_EXPORT_PLUGIN2(qtsensors_dummy, dummySensorPlugin) - #include "main.moc" diff --git a/src/plugins/sensors/dummy/plugin.json b/src/plugins/sensors/dummy/plugin.json new file mode 100644 index 0000000..8a55b3a --- /dev/null +++ b/src/plugins/sensors/dummy/plugin.json @@ -0,0 +1 @@ +{ "Keys": [ "notused" ] } diff --git a/src/plugins/sensors/generic/generic.pri b/src/plugins/sensors/generic/generic.pri deleted file mode 100644 index 69efdc0..0000000 --- a/src/plugins/sensors/generic/generic.pri +++ /dev/null @@ -1,9 +0,0 @@ -HEADERS += genericorientationsensor.h\ - genericrotationsensor.h\ - genericalssensor.h - -SOURCES += genericorientationsensor.cpp\ - main.cpp\ - genericrotationsensor.cpp\ - genericalssensor.cpp - diff --git a/src/plugins/sensors/generic/generic.pro b/src/plugins/sensors/generic/generic.pro index 3d9e9cc..c5b2bab 100644 --- a/src/plugins/sensors/generic/generic.pro +++ b/src/plugins/sensors/generic/generic.pro @@ -7,8 +7,16 @@ load(qt_plugin) DESTDIR = $$QT.sensors.plugins/sensors -include(generic.pri) +HEADERS += genericorientationsensor.h\ + genericrotationsensor.h\ + genericalssensor.h +SOURCES += genericorientationsensor.cpp\ + main.cpp\ + genericrotationsensor.cpp\ + genericalssensor.cpp + +OTHER_FILES = plugin.json symbian { TARGET.EPOCALLOWDLLDATA = 1 diff --git a/src/plugins/sensors/generic/main.cpp b/src/plugins/sensors/generic/main.cpp index f8bd9f4..f0af75b 100644 --- a/src/plugins/sensors/generic/main.cpp +++ b/src/plugins/sensors/generic/main.cpp @@ -51,7 +51,8 @@ class genericSensorPlugin : public QObject, public QSensorPluginInterface, public QSensorChangesInterface, public QSensorBackendFactory { Q_OBJECT - Q_INTERFACES(QSensorPluginInterface:QFactoryInterface QSensorChangesInterface) + Q_PLUGIN_METADATA(IID "com.nokia.Qt.QSensorPluginInterface/1.0" FILE "plugin.json") + Q_INTERFACES(QSensorPluginInterface QSensorChangesInterface) public: void registerSensors() { @@ -92,10 +93,7 @@ public: return 0; } - QStringList keys() const { return QStringList() << "generic";} }; -Q_EXPORT_PLUGIN2(qtsensors_generic, genericSensorPlugin) - #include "main.moc" diff --git a/src/plugins/sensors/generic/plugin.json b/src/plugins/sensors/generic/plugin.json new file mode 100644 index 0000000..8a55b3a --- /dev/null +++ b/src/plugins/sensors/generic/plugin.json @@ -0,0 +1 @@ +{ "Keys": [ "notused" ] } diff --git a/src/plugins/sensors/simulator/main.cpp b/src/plugins/sensors/simulator/main.cpp index 3a81db2..65a1bce 100644 --- a/src/plugins/sensors/simulator/main.cpp +++ b/src/plugins/sensors/simulator/main.cpp @@ -53,7 +53,8 @@ class SimulatorSensorPlugin : public QObject, public QSensorPluginInterface, public QSensorBackendFactory { Q_OBJECT - Q_INTERFACES(QSensorPluginInterface:QFactoryInterface) + Q_PLUGIN_METADATA(IID "com.nokia.Qt.QSensorPluginInterface/1.0" FILE "plugin.json") + Q_INTERFACES(QSensorPluginInterface) public: void registerSensors() { @@ -98,10 +99,7 @@ public: return 0; } - QStringList keys() const { return QStringList() << "simulator";} }; -Q_EXPORT_PLUGIN2(libsensors_simulator, SimulatorSensorPlugin) - #include "main.moc" diff --git a/src/plugins/sensors/simulator/plugin.json b/src/plugins/sensors/simulator/plugin.json new file mode 100644 index 0000000..8a55b3a --- /dev/null +++ b/src/plugins/sensors/simulator/plugin.json @@ -0,0 +1 @@ +{ "Keys": [ "notused" ] } diff --git a/src/plugins/sensors/simulator/simulator.pro b/src/plugins/sensors/simulator/simulator.pro index f811170..56bfb18 100644 --- a/src/plugins/sensors/simulator/simulator.pro +++ b/src/plugins/sensors/simulator/simulator.pro @@ -35,3 +35,4 @@ SOURCES += \ qsensordata_simulator.cpp\ main.cpp +OTHER_FILES = plugin.json diff --git a/src/sensors/gestures/qsensorgesturemanagerprivate.cpp b/src/sensors/gestures/qsensorgesturemanagerprivate.cpp index 3108bab..cc5d103 100644 --- a/src/sensors/gestures/qsensorgesturemanagerprivate.cpp +++ b/src/sensors/gestures/qsensorgesturemanagerprivate.cpp @@ -53,7 +53,7 @@ QT_BEGIN_NAMESPACE QSensorGestureManagerPrivate::QSensorGestureManagerPrivate(QObject *parent) : QObject(parent) { - loader = new QFactoryLoader(QSensorGestureFactoryInterface_iid, QLatin1String("/sensorgestures")); + loader = new QFactoryLoader("com.Nokia.QSensorGesturePluginInterface", QLatin1String("/sensorgestures")); loadPlugins(); } @@ -92,12 +92,13 @@ QSensorGestureManagerPrivate::~QSensorGestureManagerPrivate() */ void QSensorGestureManagerPrivate::loadPlugins() { - foreach (const QString &key, loader->keys()) { - - QObject *plugin = loader->instance(key); - if (plugin) { - initPlugin(plugin); - } + Q_FOREACH (QObject *plugin, QPluginLoader::staticInstances()) { + initPlugin(plugin); + } + QList<QJsonObject> meta = loader->metaData(); + for (int i = 0; i < meta.count(); i++) { + QObject *plugin = loader->instance(i); + initPlugin(plugin); } } diff --git a/src/sensors/gestures/qsensorgestureplugininterface.cpp b/src/sensors/gestures/qsensorgestureplugininterface.cpp index ac28614..90922c5 100644 --- a/src/sensors/gestures/qsensorgestureplugininterface.cpp +++ b/src/sensors/gestures/qsensorgestureplugininterface.cpp @@ -41,6 +41,7 @@ #include "qsensorgestureplugininterface.h" +QT_BEGIN_NAMESPACE /*! \class QSensorGesturePluginInterface @@ -81,8 +82,6 @@ Returns this plugins name. */ -QT_BEGIN_NAMESPACE - /*! Construct the QSensorGesturePluginInterface. */ @@ -95,16 +94,6 @@ QSensorGesturePluginInterface::QSensorGesturePluginInterface() */ QSensorGesturePluginInterface::~QSensorGesturePluginInterface() { - -} - -/*! - \internal - Used by the factory loader. - */ -QStringList QSensorGesturePluginInterface::keys() const -{ - return QStringList() << name(); } QT_END_NAMESPACE diff --git a/src/sensors/gestures/qsensorgestureplugininterface.h b/src/sensors/gestures/qsensorgestureplugininterface.h index 1cc6c2e..ea5bee9 100644 --- a/src/sensors/gestures/qsensorgestureplugininterface.h +++ b/src/sensors/gestures/qsensorgestureplugininterface.h @@ -45,7 +45,6 @@ #include <QObject> #include <QtGlobal> #include <QtCore/qplugin.h> -#include <QtCore/qfactoryinterface.h> #include "qsensorgesture.h" #include "qsensorgesturerecognizer.h" @@ -53,10 +52,7 @@ QT_BEGIN_HEADER QT_BEGIN_NAMESPACE class QSensorGestureRecognizer; -#define QSensorGestureFactoryInterface_iid "com.Nokia.QSensorGesturePluginInterface" - - -class Q_SENSORS_EXPORT QSensorGesturePluginInterface : public QFactoryInterface +class Q_SENSORS_EXPORT QSensorGesturePluginInterface { public: QSensorGesturePluginInterface(); @@ -64,11 +60,9 @@ public: virtual QList <QSensorGestureRecognizer *> createRecognizers() = 0; virtual QStringList supportedIds() const = 0; virtual QString name() const = 0; -private: - QStringList keys() const; }; -Q_DECLARE_INTERFACE(QSensorGesturePluginInterface, QSensorGestureFactoryInterface_iid); +Q_DECLARE_INTERFACE(QSensorGesturePluginInterface, "com.Nokia.QSensorGesturePluginInterface"); QT_END_NAMESPACE QT_END_HEADER diff --git a/src/sensors/qsensormanager.cpp b/src/sensors/qsensormanager.cpp index ae023be..67e5b44 100644 --- a/src/sensors/qsensormanager.cpp +++ b/src/sensors/qsensormanager.cpp @@ -67,7 +67,7 @@ public: }; QSensorManagerPrivate() : pluginLoadingState(NotLoaded) - , loader(new QFactoryLoader(QSensorPluginInterface_iid, QLatin1String("/sensors"))) + , loader(new QFactoryLoader("com.nokia.Qt.QSensorPluginInterface/1.0", QLatin1String("/sensors"))) , defaultIdentifierForTypeLoaded(false) , sensorsChanged(false) { @@ -143,14 +143,17 @@ Q_SENSORS_EXPORT void sensors_unit_test_hook(int index) load_external_plugins = false; break; case 1: + { Q_ASSERT(load_external_plugins == false); Q_ASSERT(d->pluginLoadingState == QSensorManagerPrivate::Loaded); SENSORLOG() << "initializing plugins"; - foreach (const QString &key, d->loader->keys()) { - QObject *plugin = d->loader->instance(key); + QList<QJsonObject> meta = d->loader->metaData(); + for (int i = 0; i < meta.count(); i++) { + QObject *plugin = d->loader->instance(i); initPlugin(plugin); } break; + } default: break; } @@ -190,8 +193,9 @@ void QSensorManagerPrivate::loadPlugins() if (load_external_plugins) { SENSORLOG() << "initializing plugins"; - foreach (const QString &key, d->loader->keys()) { - QObject *plugin = d->loader->instance(key); + QList<QJsonObject> meta = d->loader->metaData(); + for (int i = 0; i < meta.count(); i++) { + QObject *plugin = d->loader->instance(i); initPlugin(plugin); } } diff --git a/src/sensors/qsensorplugin.cpp b/src/sensors/qsensorplugin.cpp index 66cfefb..e456d8d 100644 --- a/src/sensors/qsensorplugin.cpp +++ b/src/sensors/qsensorplugin.cpp @@ -59,13 +59,6 @@ */ /*! - \fn QStringList QSensorPluginInterface::keys() const - - Returns a stringlist with one entry that contains a unique name for this plugin. - Required as an artifact of the factory loader. -*/ - -/*! \fn QSensorPluginInterface::registerSensors() This function is called when the plugin is loaded. The plugin should register diff --git a/src/sensors/qsensorplugin.h b/src/sensors/qsensorplugin.h index 2a23c72..0d2cbd0 100644 --- a/src/sensors/qsensorplugin.h +++ b/src/sensors/qsensorplugin.h @@ -44,22 +44,15 @@ #include <QtSensors/qsensorsglobal.h> -#include <QtCore/qstringlist.h> #include <QtCore/qplugin.h> -#include <QtCore/qfactoryinterface.h> QT_BEGIN_HEADER QT_BEGIN_NAMESPACE -#define QSensorPluginInterface_iid "com.nokia.Qt.QSensorPluginInterface/1.0" - -class Q_SENSORS_EXPORT QSensorPluginInterface : public QFactoryInterface +class Q_SENSORS_EXPORT QSensorPluginInterface { - public: virtual void registerSensors() = 0; - virtual QStringList keys() const = 0; - protected: ~QSensorPluginInterface() {} }; @@ -72,8 +65,8 @@ protected: ~QSensorChangesInterface() {} }; -Q_DECLARE_INTERFACE(QSensorPluginInterface, QSensorPluginInterface_iid); -Q_DECLARE_INTERFACE(QSensorChangesInterface, "com.nokia.Qt.QSensorChangesInterface/1.0"); +Q_DECLARE_INTERFACE(QSensorPluginInterface, "com.nokia.Qt.QSensorPluginInterface/1.0"); +Q_DECLARE_INTERFACE(QSensorChangesInterface, "com.nokia.Qt.QSensorChangesInterface/5.0"); QT_END_NAMESPACE QT_END_HEADER diff --git a/tests/auto/qsensor/test_sensorplugin.cpp b/tests/auto/qsensor/test_sensorplugin.cpp index 08d6cd3..6d78e90 100644 --- a/tests/auto/qsensor/test_sensorplugin.cpp +++ b/tests/auto/qsensor/test_sensorplugin.cpp @@ -54,7 +54,8 @@ class TestSensorPlugin : public QObject, public QSensorBackendFactory { Q_OBJECT - Q_INTERFACES(QSensorPluginInterface:QFactoryInterface QSensorChangesInterface) + //Q_PLUGIN_METADATA(IID "com.nokia.Qt.QSensorPluginInterface/1.0" FILE "plugin.json") + Q_INTERFACES(QSensorPluginInterface QSensorChangesInterface) public: void registerSensors() { @@ -104,8 +105,6 @@ public: qWarning() << "Can't create backend" << sensor->identifier(); return 0; } - QStringList keys() const { return QStringList() << "test";} - }; // Logic stolen from qplugin.h diff --git a/tests/auto/qsensorgestures/plugins/test/qtestsensorgestureplugin_p.h b/tests/auto/qsensorgestures/plugins/test/qtestsensorgestureplugin_p.h index bb1fd45..cf1ab32 100644 --- a/tests/auto/qsensorgestures/plugins/test/qtestsensorgestureplugin_p.h +++ b/tests/auto/qsensorgestures/plugins/test/qtestsensorgestureplugin_p.h @@ -48,7 +48,8 @@ class QTestSensorGesturePlugin : public QObject, public QSensorGesturePluginInterface { Q_OBJECT - Q_INTERFACES(QSensorGesturePluginInterface:QFactoryInterface) + //Q_PLUGIN_METADATA(IID "com.Nokia.QSensorGesturePluginInterface" FILE "plugin.json") + Q_INTERFACES(QSensorGesturePluginInterface) public: explicit QTestSensorGesturePlugin(); diff --git a/tests/auto/qsensorgestures/plugins/test1/qtestsensorgestureplugindup.h b/tests/auto/qsensorgestures/plugins/test1/qtestsensorgestureplugindup.h index 1ab5e44..18f4577 100644 --- a/tests/auto/qsensorgestures/plugins/test1/qtestsensorgestureplugindup.h +++ b/tests/auto/qsensorgestures/plugins/test1/qtestsensorgestureplugindup.h @@ -48,7 +48,8 @@ class QTestSensorGestureDupPlugin : public QObject, public QSensorGesturePluginInterface { Q_OBJECT - Q_INTERFACES(QSensorGesturePluginInterface:QFactoryInterface) + //Q_PLUGIN_METADATA(IID "com.Nokia.QSensorGesturePluginInterface" FILE "plugin.json") + Q_INTERFACES(QSensorGesturePluginInterface) public: explicit QTestSensorGestureDupPlugin(); diff --git a/tests/auto/sensors2qmlapi/qbackends.h b/tests/auto/sensors2qmlapi/qbackends.h index 90cc256..368de18 100644 --- a/tests/auto/sensors2qmlapi/qbackends.h +++ b/tests/auto/sensors2qmlapi/qbackends.h @@ -55,7 +55,8 @@ class TestSensorPlugin : public QObject, public QSensorBackendFactory { Q_OBJECT - Q_INTERFACES(QSensorPluginInterface:QFactoryInterface QSensorChangesInterface) + //Q_PLUGIN_METADATA(IID "com.nokia.Qt.QSensorPluginInterface/1.0" FILE "plugin.json") + Q_INTERFACES(QSensorPluginInterface QSensorChangesInterface) public: void registerSensors() { @@ -95,7 +96,6 @@ public: qWarning() << "Can't create backend" << sensor->identifier(); return 0; } - QStringList keys() const { return QStringList() << "test";} public: static QDeclAccelerometer* stAccel; static QDeclAmbientLightSensor* stAbl; diff --git a/tests/auto/sensors2qmlapi/qtemplategestureplugin.cpp b/tests/auto/sensors2qmlapi/qtemplategestureplugin.cpp index 27a49dd..ab0a908 100644 --- a/tests/auto/sensors2qmlapi/qtemplategestureplugin.cpp +++ b/tests/auto/sensors2qmlapi/qtemplategestureplugin.cpp @@ -76,6 +76,3 @@ QList <QSensorGestureRecognizer *> QTemplateGesturePlugin::createRecognizers() return recognizers; } - -Q_EXPORT_PLUGIN2(QTemplateGestureRecognizer, QTemplateGesturePlugin) - diff --git a/tests/auto/sensors2qmlapi/qtemplategestureplugin.h b/tests/auto/sensors2qmlapi/qtemplategestureplugin.h index f396ce0..cef952b 100644 --- a/tests/auto/sensors2qmlapi/qtemplategestureplugin.h +++ b/tests/auto/sensors2qmlapi/qtemplategestureplugin.h @@ -50,7 +50,8 @@ class QTemplateGesturePlugin : public QObject, public QSensorGesturePluginInterface { Q_OBJECT - Q_INTERFACES(QSensorGesturePluginInterface:QFactoryInterface) + //Q_PLUGIN_METADATA(IID "com.Nokia.QSensorGesturePluginInterface" FILE "plugin.json") + Q_INTERFACES(QSensorGesturePluginInterface) public: explicit QTemplateGesturePlugin(); ~QTemplateGesturePlugin(); diff --git a/tests/auto/sensors2qmlapi/sensors2qmlapi.pro b/tests/auto/sensors2qmlapi/sensors2qmlapi.pro index 2804360..8144692 100644 --- a/tests/auto/sensors2qmlapi/sensors2qmlapi.pro +++ b/tests/auto/sensors2qmlapi/sensors2qmlapi.pro @@ -26,3 +26,4 @@ HEADERS += qdeclaccelerometer.h \ ./../../../src/imports/sensors2/qsensor2common.h \ qtemplategestureplugin.h \ qtemplaterecognizer.h + |