aboutsummaryrefslogtreecommitdiffstats
path: root/tools/qmlimportscanner
diff options
context:
space:
mode:
authorMorten Johan Sørvig <morten.sorvig@digia.com>2013-09-26 11:24:30 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-10-14 12:30:28 +0200
commit9ca4c75da3df7955142476ef77c1d2380cb1380e (patch)
tree666421400532be15ddb0aed49ee301a72196bd8a /tools/qmlimportscanner
parent3ac39b608899a43735ab34abfcd273586362e95c (diff)
Make qmlimportscanner report plugin classnames.
Change-Id: Ifbe72e6dcc569c8cb311d46e4f265da348b353ea Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Diffstat (limited to 'tools/qmlimportscanner')
-rw-r--r--tools/qmlimportscanner/main.cpp34
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);