summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Solovev <ivan.solovev@qt.io>2021-11-05 15:10:13 +0100
committerIvan Solovev <ivan.solovev@qt.io>2021-11-09 10:28:19 +0100
commit9121d0e4b45fb3a1401554bc48c77f17ce40a7f9 (patch)
tree7ef9b314a7c116e75b176034fd71cf2bd3091c24
parent052a247133fe98a5941a570134b48a7b97853092 (diff)
downloadqtlocation-9121d0e4b45fb3a1401554bc48c77f17ce40a7f9.tar.gz
Plugins: port to QPluginParsedMetaData and CBOR
QFactoryLoader now no longer converts its internal metadata to JSON, so we may as well not do it here either. All of this is internal API, so we can change. Task-number: QTBUG-97769 Change-Id: I91f9fd5a3a843befff2fb29be7659b7520be16bc Reviewed-by: Alex Blasche <alexander.blasche@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r--src/location/maps/qgeoserviceprovider.cpp25
-rw-r--r--src/location/maps/qgeoserviceprovider_p.h9
2 files changed, 17 insertions, 17 deletions
diff --git a/src/location/maps/qgeoserviceprovider.cpp b/src/location/maps/qgeoserviceprovider.cpp
index 4873da22..292e981a 100644
--- a/src/location/maps/qgeoserviceprovider.cpp
+++ b/src/location/maps/qgeoserviceprovider.cpp
@@ -53,6 +53,7 @@
#include <QList>
#include <QString>
#include <QVariant>
+#include <QCborArray>
#include <QDebug>
#include <QStringList>
@@ -282,8 +283,8 @@ Flags QGeoServiceProviderPrivate::features(const char *enumName)
Flags ret = typename Flags::enum_type(0);
if (this->metaData.contains(QStringLiteral("Features"))
&& this->metaData.value(QStringLiteral("Features")).isArray()) {
- QJsonArray features = this->metaData.value(QStringLiteral("Features")).toArray();
- foreach (const QJsonValue &v, features) {
+ QCborArray features = this->metaData.value(QStringLiteral("Features")).toArray();
+ for (const QCborValue &v : features) {
int val = en.keyToValue(v.toString().toLatin1().constData());
if (v.isString() && val != -1) {
ret |= typename Flags::enum_type(val);
@@ -799,7 +800,7 @@ void QGeoServiceProviderPrivate::unload()
factory = factoryV2 = factoryV3 = nullptr;
error = QGeoServiceProvider::NoError;
errorString = QLatin1String("");
- metaData = QJsonObject();
+ metaData = QCborMap();
metaData.insert(QStringLiteral("index"), -1);
}
@@ -827,12 +828,12 @@ void QGeoServiceProviderPrivate::filterParameterMap()
void QGeoServiceProviderPrivate::loadMeta()
{
factory = factoryV2 = factoryV3 = nullptr;
- metaData = QJsonObject();
+ metaData = QCborMap();
metaData.insert(QStringLiteral("index"), -1);
error = QGeoServiceProvider::NotSupportedError;
errorString = QString(QLatin1String("The geoservices provider %1 is not supported.")).arg(providerName);
- QList<QJsonObject> candidates = QGeoServiceProviderPrivate::plugins().values(providerName);
+ QList<QCborMap> candidates = QGeoServiceProviderPrivate::plugins().values(providerName);
int versionFound = -1;
int idx = -1;
@@ -840,9 +841,9 @@ void QGeoServiceProviderPrivate::loadMeta()
// figure out which version of the plugin we want
// (always latest unless experimental)
for (int i = 0; i < candidates.size(); ++i) {
- QJsonObject meta = candidates[i];
+ QCborMap meta = candidates[i];
if (meta.contains(QStringLiteral("Version"))
- && meta.value(QStringLiteral("Version")).isDouble()
+ && meta.value(QStringLiteral("Version")).isInteger()
&& meta.contains(QStringLiteral("Experimental"))
&& meta.value(QStringLiteral("Experimental")).isBool()) {
int ver = int(meta.value(QStringLiteral("Version")).toDouble());
@@ -896,9 +897,9 @@ void QGeoServiceProviderPrivate::loadPlugin(const QVariantMap &parameters)
}
}
-QMultiHash<QString, QJsonObject> QGeoServiceProviderPrivate::plugins(bool reload)
+QMultiHash<QString, QCborMap> QGeoServiceProviderPrivate::plugins(bool reload)
{
- static QMultiHash<QString, QJsonObject> plugins;
+ static QMultiHash<QString, QCborMap> plugins;
static bool alreadyDiscovered = false;
if (reload == true)
@@ -911,12 +912,12 @@ QMultiHash<QString, QJsonObject> QGeoServiceProviderPrivate::plugins(bool reload
return plugins;
}
-void QGeoServiceProviderPrivate::loadPluginMetadata(QMultiHash<QString, QJsonObject> &list)
+void QGeoServiceProviderPrivate::loadPluginMetadata(QMultiHash<QString, QCborMap> &list)
{
QFactoryLoader *l = loader();
- QList<QJsonObject> meta = l->metaData();
+ QList<QPluginParsedMetaData> meta = l->metaData();
for (int i = 0; i < meta.size(); ++i) {
- QJsonObject obj = meta.at(i).value(QStringLiteral("MetaData")).toObject();
+ QCborMap obj = meta.at(i).value(QtPluginMetaDataKeys::MetaData).toMap();
obj.insert(QStringLiteral("index"), i);
list.insert(obj.value(QStringLiteral("Provider")).toString(), obj);
}
diff --git a/src/location/maps/qgeoserviceprovider_p.h b/src/location/maps/qgeoserviceprovider_p.h
index 22dcedd6..de44054a 100644
--- a/src/location/maps/qgeoserviceprovider_p.h
+++ b/src/location/maps/qgeoserviceprovider_p.h
@@ -51,8 +51,7 @@
#include "qgeoserviceprovider.h"
#include <QHash>
-#include <QJsonObject>
-#include <QJsonArray>
+#include <QCborMap>
#include <QLocale>
QT_BEGIN_NAMESPACE
@@ -87,7 +86,7 @@ public:
QGeoServiceProviderFactory *factory;
QGeoServiceProviderFactoryV2 *factoryV2 = nullptr;
QGeoServiceProviderFactoryV3 *factoryV3 = nullptr;
- QJsonObject metaData;
+ QCborMap metaData;
QVariantMap parameterMap;
QVariantMap cleanedParameterMap;
@@ -121,8 +120,8 @@ public:
QLocale locale;
bool localeSet;
- static QMultiHash<QString, QJsonObject> plugins(bool reload = false);
- static void loadPluginMetadata(QMultiHash<QString, QJsonObject> &list);
+ static QMultiHash<QString, QCborMap> plugins(bool reload = false);
+ static void loadPluginMetadata(QMultiHash<QString, QCborMap> &list);
};
QT_END_NAMESPACE