diff options
author | Ivan Solovev <ivan.solovev@qt.io> | 2021-01-20 18:15:45 +0100 |
---|---|---|
committer | Ivan Solovev <ivan.solovev@qt.io> | 2021-01-22 09:30:52 +0100 |
commit | b45ee37f5587f9193c8c03bba580334fbf0d9d42 (patch) | |
tree | 981a03f1bcc818ade90a08ac288f83bcf0ca037f | |
parent | 3aeb0bf45f605d03fa9c506ae2d06e9ec09eec9f (diff) | |
download | qtlocation-b45ee37f5587f9193c8c03bba580334fbf0d9d42.tar.gz |
QtPositioning: refactor QGeoPositionInfoSourceFactory
[ChangeLog][QtPositioning][Important Behavior Changes] Remove
QGeoPositionInfoSourceFactoryV2 and update QGeoPositionInfoSourceFactory
to support source configuration parameters. Update plugin ID string.
Task-number: QTBUG-90491
Change-Id: I1d3dc556d73e273e2e364f77e2decaad11810547
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
31 files changed, 147 insertions, 484 deletions
diff --git a/src/plugins/position/android/src/positionfactory_android.cpp b/src/plugins/position/android/src/positionfactory_android.cpp index 25d6ed0e..436b1df6 100644 --- a/src/plugins/position/android/src/positionfactory_android.cpp +++ b/src/plugins/position/android/src/positionfactory_android.cpp @@ -41,20 +41,23 @@ #include "qgeopositioninfosource_android_p.h" #include "qgeosatelliteinfosource_android_p.h" -QGeoPositionInfoSource *QGeoPositionInfoSourceFactoryAndroid::positionInfoSource(QObject *parent) +QGeoPositionInfoSource *QGeoPositionInfoSourceFactoryAndroid::positionInfoSource(QObject *parent, const QVariantMap ¶meters) { + Q_UNUSED(parameters) QGeoPositionInfoSourceAndroid *src = new QGeoPositionInfoSourceAndroid(parent); return src; } -QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactoryAndroid::satelliteInfoSource(QObject *parent) +QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactoryAndroid::satelliteInfoSource(QObject *parent, const QVariantMap ¶meters) { + Q_UNUSED(parameters) QGeoSatelliteInfoSourceAndroid *src = new QGeoSatelliteInfoSourceAndroid(parent); return src; } -QGeoAreaMonitorSource *QGeoPositionInfoSourceFactoryAndroid::areaMonitor(QObject *parent) +QGeoAreaMonitorSource *QGeoPositionInfoSourceFactoryAndroid::areaMonitor(QObject *parent, const QVariantMap ¶meters) { - Q_UNUSED(parent); - return 0; + Q_UNUSED(parent) + Q_UNUSED(parameters) + return nullptr; } diff --git a/src/plugins/position/android/src/positionfactory_android.h b/src/plugins/position/android/src/positionfactory_android.h index cdab6f1b..0494b533 100644 --- a/src/plugins/position/android/src/positionfactory_android.h +++ b/src/plugins/position/android/src/positionfactory_android.h @@ -46,13 +46,13 @@ class QGeoPositionInfoSourceFactoryAndroid : public QObject, public QGeoPositionInfoSourceFactory { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.qt.position.sourcefactory/5.0" + Q_PLUGIN_METADATA(IID "org.qt-project.qt.position.sourcefactory/6.0" FILE "plugin.json") Q_INTERFACES(QGeoPositionInfoSourceFactory) public: - QGeoPositionInfoSource *positionInfoSource(QObject *parent); - QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent); - QGeoAreaMonitorSource *areaMonitor(QObject *parent); + QGeoPositionInfoSource *positionInfoSource(QObject *parent, const QVariantMap ¶meters) override; + QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent, const QVariantMap ¶meters) override; + QGeoAreaMonitorSource *areaMonitor(QObject *parent, const QVariantMap ¶meters) override; }; #endif // POSITIONPOLLFACTORY_H diff --git a/src/plugins/position/corelocation/qgeopositioninfosourcefactory_cl.h b/src/plugins/position/corelocation/qgeopositioninfosourcefactory_cl.h index 5ab1ce6a..7e14e31f 100644 --- a/src/plugins/position/corelocation/qgeopositioninfosourcefactory_cl.h +++ b/src/plugins/position/corelocation/qgeopositioninfosourcefactory_cl.h @@ -46,13 +46,13 @@ class QGeoPositionInfoSourceFactoryCL : public QObject, public QGeoPositionInfoSourceFactory { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.qt.position.sourcefactory/5.0" + Q_PLUGIN_METADATA(IID "org.qt-project.qt.position.sourcefactory/6.0" FILE "plugin.json") Q_INTERFACES(QGeoPositionInfoSourceFactory) public: - QGeoPositionInfoSource *positionInfoSource(QObject *parent); - QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent); - QGeoAreaMonitorSource *areaMonitor(QObject *parent); + QGeoPositionInfoSource *positionInfoSource(QObject *parent, const QVariantMap ¶meters) override; + QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent, const QVariantMap ¶meters) override; + QGeoAreaMonitorSource *areaMonitor(QObject *parent, const QVariantMap ¶meters) override; }; #endif // QGEOPOSITIONINFOSOURCEFACTORY_CL_H diff --git a/src/plugins/position/corelocation/qgeopositioninfosourcefactory_cl.mm b/src/plugins/position/corelocation/qgeopositioninfosourcefactory_cl.mm index 06a3ad38..e7d2a116 100644 --- a/src/plugins/position/corelocation/qgeopositioninfosourcefactory_cl.mm +++ b/src/plugins/position/corelocation/qgeopositioninfosourcefactory_cl.mm @@ -40,19 +40,22 @@ #include "qgeopositioninfosource_cl_p.h" #include "qgeopositioninfosourcefactory_cl.h" -QGeoPositionInfoSource *QGeoPositionInfoSourceFactoryCL::positionInfoSource(QObject *parent) +QGeoPositionInfoSource *QGeoPositionInfoSourceFactoryCL::positionInfoSource(QObject *parent, const QVariantMap ¶meters) { + Q_UNUSED(parameters) return new QGeoPositionInfoSourceCL(parent); } -QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactoryCL::satelliteInfoSource(QObject *parent) +QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactoryCL::satelliteInfoSource(QObject *parent, const QVariantMap ¶meters) { - Q_UNUSED(parent); - return 0; + Q_UNUSED(parent) + Q_UNUSED(parameters) + return nullptr; } -QGeoAreaMonitorSource *QGeoPositionInfoSourceFactoryCL::areaMonitor(QObject *parent) +QGeoAreaMonitorSource *QGeoPositionInfoSourceFactoryCL::areaMonitor(QObject *parent, const QVariantMap ¶meters) { - Q_UNUSED(parent); - return 0; + Q_UNUSED(parent) + Q_UNUSED(parameters) + return nullptr; } diff --git a/src/plugins/position/geoclue/qgeopositioninfosourcefactory_geoclue.cpp b/src/plugins/position/geoclue/qgeopositioninfosourcefactory_geoclue.cpp index efd62f8c..ecc9256d 100644 --- a/src/plugins/position/geoclue/qgeopositioninfosourcefactory_geoclue.cpp +++ b/src/plugins/position/geoclue/qgeopositioninfosourcefactory_geoclue.cpp @@ -49,20 +49,23 @@ Q_LOGGING_CATEGORY(lcPositioningGeoclue, "qt.positioning.geoclue") QT_BEGIN_NAMESPACE -QGeoPositionInfoSource *QGeoPositionInfoSourceFactoryGeoclue::positionInfoSource(QObject *parent) +QGeoPositionInfoSource *QGeoPositionInfoSourceFactoryGeoclue::positionInfoSource(QObject *parent, const QVariantMap ¶meters) { + Q_UNUSED(parameters) return new QGeoPositionInfoSourceGeoclueMaster(parent); } -QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactoryGeoclue::satelliteInfoSource(QObject *parent) +QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactoryGeoclue::satelliteInfoSource(QObject *parent, const QVariantMap ¶meters) { + Q_UNUSED(parameters) return new QGeoSatelliteInfoSourceGeoclueMaster(parent); } -QGeoAreaMonitorSource *QGeoPositionInfoSourceFactoryGeoclue::areaMonitor(QObject *parent) +QGeoAreaMonitorSource *QGeoPositionInfoSourceFactoryGeoclue::areaMonitor(QObject *parent, const QVariantMap ¶meters) { - Q_UNUSED(parent); - return 0; + Q_UNUSED(parent) + Q_UNUSED(parameters) + return nullptr; } QT_END_NAMESPACE diff --git a/src/plugins/position/geoclue/qgeopositioninfosourcefactory_geoclue.h b/src/plugins/position/geoclue/qgeopositioninfosourcefactory_geoclue.h index d27721da..fa6056d0 100644 --- a/src/plugins/position/geoclue/qgeopositioninfosourcefactory_geoclue.h +++ b/src/plugins/position/geoclue/qgeopositioninfosourcefactory_geoclue.h @@ -54,15 +54,15 @@ class QGeoPositionInfoSourceFactoryGeoclue : public QObject, public QGeoPosition { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.qt.position.sourcefactory/5.0" + Q_PLUGIN_METADATA(IID "org.qt-project.qt.position.sourcefactory/6.0" FILE "plugin.json") Q_INTERFACES(QGeoPositionInfoSourceFactory) public: - QGeoPositionInfoSource *positionInfoSource(QObject *parent) override; - QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent) override; - QGeoAreaMonitorSource *areaMonitor(QObject *parent) override; + QGeoPositionInfoSource *positionInfoSource(QObject *parent, const QVariantMap ¶meters) override; + QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent, const QVariantMap ¶meters) override; + QGeoAreaMonitorSource *areaMonitor(QObject *parent, const QVariantMap ¶meters) override; }; QT_END_NAMESPACE diff --git a/src/plugins/position/geoclue2/qgeopositioninfosourcefactory_geoclue2.cpp b/src/plugins/position/geoclue2/qgeopositioninfosourcefactory_geoclue2.cpp index b885e1eb..68caba3a 100644 --- a/src/plugins/position/geoclue2/qgeopositioninfosourcefactory_geoclue2.cpp +++ b/src/plugins/position/geoclue2/qgeopositioninfosourcefactory_geoclue2.cpp @@ -46,20 +46,23 @@ Q_LOGGING_CATEGORY(lcPositioningGeoclue2, "qt.positioning.geoclue2") QT_BEGIN_NAMESPACE -QGeoPositionInfoSource *QGeoPositionInfoSourceFactoryGeoclue2::positionInfoSource(QObject *parent) +QGeoPositionInfoSource *QGeoPositionInfoSourceFactoryGeoclue2::positionInfoSource(QObject *parent, const QVariantMap ¶meters) { + Q_UNUSED(parameters) return new QGeoPositionInfoSourceGeoclue2(parent); } -QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactoryGeoclue2::satelliteInfoSource(QObject *parent) +QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactoryGeoclue2::satelliteInfoSource(QObject *parent, const QVariantMap ¶meters) { - Q_UNUSED(parent); + Q_UNUSED(parent) + Q_UNUSED(parameters) return nullptr; } -QGeoAreaMonitorSource *QGeoPositionInfoSourceFactoryGeoclue2::areaMonitor(QObject *parent) +QGeoAreaMonitorSource *QGeoPositionInfoSourceFactoryGeoclue2::areaMonitor(QObject *parent, const QVariantMap ¶meters) { - Q_UNUSED(parent); + Q_UNUSED(parent) + Q_UNUSED(parameters) return nullptr; } diff --git a/src/plugins/position/geoclue2/qgeopositioninfosourcefactory_geoclue2.h b/src/plugins/position/geoclue2/qgeopositioninfosourcefactory_geoclue2.h index bfacd848..1cd72fff 100644 --- a/src/plugins/position/geoclue2/qgeopositioninfosourcefactory_geoclue2.h +++ b/src/plugins/position/geoclue2/qgeopositioninfosourcefactory_geoclue2.h @@ -52,15 +52,15 @@ class QGeoPositionInfoSourceFactoryGeoclue2 : public QObject, public QGeoPositio { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.qt.position.sourcefactory/5.0" + Q_PLUGIN_METADATA(IID "org.qt-project.qt.position.sourcefactory/6.0" FILE "plugin.json") Q_INTERFACES(QGeoPositionInfoSourceFactory) public: - QGeoPositionInfoSource *positionInfoSource(QObject *parent) override; - QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent) override; - QGeoAreaMonitorSource *areaMonitor(QObject *parent) override; + QGeoPositionInfoSource *positionInfoSource(QObject *parent, const QVariantMap ¶meters) override; + QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent, const QVariantMap ¶meters) override; + QGeoAreaMonitorSource *areaMonitor(QObject *parent, const QVariantMap ¶meters) override; }; QT_END_NAMESPACE diff --git a/src/plugins/position/gypsy/qgeopositioninfosourcefactory_gypsy.cpp b/src/plugins/position/gypsy/qgeopositioninfosourcefactory_gypsy.cpp index ecb1b2e0..84fa1a5c 100644 --- a/src/plugins/position/gypsy/qgeopositioninfosourcefactory_gypsy.cpp +++ b/src/plugins/position/gypsy/qgeopositioninfosourcefactory_gypsy.cpp @@ -40,24 +40,27 @@ #include "qgeopositioninfosourcefactory_gypsy.h" #include "qgeosatelliteinfosource_gypsy_p.h" -QGeoPositionInfoSource *QGeoPositionInfoSourceFactoryGypsy::positionInfoSource(QObject *parent) +QGeoPositionInfoSource *QGeoPositionInfoSourceFactoryGypsy::positionInfoSource(QObject *parent, const QVariantMap ¶meters) { - Q_UNUSED(parent); - return 0; + Q_UNUSED(parent) + Q_UNUSED(parameters) + return nullptr; } -QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactoryGypsy::satelliteInfoSource(QObject *parent) +QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactoryGypsy::satelliteInfoSource(QObject *parent, const QVariantMap ¶meters) { + Q_UNUSED(parameters) QGeoSatelliteInfoSourceGypsy *src = new QGeoSatelliteInfoSourceGypsy(parent); if (src->init() < 0) { delete src; - src = 0; + src = nullptr; } return src; } -QGeoAreaMonitorSource *QGeoPositionInfoSourceFactoryGypsy::areaMonitor(QObject *parent) +QGeoAreaMonitorSource *QGeoPositionInfoSourceFactoryGypsy::areaMonitor(QObject *parent, const QVariantMap ¶meters) { - Q_UNUSED(parent); - return 0; + Q_UNUSED(parent) + Q_UNUSED(parameters) + return nullptr; } diff --git a/src/plugins/position/gypsy/qgeopositioninfosourcefactory_gypsy.h b/src/plugins/position/gypsy/qgeopositioninfosourcefactory_gypsy.h index 32e9051a..495301fd 100644 --- a/src/plugins/position/gypsy/qgeopositioninfosourcefactory_gypsy.h +++ b/src/plugins/position/gypsy/qgeopositioninfosourcefactory_gypsy.h @@ -46,14 +46,14 @@ class QGeoPositionInfoSourceFactoryGypsy : public QObject, public QGeoPositionInfoSourceFactory { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.qt.position.sourcefactory/5.0" + Q_PLUGIN_METADATA(IID "org.qt-project.qt.position.sourcefactory/6.0" FILE "plugin.json") Q_INTERFACES(QGeoPositionInfoSourceFactory) public: - QGeoPositionInfoSource *positionInfoSource(QObject *parent) override; - QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent) override; - QGeoAreaMonitorSource *areaMonitor(QObject *parent) override; + QGeoPositionInfoSource *positionInfoSource(QObject *parent, const QVariantMap ¶meters) override; + QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent, const QVariantMap ¶meters) override; + QGeoAreaMonitorSource *areaMonitor(QObject *parent, const QVariantMap ¶meters) override; }; #endif diff --git a/src/plugins/position/positionpoll/positionpollfactory.cpp b/src/plugins/position/positionpoll/positionpollfactory.cpp index 20e2774e..a47b2b10 100644 --- a/src/plugins/position/positionpoll/positionpollfactory.cpp +++ b/src/plugins/position/positionpoll/positionpollfactory.cpp @@ -40,23 +40,26 @@ #include "positionpollfactory.h" #include "qgeoareamonitor_polling.h" -QGeoPositionInfoSource *QGeoPositionInfoSourceFactoryPoll::positionInfoSource(QObject *parent) +QGeoPositionInfoSource *QGeoPositionInfoSourceFactoryPoll::positionInfoSource(QObject *parent, const QVariantMap ¶meters) { - Q_UNUSED(parent); - return 0; + Q_UNUSED(parent) + Q_UNUSED(parameters) + return nullptr; } -QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactoryPoll::satelliteInfoSource(QObject *parent) +QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactoryPoll::satelliteInfoSource(QObject *parent, const QVariantMap ¶meters) { - Q_UNUSED(parent); - return 0; + Q_UNUSED(parent) + Q_UNUSED(parameters) + return nullptr; } -QGeoAreaMonitorSource *QGeoPositionInfoSourceFactoryPoll::areaMonitor(QObject *parent) +QGeoAreaMonitorSource *QGeoPositionInfoSourceFactoryPoll::areaMonitor(QObject *parent, const QVariantMap ¶meters) { + Q_UNUSED(parameters) QGeoAreaMonitorPolling *ret = new QGeoAreaMonitorPolling(parent); if (ret && ret->isValid()) return ret; delete ret; - return 0; + return nullptr; } diff --git a/src/plugins/position/positionpoll/positionpollfactory.h b/src/plugins/position/positionpoll/positionpollfactory.h index e1e33c55..570b3b21 100644 --- a/src/plugins/position/positionpoll/positionpollfactory.h +++ b/src/plugins/position/positionpoll/positionpollfactory.h @@ -46,13 +46,13 @@ class QGeoPositionInfoSourceFactoryPoll : public QObject, public QGeoPositionInfoSourceFactory { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.qt.position.sourcefactory/5.0" + Q_PLUGIN_METADATA(IID "org.qt-project.qt.position.sourcefactory/6.0" FILE "plugin.json") Q_INTERFACES(QGeoPositionInfoSourceFactory) public: - QGeoPositionInfoSource *positionInfoSource(QObject *parent) override; - QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent) override; - QGeoAreaMonitorSource *areaMonitor(QObject *parent) override; + QGeoPositionInfoSource *positionInfoSource(QObject *parent, const QVariantMap ¶meters) override; + QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent, const QVariantMap ¶meters) override; + QGeoAreaMonitorSource *areaMonitor(QObject *parent, const QVariantMap ¶meters) override; }; #endif // POSITIONPOLLFACTORY_H diff --git a/src/plugins/position/serialnmea/qgeopositioninfosourcefactory_serialnmea.cpp b/src/plugins/position/serialnmea/qgeopositioninfosourcefactory_serialnmea.cpp index fca7ab40..878e8de0 100644 --- a/src/plugins/position/serialnmea/qgeopositioninfosourcefactory_serialnmea.cpp +++ b/src/plugins/position/serialnmea/qgeopositioninfosourcefactory_serialnmea.cpp @@ -234,34 +234,19 @@ private: QString m_portName; }; -QGeoPositionInfoSource *QGeoPositionInfoSourceFactorySerialNmea::positionInfoSource(QObject *parent) -{ - return positionInfoSourceWithParameters(parent, QVariantMap()); -} - -QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactorySerialNmea::satelliteInfoSource(QObject *parent) -{ - return satelliteInfoSourceWithParameters(parent, QVariantMap()); -} - -QGeoAreaMonitorSource *QGeoPositionInfoSourceFactorySerialNmea::areaMonitor(QObject *parent) -{ - return areaMonitorWithParameters(parent, QVariantMap()); -} - -QGeoPositionInfoSource *QGeoPositionInfoSourceFactorySerialNmea::positionInfoSourceWithParameters(QObject *parent, const QVariantMap ¶meters) +QGeoPositionInfoSource *QGeoPositionInfoSourceFactorySerialNmea::positionInfoSource(QObject *parent, const QVariantMap ¶meters) { QScopedPointer<NmeaSource> src(new NmeaSource(parent, parameters)); return src->isValid() ? src.take() : nullptr; } -QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactorySerialNmea::satelliteInfoSourceWithParameters(QObject *parent, const QVariantMap ¶meters) +QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactorySerialNmea::satelliteInfoSource(QObject *parent, const QVariantMap ¶meters) { QScopedPointer<NmeaSatelliteSource> src(new NmeaSatelliteSource(parent, parameters)); return src->isValid() ? src.take() : nullptr; } -QGeoAreaMonitorSource *QGeoPositionInfoSourceFactorySerialNmea::areaMonitorWithParameters(QObject *parent, const QVariantMap ¶meters) +QGeoAreaMonitorSource *QGeoPositionInfoSourceFactorySerialNmea::areaMonitor(QObject *parent, const QVariantMap ¶meters) { Q_UNUSED(parent); Q_UNUSED(parameters); diff --git a/src/plugins/position/serialnmea/qgeopositioninfosourcefactory_serialnmea.h b/src/plugins/position/serialnmea/qgeopositioninfosourcefactory_serialnmea.h index eb468771..880c141c 100644 --- a/src/plugins/position/serialnmea/qgeopositioninfosourcefactory_serialnmea.h +++ b/src/plugins/position/serialnmea/qgeopositioninfosourcefactory_serialnmea.h @@ -43,21 +43,17 @@ #include <QObject> #include <qgeopositioninfosourcefactory.h> -class QGeoPositionInfoSourceFactorySerialNmea : public QObject, public QGeoPositionInfoSourceFactoryV2 +class QGeoPositionInfoSourceFactorySerialNmea : public QObject, public QGeoPositionInfoSourceFactory { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.qt.position.sourcefactory/5.0" + Q_PLUGIN_METADATA(IID "org.qt-project.qt.position.sourcefactory/6.0" FILE "plugin.json") - Q_INTERFACES(QGeoPositionInfoSourceFactoryV2) + Q_INTERFACES(QGeoPositionInfoSourceFactory) public: - QGeoPositionInfoSource *positionInfoSource(QObject *parent) override; - QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent) override; - QGeoAreaMonitorSource *areaMonitor(QObject *parent) override; - - QGeoPositionInfoSource *positionInfoSourceWithParameters(QObject *parent, const QVariantMap ¶meters) override; - QGeoSatelliteInfoSource *satelliteInfoSourceWithParameters(QObject *parent, const QVariantMap ¶meters) override; - QGeoAreaMonitorSource *areaMonitorWithParameters(QObject *parent, const QVariantMap ¶meters) override; + QGeoPositionInfoSource *positionInfoSource(QObject *parent, const QVariantMap ¶meters) override; + QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent, const QVariantMap ¶meters) override; + QGeoAreaMonitorSource *areaMonitor(QObject *parent, const QVariantMap ¶meters) override; }; #endif diff --git a/src/plugins/position/simulator/qgeopositioninfosourcefactory_simulator.cpp b/src/plugins/position/simulator/qgeopositioninfosourcefactory_simulator.cpp index 9ddc2b97..7c7c8d5a 100644 --- a/src/plugins/position/simulator/qgeopositioninfosourcefactory_simulator.cpp +++ b/src/plugins/position/simulator/qgeopositioninfosourcefactory_simulator.cpp @@ -39,23 +39,26 @@ #include "qgeopositioninfosourcefactory_simulator.h" -QGeoPositionInfoSource *QGeoPositionInfoSourceFactorySimulator::positionInfoSource(QObject *parent) +QGeoPositionInfoSource *QGeoPositionInfoSourceFactorySimulator::positionInfoSource(QObject *parent, const QVariantMap ¶meters) { + Q_UNUSED(parameters) return new QGeoPositionInfoSourceSimulator(parent); } -QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactorySimulator::satelliteInfoSource(QObject *parent) +QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactorySimulator::satelliteInfoSource(QObject *parent, const QVariantMap ¶meters) { + Q_UNUSED(parameters) QGeoSatelliteInfoSourceSimulator *src = new QGeoSatelliteInfoSourceSimulator(parent); if (!src->isConnected()) { delete src; - src = 0; + src = nullptr; } return src; } -QGeoAreaMonitorSource *QGeoPositionInfoSourceFactorySimulator::areaMonitor(QObject *parent) +QGeoAreaMonitorSource *QGeoPositionInfoSourceFactorySimulator::areaMonitor(QObject *parent, const QVariantMap ¶meters) { - Q_UNUSED(parent); - return 0; + Q_UNUSED(parent) + Q_UNUSED(parameters) + return nullptr; } diff --git a/src/plugins/position/simulator/qgeopositioninfosourcefactory_simulator.h b/src/plugins/position/simulator/qgeopositioninfosourcefactory_simulator.h index 2d3146e2..bf17ddf3 100644 --- a/src/plugins/position/simulator/qgeopositioninfosourcefactory_simulator.h +++ b/src/plugins/position/simulator/qgeopositioninfosourcefactory_simulator.h @@ -49,13 +49,13 @@ class QGeoPositionInfoSourceFactorySimulator : public QObject, public QGeoPositionInfoSourceFactory { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.qt.position.sourcefactory/5.0" + Q_PLUGIN_METADATA(IID "org.qt-project.qt.position.sourcefactory/6.0" FILE "plugin.json") Q_INTERFACES(QGeoPositionInfoSourceFactory) public: - QGeoPositionInfoSource *positionInfoSource(QObject *parent); - QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent); - QGeoAreaMonitorSource *areaMonitor(QObject *parent); + QGeoPositionInfoSource *positionInfoSource(QObject *parent, const QVariantMap ¶meters) override; + QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent, const QVariantMap ¶meters) override; + QGeoAreaMonitorSource *areaMonitor(QObject *parent, const QVariantMap ¶meters) override; }; #endif // QGEOPOSITIONINFOSOURCEFACTORY_SIMULATOR_H diff --git a/src/plugins/position/winrt/qgeopositioninfosourcefactory_winrt.cpp b/src/plugins/position/winrt/qgeopositioninfosourcefactory_winrt.cpp index 03b86ca7..4e75c242 100644 --- a/src/plugins/position/winrt/qgeopositioninfosourcefactory_winrt.cpp +++ b/src/plugins/position/winrt/qgeopositioninfosourcefactory_winrt.cpp @@ -43,24 +43,27 @@ Q_LOGGING_CATEGORY(lcPositioningWinRT, "qt.positioning.winrt") QT_BEGIN_NAMESPACE -QGeoPositionInfoSource *QGeoPositionInfoSourceFactoryWinRT::positionInfoSource(QObject *parent) +QGeoPositionInfoSource *QGeoPositionInfoSourceFactoryWinRT::positionInfoSource(QObject *parent, const QVariantMap ¶meters) { qCDebug(lcPositioningWinRT) << __FUNCTION__; + Q_UNUSED(parameters) QGeoPositionInfoSourceWinRT *src = new QGeoPositionInfoSourceWinRT(parent); return src; } -QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactoryWinRT::satelliteInfoSource(QObject *parent) +QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactoryWinRT::satelliteInfoSource(QObject *parent, const QVariantMap ¶meters) { qCDebug(lcPositioningWinRT) << __FUNCTION__; - Q_UNUSED(parent); + Q_UNUSED(parent) + Q_UNUSED(parameters) return nullptr; } -QGeoAreaMonitorSource *QGeoPositionInfoSourceFactoryWinRT::areaMonitor(QObject *parent) +QGeoAreaMonitorSource *QGeoPositionInfoSourceFactoryWinRT::areaMonitor(QObject *parent, const QVariantMap ¶meters) { qCDebug(lcPositioningWinRT) << __FUNCTION__; - Q_UNUSED(parent); + Q_UNUSED(parent) + Q_UNUSED(parameters) return nullptr; } diff --git a/src/plugins/position/winrt/qgeopositioninfosourcefactory_winrt.h b/src/plugins/position/winrt/qgeopositioninfosourcefactory_winrt.h index d09ddb64..3e1ca3c5 100644 --- a/src/plugins/position/winrt/qgeopositioninfosourcefactory_winrt.h +++ b/src/plugins/position/winrt/qgeopositioninfosourcefactory_winrt.h @@ -45,13 +45,13 @@ QT_BEGIN_NAMESPACE class QGeoPositionInfoSourceFactoryWinRT : public QObject, public QGeoPositionInfoSourceFactory { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.qt.position.sourcefactory/5.0" + Q_PLUGIN_METADATA(IID "org.qt-project.qt.position.sourcefactory/6.0" FILE "plugin.json") Q_INTERFACES(QGeoPositionInfoSourceFactory) public: - QGeoPositionInfoSource *positionInfoSource(QObject *parent); - QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent); - QGeoAreaMonitorSource *areaMonitor(QObject *parent); + QGeoPositionInfoSource *positionInfoSource(QObject *parent, const QVariantMap ¶meters) override; + QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent, const QVariantMap ¶meters) override; + QGeoAreaMonitorSource *areaMonitor(QObject *parent, const QVariantMap ¶meters) override; }; QT_END_NAMESPACE diff --git a/src/positioning/qgeoareamonitorsource.cpp b/src/positioning/qgeoareamonitorsource.cpp index d056f1bc..5ef05a1e 100644 --- a/src/positioning/qgeoareamonitorsource.cpp +++ b/src/positioning/qgeoareamonitorsource.cpp @@ -155,7 +155,7 @@ QGeoAreaMonitorSource *QGeoAreaMonitorSource::createDefaultSource(QObject *paren d.loadPlugin(); QGeoAreaMonitorSource *s = 0; if (d.factory) - s = d.factory->areaMonitor(parent); + s = d.factory->areaMonitor(parent, QVariantMap()); if (s) s->d->providerName = d.metaData.value(QStringLiteral("Provider")).toString(); return s; @@ -180,7 +180,7 @@ QGeoAreaMonitorSource *QGeoAreaMonitorSource::createSource(const QString &source d.loadPlugin(); QGeoAreaMonitorSource *s = 0; if (d.factory) - s = d.factory->areaMonitor(parent); + s = d.factory->areaMonitor(parent, QVariantMap()); if (s) s->d->providerName = d.metaData.value(QStringLiteral("Provider")).toString(); return s; diff --git a/src/positioning/qgeopositioninfosource.cpp b/src/positioning/qgeopositioninfosource.cpp index 968b2914..79357729 100644 --- a/src/positioning/qgeopositioninfosource.cpp +++ b/src/positioning/qgeopositioninfosource.cpp @@ -52,7 +52,7 @@ QT_BEGIN_NAMESPACE Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader, - ("org.qt-project.qt.position.sourcefactory/5.0", + ("org.qt-project.qt.position.sourcefactory/6.0", QLatin1String("/position"))) /*! @@ -126,11 +126,7 @@ void QGeoPositionInfoSourcePrivate::loadPlugin() QObject *instance = loader()->instance(idx); if (!instance) return; - factoryV2 = qobject_cast<QGeoPositionInfoSourceFactoryV2 *>(instance); - if (!factoryV2) - factory = qobject_cast<QGeoPositionInfoSourceFactory *>(instance); - else - factory = factoryV2; + factory = qobject_cast<QGeoPositionInfoSourceFactory *>(instance); } bool QGeoPositionInfoSourcePrivate::setBackendProperty(const QString &/*name*/, const QVariant & /*value*/) @@ -334,10 +330,8 @@ static QGeoPositionInfoSource* createSource_real(const QJsonObject &meta, const d.metaData = meta; d.loadPlugin(); QGeoPositionInfoSource *s = nullptr; - if (!parameters.isEmpty() && d.factoryV2) - s = d.factoryV2->positionInfoSourceWithParameters(parent, parameters); - else if (d.factory) - s = d.factory->positionInfoSource(parent); + if (d.factory) + s = d.factory->positionInfoSource(parent, parameters); if (s) QGeoPositionInfoSourcePrivate::get(*s)->metaData = d.metaData; diff --git a/src/positioning/qgeopositioninfosource_p.h b/src/positioning/qgeopositioninfosource_p.h index e12ede4c..f501178a 100644 --- a/src/positioning/qgeopositioninfosource_p.h +++ b/src/positioning/qgeopositioninfosource_p.h @@ -71,7 +71,6 @@ public: QGeoPositionInfoSource::PositioningMethods methods; QJsonObject metaData; QGeoPositionInfoSourceFactory *factory = nullptr; - QGeoPositionInfoSourceFactoryV2 *factoryV2 = nullptr; QString providerName; void loadMeta(); diff --git a/src/positioning/qgeopositioninfosourcefactory.cpp b/src/positioning/qgeopositioninfosourcefactory.cpp index d9971c26..673ee60e 100644 --- a/src/positioning/qgeopositioninfosourcefactory.cpp +++ b/src/positioning/qgeopositioninfosourcefactory.cpp @@ -49,81 +49,41 @@ QT_BEGIN_NAMESPACE \brief The QGeoPositionInfoSourceFactory class is a factory class used as the plugin interface for external providers of positioning data. - The other functions must be overridden by all plugins, other than - sourcePriority() which defaults to returning 0. Higher values of - priority will be preferred to lower ones. + Each factory method takes a parameters argument, which allows to configure + the created source. */ /*! - \fn QGeoPositionInfoSource *QGeoPositionInfoSourceFactory::positionInfoSource(QObject *parent) - - Returns a new QGeoPositionInfoSource associated with this plugin - with parent \a parent. Can also return 0, in which case the plugin - loader will use the factory with the next highest priority. - */ - -/*! - \fn QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactory::satelliteInfoSource(QObject *parent) - - Returns a new QGeoSatelliteInfoSource associated with this plugin - with parent \a parent. Can also return 0, in which case the plugin - loader will use the factory with the next highest priority. - */ - -/*! - \fn QGeoAreaMonitorSource *QGeoPositionInfoSourceFactory::areaMonitor(QObject *parent); - - Returns a new QGeoAreaMonitorSource associated with this plugin with parent \a parent. - Can also return 0, in which case the plugin loader will use the factory with the - next highest priority. - */ - -/*! - Destroys the position info source factory. -*/ -QGeoPositionInfoSourceFactory::~QGeoPositionInfoSourceFactory() -{} - -/*! - \class QGeoPositionInfoSourceFactoryV2 - \inmodule QtPositioning - \since 5.14 - - \brief The QGeoPositionInfoSourceFactoryV2 class extends - QGeoPositionInfoSourceFactory, adding factory methods taking a parameters argument. - - This interface has the priority over the older one with plugins implementing it, - when creating a positioning source (position, satellite or area monitor) -*/ - -/*! - \fn QGeoPositionInfoSource *QGeoPositionInfoSourceFactoryV2::positionInfoSourceWithParameters(QObject *parent, const QVariantMap ¶meters) + \fn QGeoPositionInfoSource *QGeoPositionInfoSourceFactory::positionInfoSource(QObject *parent, const QVariantMap ¶meters) Returns a new QGeoPositionInfoSource associated with this plugin with parent \a parent, and using \a parameters as configuration parameters. Can also return 0, in which case the plugin loader will use the factory with the next highest priority. - */ +*/ /*! - \fn QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactoryV2::satelliteInfoSourceWithParameters(QObject *parent, const QVariantMap ¶meters) + \fn QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactory::satelliteInfoSource(QObject *parent, const QVariantMap ¶meters) Returns a new QGeoSatelliteInfoSource associated with this plugin with parent \a parent, and using \a parameters as configuration parameters. Can also return 0, in which case the plugin loader will use the factory with the next highest priority. - */ +*/ /*! - \fn QGeoAreaMonitorSource *QGeoPositionInfoSourceFactoryV2::areaMonitorWithParameters(QObject *parent, const QVariantMap ¶meters); + \fn QGeoAreaMonitorSource *QGeoPositionInfoSourceFactory::areaMonitor(QObject *parent, const QVariantMap ¶meters); Returns a new QGeoAreaMonitorSource associated with this plugin with parent \a parent, and using \a parameters as configuration parameters. Can also return 0, in which case the plugin loader will use the factory with the next highest priority. - */ +*/ -QGeoPositionInfoSourceFactoryV2::~QGeoPositionInfoSourceFactoryV2() +/*! + Destroys the position info source factory. +*/ +QGeoPositionInfoSourceFactory::~QGeoPositionInfoSourceFactory() {} QT_END_NAMESPACE diff --git a/src/positioning/qgeopositioninfosourcefactory.h b/src/positioning/qgeopositioninfosourcefactory.h index e55a1eb3..dc98bc85 100644 --- a/src/positioning/qgeopositioninfosourcefactory.h +++ b/src/positioning/qgeopositioninfosourcefactory.h @@ -52,29 +52,14 @@ class Q_POSITIONING_EXPORT QGeoPositionInfoSourceFactory public: virtual ~QGeoPositionInfoSourceFactory(); - virtual QGeoPositionInfoSource *positionInfoSource(QObject *parent) = 0; - virtual QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent) = 0; - virtual QGeoAreaMonitorSource *areaMonitor(QObject *parent) = 0; + virtual QGeoPositionInfoSource *positionInfoSource(QObject *parent, const QVariantMap ¶meters) = 0; + virtual QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent, const QVariantMap ¶meters) = 0; + virtual QGeoAreaMonitorSource *areaMonitor(QObject *parent, const QVariantMap ¶meters) = 0; }; #define QT_POSITION_SOURCE_INTERFACE Q_DECLARE_INTERFACE(QGeoPositionInfoSourceFactory, - "org.qt-project.qt.position.sourcefactory/5.0") - -class Q_POSITIONING_EXPORT QGeoPositionInfoSourceFactoryV2 : public QGeoPositionInfoSourceFactory -{ -public: - virtual ~QGeoPositionInfoSourceFactoryV2(); - - virtual QGeoPositionInfoSource *positionInfoSourceWithParameters(QObject *parent, const QVariantMap ¶meters) = 0; - virtual QGeoSatelliteInfoSource *satelliteInfoSourceWithParameters(QObject *parent, const QVariantMap ¶meters) = 0; - virtual QGeoAreaMonitorSource *areaMonitorWithParameters(QObject *parent, const QVariantMap ¶meters) = 0; -}; - -// Although not actually used for constructing a specialized loader, this is required for -// casting a QObject * into QGeoPositionInfoSourceFactoryV2 * -Q_DECLARE_INTERFACE(QGeoPositionInfoSourceFactoryV2, - "org.qt-project.qt.position.sourcefactoryV2/5.0") + "org.qt-project.qt.position.sourcefactory/6.0") QT_END_NAMESPACE diff --git a/src/positioning/qgeosatelliteinfosource.cpp b/src/positioning/qgeosatelliteinfosource.cpp index f39121dd..379c20df 100644 --- a/src/positioning/qgeosatelliteinfosource.cpp +++ b/src/positioning/qgeosatelliteinfosource.cpp @@ -171,10 +171,8 @@ static QGeoSatelliteInfoSource* createSource_real(const QJsonObject &meta, const d.metaData = meta; d.loadPlugin(); QGeoSatelliteInfoSource *s = nullptr; - if (!parameters.isEmpty() && d.factoryV2) - s = d.factoryV2->satelliteInfoSourceWithParameters(parent, parameters); - else if (d.factory) - s = d.factory->satelliteInfoSource(parent); + if (d.factory) + s = d.factory->satelliteInfoSource(parent, parameters); if (s) QGeoSatelliteInfoSourcePrivate::get(*s)->providerName = d.metaData.value(QStringLiteral("Provider")).toString(); diff --git a/tests/auto/CMakeLists.txt b/tests/auto/CMakeLists.txt index ab6de00f..65412e06 100644 --- a/tests/auto/CMakeLists.txt +++ b/tests/auto/CMakeLists.txt @@ -74,7 +74,6 @@ add_subdirectory(qgeosatelliteinfo) # endif() if(NOT ANDROID) add_subdirectory(positionplugin) - add_subdirectory(positionpluginV1) add_subdirectory(positionplugintest) add_subdirectory(qgeoareamonitor) add_subdirectory(qgeopositioninfosource) diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro index d26711c3..912b6e42 100644 --- a/tests/auto/auto.pro +++ b/tests/auto/auto.pro @@ -96,7 +96,6 @@ SUBDIRS += \ !android: SUBDIRS += \ positionplugin \ - positionpluginV1 \ positionplugintest \ qgeoareamonitor \ qgeopositioninfosource \ diff --git a/tests/auto/positionplugin/plugin.cpp b/tests/auto/positionplugin/plugin.cpp index fd8f931d..b888a53c 100644 --- a/tests/auto/positionplugin/plugin.cpp +++ b/tests/auto/positionplugin/plugin.cpp @@ -211,54 +211,32 @@ void DummySource::doTimeout() } -class QGeoPositionInfoSourceFactoryTest : public QObject, public QGeoPositionInfoSourceFactoryV2 +class QGeoPositionInfoSourceFactoryTest : public QObject, public QGeoPositionInfoSourceFactory { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.qt.position.sourcefactory/5.0" + Q_PLUGIN_METADATA(IID "org.qt-project.qt.position.sourcefactory/6.0" FILE "plugin.json") - Q_INTERFACES(QGeoPositionInfoSourceFactoryV2) + Q_INTERFACES(QGeoPositionInfoSourceFactory) public: - QGeoPositionInfoSource *positionInfoSource(QObject *parent) override; - QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent) override; - QGeoAreaMonitorSource *areaMonitor(QObject *parent) override; - - QGeoPositionInfoSource *positionInfoSourceWithParameters(QObject *parent, - const QVariantMap ¶meters) override; - QGeoSatelliteInfoSource *satelliteInfoSourceWithParameters(QObject *parent, - const QVariantMap ¶meters) override; - QGeoAreaMonitorSource *areaMonitorWithParameters(QObject *parent, - const QVariantMap ¶meters) override; + QGeoPositionInfoSource *positionInfoSource(QObject *parent, const QVariantMap ¶meters) override; + QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent, const QVariantMap ¶meters) override; + QGeoAreaMonitorSource *areaMonitor(QObject *parent, const QVariantMap ¶meters) override; }; -QGeoPositionInfoSource *QGeoPositionInfoSourceFactoryTest::positionInfoSource(QObject *parent) -{ - return new DummySource(QVariantMap(), parent); -} - -QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactoryTest::satelliteInfoSource(QObject *parent) -{ - return satelliteInfoSourceWithParameters(parent, QVariantMap()); -} - -QGeoAreaMonitorSource *QGeoPositionInfoSourceFactoryTest::areaMonitor(QObject* parent) -{ - return areaMonitorWithParameters(parent, QVariantMap()); -} - -QGeoPositionInfoSource *QGeoPositionInfoSourceFactoryTest::positionInfoSourceWithParameters(QObject *parent, const QVariantMap ¶meters) +QGeoPositionInfoSource *QGeoPositionInfoSourceFactoryTest::positionInfoSource(QObject *parent, const QVariantMap ¶meters) { return new DummySource(parameters, parent); } -QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactoryTest::satelliteInfoSourceWithParameters(QObject *parent, const QVariantMap ¶meters) +QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactoryTest::satelliteInfoSource(QObject *parent, const QVariantMap ¶meters) { Q_UNUSED(parent); Q_UNUSED(parameters); return nullptr; } -QGeoAreaMonitorSource *QGeoPositionInfoSourceFactoryTest::areaMonitorWithParameters(QObject *parent, const QVariantMap ¶meters) +QGeoAreaMonitorSource *QGeoPositionInfoSourceFactoryTest::areaMonitor(QObject *parent, const QVariantMap ¶meters) { Q_UNUSED(parent); Q_UNUSED(parameters); diff --git a/tests/auto/positionpluginV1/CMakeLists.txt b/tests/auto/positionpluginV1/CMakeLists.txt deleted file mode 100644 index 95cbe5b8..00000000 --- a/tests/auto/positionpluginV1/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -# Generated from positionpluginV1.pro. - -##################################################################### -## QGeoPositionInfoSourceFactoryTestV1 Plugin: -##################################################################### - -qt_internal_add_plugin(QGeoPositionInfoSourceFactoryTestV1 - OUTPUT_NAME qtposition_testpluginv1 - TYPE position - DEFAULT_IF FALSE - SOURCES - plugin.cpp - PUBLIC_LIBRARIES - Qt::Core - Qt::Gui - Qt::Positioning -) - -#### Keys ignored in scope 1:.:.:positionpluginV1.pro:<TRUE>: -# OTHER_FILES = "plugin.json" -# PLUGIN_EXTENDS = "-" diff --git a/tests/auto/positionpluginV1/plugin.cpp b/tests/auto/positionpluginV1/plugin.cpp deleted file mode 100644 index f3d0165e..00000000 --- a/tests/auto/positionpluginV1/plugin.cpp +++ /dev/null @@ -1,212 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include <QtPositioning/qgeopositioninfosource.h> -#include <QtPositioning/qgeopositioninfosourcefactory.h> -#include <QObject> -#include <QtPlugin> -#include <QTimer> - -QT_USE_NAMESPACE - -class DummySource : public QGeoPositionInfoSource -{ - Q_OBJECT - -public: - DummySource(QObject *parent = nullptr); - ~DummySource(); - - void startUpdates() override; - void stopUpdates() override; - void requestUpdate(int timeout = 5000) override; - - QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly) const override; - PositioningMethods supportedPositioningMethods() const override; - - void setUpdateInterval(int msec) override; - int minimumUpdateInterval() const override; - Error error() const override; - -private: - QTimer *timer; - QTimer *timeoutTimer; - QTimer *singleTimer; - QGeoPositionInfo lastPosition; - QDateTime lastUpdateTime; - -private slots: - void updatePosition(); - void doTimeout(); -}; - -DummySource::DummySource(QObject *parent) : - QGeoPositionInfoSource(parent), - timer(new QTimer(this)), - timeoutTimer(new QTimer(this)), - singleTimer(new QTimer(this)), - lastPosition(QGeoCoordinate(0,0), QDateTime::currentDateTime()) -{ - timer->setInterval(1000); - connect(timer, SIGNAL(timeout()), - this, SLOT(updatePosition())); - connect(singleTimer, SIGNAL(timeout()), - this, SLOT(updatePosition())); - connect(timeoutTimer, SIGNAL(timeout()), - this, SLOT(doTimeout())); -} - -QGeoPositionInfoSource::Error DummySource::error() const -{ - return QGeoPositionInfoSource::NoError; -} - - -void DummySource::setUpdateInterval(int msec) -{ - if (msec == 0) { - timer->setInterval(1000); - } else if (msec < 1000) { - msec = 1000; - timer->setInterval(msec); - } else { - timer->setInterval(msec); - } - - QGeoPositionInfoSource::setUpdateInterval(msec); -} - -int DummySource::minimumUpdateInterval() const -{ - return 1000; -} - -QGeoPositionInfo DummySource::lastKnownPosition(bool fromSatellitePositioningMethodsOnly) const -{ - Q_UNUSED(fromSatellitePositioningMethodsOnly); - return lastPosition; -} - -QGeoPositionInfoSource::PositioningMethods DummySource::supportedPositioningMethods() const -{ - return QGeoPositionInfoSource::AllPositioningMethods; -} - -void DummySource::startUpdates() -{ - timer->start(); -} - -void DummySource::stopUpdates() -{ - timer->stop(); -} - -void DummySource::requestUpdate(int timeout) -{ - if (timeout == 0) - timeout = 5000; - if (timeout < 0) - timeout = 0; - - timeoutTimer->setInterval(timeout); - timeoutTimer->start(); - - if (timer->isActive()) { - timer->stop(); - timer->start(); - } - - singleTimer->setInterval(1000); - singleTimer->start(); -} - -DummySource::~DummySource() -{} - -void DummySource::updatePosition() -{ - timeoutTimer->stop(); - singleTimer->stop(); - - const QDateTime now = QDateTime::currentDateTime(); - - QGeoCoordinate coord(lastPosition.coordinate().latitude() + 0.1, - lastPosition.coordinate().longitude() + 0.1); - - QGeoPositionInfo info(coord, now); - info.setAttribute(QGeoPositionInfo::Direction, lastPosition.coordinate().azimuthTo(coord)); - if (lastUpdateTime.isValid()) { - double speed = lastPosition.coordinate().distanceTo(coord) / lastUpdateTime.msecsTo(now); - info.setAttribute(QGeoPositionInfo::GroundSpeed, 1000 * speed); - } - - lastUpdateTime = now; - lastPosition = info; - emit positionUpdated(info); -} - -void DummySource::doTimeout() -{ - timeoutTimer->stop(); - singleTimer->stop(); - emit updateTimeout(); -} - - -class QGeoPositionInfoSourceFactoryTestV1 : public QObject, public QGeoPositionInfoSourceFactory -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.qt.position.sourcefactory/5.0" - FILE "plugin.json") - Q_INTERFACES(QGeoPositionInfoSourceFactory) - -public: - QGeoPositionInfoSource *positionInfoSource(QObject *parent) override; - QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent) override; - QGeoAreaMonitorSource *areaMonitor(QObject *parent) override; -}; - -QGeoPositionInfoSource *QGeoPositionInfoSourceFactoryTestV1::positionInfoSource(QObject *parent) -{ - return new DummySource(parent); -} - -QGeoSatelliteInfoSource *QGeoPositionInfoSourceFactoryTestV1::satelliteInfoSource(QObject *parent) -{ - Q_UNUSED(parent); - return nullptr; -} - -QGeoAreaMonitorSource *QGeoPositionInfoSourceFactoryTestV1::areaMonitor(QObject* parent) -{ - Q_UNUSED(parent); - return nullptr; -} - -#include "plugin.moc" diff --git a/tests/auto/positionpluginV1/plugin.json b/tests/auto/positionpluginV1/plugin.json deleted file mode 100644 index 9acf27e7..00000000 --- a/tests/auto/positionpluginV1/plugin.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Keys": ["test.source.v1"], - "Provider": "test.source.v1", - "Position": true, - "Satellite": false, - "Monitor": false, - "Priority": 0, - "Testable": true -} diff --git a/tests/auto/positionpluginV1/positionpluginV1.pro b/tests/auto/positionpluginV1/positionpluginV1.pro deleted file mode 100644 index 925a7e29..00000000 --- a/tests/auto/positionpluginV1/positionpluginV1.pro +++ /dev/null @@ -1,12 +0,0 @@ -TARGET = qtposition_testpluginv1 -QT += positioning - -PLUGIN_TYPE = position -PLUGIN_CLASS_NAME = QGeoPositionInfoSourceFactoryTestV1 -PLUGIN_EXTENDS = - -load(qt_plugin) - -SOURCES += plugin.cpp - -OTHER_FILES += \ - plugin.json |