summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJarkko Koivikko <jarkko.koivikko@code-q.fi>2022-02-10 15:52:08 +0200
committerJarkko Koivikko <jarkko.koivikko@code-q.fi>2022-02-11 15:40:01 +0200
commit40ec1cab514cb837a38c705119601e5bae5ff997 (patch)
treee1d12de1fd79bff25d7152f92f61b4006c3b59f8
parent45b0d8a39bfdb6b18302fc6b223d475ea2f2c4ee (diff)
Port plugin loader to CBOR
Change-Id: I85afda872ed9bf8967cc3ae05aa2e02f0c955dee Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi>
-rw-r--r--src/tts/qtexttospeech.cpp45
-rw-r--r--src/tts/qtexttospeech_p.h7
2 files changed, 24 insertions, 28 deletions
diff --git a/src/tts/qtexttospeech.cpp b/src/tts/qtexttospeech.cpp
index 7bda297..c8dd5a4 100644
--- a/src/tts/qtexttospeech.cpp
+++ b/src/tts/qtexttospeech.cpp
@@ -90,48 +90,43 @@ QTextToSpeechPrivate::~QTextToSpeechPrivate()
bool QTextToSpeechPrivate::loadMeta()
{
- m_plugin = 0;
- m_metaData = QJsonObject();
- m_metaData.insert(QLatin1String("index"), -1);
+ m_plugin = nullptr;
+ m_metaData = QCborMap();
- QList<QJsonObject> candidates = QTextToSpeechPrivate::plugins().values(m_providerName);
+ QList<QCborMap> candidates = QTextToSpeechPrivate::plugins().values(m_providerName);
int versionFound = -1;
- int idx = -1;
// figure out which version of the plugin we want
for (int i = 0; i < candidates.size(); ++i) {
- QJsonObject meta = candidates[i];
- if (meta.contains(QLatin1String("Version"))
- && meta.value(QLatin1String("Version")).isDouble()) {
- int ver = int(meta.value(QLatin1String("Version")).toDouble());
- if (ver > versionFound) {
- versionFound = ver;
- idx = i;
- }
+ QCborMap meta = candidates[i];
+ if (int ver = meta.value(QLatin1String("Version")).toInteger(); ver > versionFound) {
+ versionFound = ver;
+ m_metaData = std::move(meta);
}
}
- if (idx != -1) {
- m_metaData = candidates[idx];
- return true;
+ if (m_metaData.isEmpty()) {
+ m_metaData.insert(QLatin1String("index"), -1); // not found
+ return false;
}
- return false;
+
+ return true;
}
void QTextToSpeechPrivate::loadPlugin()
{
- if (int(m_metaData.value(QLatin1String("index")).toDouble()) < 0) {
- m_plugin = 0;
+ int idx = m_metaData.value(QLatin1String("index")).toInteger();
+ if (idx < 0) {
+ m_plugin = nullptr;
return;
}
- int idx = int(m_metaData.value(QLatin1String("index")).toDouble());
m_plugin = qobject_cast<QTextToSpeechPlugin *>(loader()->instance(idx));
}
-QMultiHash<QString, QJsonObject> QTextToSpeechPrivate::plugins(bool reload)
+QMultiHash<QString, QCborMap> QTextToSpeechPrivate::plugins(bool reload)
{
- static QMultiHash<QString, QJsonObject> plugins;
+ static QMultiHash<QString, QCborMap> plugins;
static bool alreadyDiscovered = false;
QMutexLocker lock(&m_mutex);
@@ -145,12 +140,12 @@ QMultiHash<QString, QJsonObject> QTextToSpeechPrivate::plugins(bool reload)
return plugins;
}
-void QTextToSpeechPrivate::loadPluginMetadata(QMultiHash<QString, QJsonObject> &list)
+void QTextToSpeechPrivate::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(QLatin1String("MetaData")).toObject();
+ QCborMap obj = meta.at(i).value(QtPluginMetaDataKeys::MetaData).toMap();
obj.insert(QLatin1String("index"), i);
list.insert(obj.value(QLatin1String("Provider")).toString(), obj);
}
diff --git a/src/tts/qtexttospeech_p.h b/src/tts/qtexttospeech_p.h
index c9b065b..e2210d9 100644
--- a/src/tts/qtexttospeech_p.h
+++ b/src/tts/qtexttospeech_p.h
@@ -53,6 +53,7 @@
#include <qtexttospeech.h>
#include <qtexttospeechplugin.h>
#include <QMutex>
+#include <QCborMap>
#include <QtCore/qhash.h>
#include <QtCore/private/qobject_p.h>
@@ -64,17 +65,17 @@ class QTextToSpeechPrivate : public QObjectPrivate
public:
QTextToSpeechPrivate(QTextToSpeech *speech, const QString &engine);
~QTextToSpeechPrivate();
- static QMultiHash<QString, QJsonObject> plugins(bool reload = false);
+ static QMultiHash<QString, QCborMap> plugins(bool reload = false);
QTextToSpeechEngine *m_engine;
private:
bool loadMeta();
void loadPlugin();
- static void loadPluginMetadata(QMultiHash<QString, QJsonObject> &list);
+ static void loadPluginMetadata(QMultiHash<QString, QCborMap> &list);
QTextToSpeech *m_speech;
QString m_providerName;
QTextToSpeechPlugin *m_plugin;
- QJsonObject m_metaData;
+ QCborMap m_metaData;
static QMutex m_mutex;
};