diff options
author | Morten Johan Sørvig <morten.sorvig@digia.com> | 2013-09-26 11:24:30 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-10-14 12:30:28 +0200 |
commit | 9ca4c75da3df7955142476ef77c1d2380cb1380e (patch) | |
tree | 666421400532be15ddb0aed49ee301a72196bd8a /tools/qmlimportscanner/main.cpp | |
parent | 3ac39b608899a43735ab34abfcd273586362e95c (diff) |
Make qmlimportscanner report plugin classnames.
Change-Id: Ifbe72e6dcc569c8cb311d46e4f265da348b353ea
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Diffstat (limited to 'tools/qmlimportscanner/main.cpp')
-rw-r--r-- | tools/qmlimportscanner/main.cpp | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/tools/qmlimportscanner/main.cpp b/tools/qmlimportscanner/main.cpp index 3fc84ab7b2..6b2d225bc1 100644 --- a/tools/qmlimportscanner/main.cpp +++ b/tools/qmlimportscanner/main.cpp @@ -157,25 +157,34 @@ QVariantList findQmlImportsInDirectory(const QString &qmlDir) } // Read the qmldir file, extract a list of plugins by -// parsing the "plugin" lines -QString pluginsForModulePath(const QString &modulePath) -{ +// parsing the "plugin" and "classname" lines. +QVariantMap pluginsForModulePath(const QString &modulePath) { QFile qmldirFile(modulePath + QStringLiteral("/qmldir")); if (!qmldirFile.exists()) - return QString(); + return QVariantMap(); + qmldirFile.open(QIODevice::ReadOnly | QIODevice::Text); + // a qml import may contain several plugins QString plugins; + QString classnames; QByteArray line; do { line = qmldirFile.readLine(); if (line.startsWith("plugin")) { plugins += QString::fromUtf8(line.split(' ').at(1)); - plugins += QLatin1Char(' '); + plugins += QStringLiteral(" "); + } else if (line.startsWith("classname")) { + classnames += QString::fromUtf8(line.split(' ').at(1)); + classnames += QStringLiteral(" "); } + } while (line.length() > 0); - return plugins.simplified(); + QVariantMap pluginInfo; + pluginInfo[QStringLiteral("plugins")] = plugins.simplified(); + pluginInfo[QStringLiteral("classnames")] = classnames.simplified(); + return pluginInfo; } // Construct a file system path from a module uri and version. @@ -216,11 +225,14 @@ QVariantList findPathsForModuleImports(const QVariantList &imports) foreach (QVariant importVariant, imports) { QVariantMap import = qvariant_cast<QVariantMap>(importVariant); if (import[QStringLiteral("type")] == QStringLiteral("module")) { - const QString path = findPathForImport(localPathForModule(import[QStringLiteral("name")].toString(), import[QStringLiteral("version")].toString())); - import.insert(QStringLiteral("path"), path); - const QString plugin = pluginsForModulePath(path); - if (!plugin.isEmpty()) - import[QStringLiteral("plugin")] = plugin; + import[QStringLiteral("path")] = findPathForImport(localPathForModule(import[QStringLiteral("name")].toString(), import[QStringLiteral("version")].toString())); + QVariantMap plugininfo = pluginsForModulePath(import[QStringLiteral("path")].toString()); + QString plugins = plugininfo[QStringLiteral("plugins")].toString(); + QString classnames = plugininfo[QStringLiteral("classnames")].toString(); + if (!plugins.isEmpty()) { + import[QStringLiteral("plugin")] = plugins; + import[QStringLiteral("classname")] = classnames; + } } if (!import[QStringLiteral("path")].isNull()) done.append(import); |