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 /src/sensors | |
parent | b6d87d1b5141987452bc30e8b1d4115998ba6fd9 (diff) |
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>
Diffstat (limited to 'src/sensors')
-rw-r--r-- | src/sensors/gestures/qsensorgesturemanagerprivate.cpp | 15 | ||||
-rw-r--r-- | src/sensors/gestures/qsensorgestureplugininterface.cpp | 13 | ||||
-rw-r--r-- | src/sensors/gestures/qsensorgestureplugininterface.h | 10 | ||||
-rw-r--r-- | src/sensors/qsensormanager.cpp | 14 | ||||
-rw-r--r-- | src/sensors/qsensorplugin.cpp | 7 | ||||
-rw-r--r-- | src/sensors/qsensorplugin.h | 13 |
6 files changed, 23 insertions, 49 deletions
diff --git a/src/sensors/gestures/qsensorgesturemanagerprivate.cpp b/src/sensors/gestures/qsensorgesturemanagerprivate.cpp index 3108babc..cc5d1034 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 ac28614b..90922c57 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 1cc6c2e5..ea5bee9e 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 ae023beb..67e5b442 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 66cfefb5..e456d8d6 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 2a23c72d..0d2cbd01 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 |