diff options
author | Jarkko Koivikko <jarkko.koivikko@code-q.fi> | 2022-02-10 15:52:08 +0200 |
---|---|---|
committer | Jarkko Koivikko <jarkko.koivikko@code-q.fi> | 2022-02-11 15:40:01 +0200 |
commit | 40ec1cab514cb837a38c705119601e5bae5ff997 (patch) | |
tree | e1d12de1fd79bff25d7152f92f61b4006c3b59f8 | |
parent | 45b0d8a39bfdb6b18302fc6b223d475ea2f2c4ee (diff) |
Port plugin loader to CBOR
Change-Id: I85afda872ed9bf8967cc3ae05aa2e02f0c955dee
Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi>
-rw-r--r-- | src/tts/qtexttospeech.cpp | 45 | ||||
-rw-r--r-- | src/tts/qtexttospeech_p.h | 7 |
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; }; |