forked from qt-creator/qt-creator
Support for QML module mapping
QUL uses module mapping for theming of QtQuick.Controls: during code-generation the compiler is pointed to the Controls implementation it should use. This is done by rewriting any import of QtQuick.Controls with the given module name. The CMake build scripts will write a file for each target to the directory "qml_module_mappings" in the build dir, and those files will contain the mappings used. Fixes: QTCREATORBUG-25356 Change-Id: I3f74897836dde7717b03bd6dffa46dcc0689ffdd Reviewed-by: Fawzi Mohamed <fawzi.mohamed@qt.io>
This commit is contained in:
committed by
Erik Verbruggen
parent
98dc428c69
commit
5ad724a3ac
@@ -221,19 +221,21 @@ bool Bind::visit(UiImport *ast)
|
||||
if (ast->version)
|
||||
version = ComponentVersion(ast->version->majorVersion, ast->version->minorVersion);
|
||||
|
||||
if (ast->importUri) {
|
||||
if (auto importUri = ast->importUri) {
|
||||
QVersionNumber qtVersion;
|
||||
QString uri = toString(importUri);
|
||||
if (ModelManagerInterface *model = ModelManagerInterface::instance()) {
|
||||
ModelManagerInterface::ProjectInfo pInfo = model->projectInfoForPath(_doc->fileName());
|
||||
qtVersion = QVersionNumber::fromString(pInfo.qtVersionString);
|
||||
uri = pInfo.moduleMappings.value(uri, uri);
|
||||
}
|
||||
if (!version.isValid() && (!qtVersion.isNull() && qtVersion.majorVersion() < 6)) {
|
||||
_diagnosticMessages->append(
|
||||
errorMessage(ast, tr("package import requires a version number")));
|
||||
}
|
||||
const QString importId = ast->importId.toString();
|
||||
ImportInfo import = ImportInfo::moduleImport(toString(ast->importUri), version,
|
||||
importId, ast);
|
||||
|
||||
ImportInfo import = ImportInfo::moduleImport(uri, version, importId, ast);
|
||||
if (_doc->language() == Dialect::Qml) {
|
||||
const QString importStr = import.name() + importId;
|
||||
if (ModelManagerInterface::instance()) {
|
||||
|
||||
@@ -615,6 +615,7 @@ ModelManagerInterface::ProjectInfo ModelManagerInterface::projectInfoForPath(
|
||||
res.applicationDirectories.append(pInfo.applicationDirectories);
|
||||
for (const auto &importPath : pInfo.importPaths)
|
||||
res.importPaths.maybeInsert(importPath);
|
||||
res.moduleMappings.insert(pInfo.moduleMappings);
|
||||
}
|
||||
res.applicationDirectories = Utils::filteredUnique(res.applicationDirectories);
|
||||
return res;
|
||||
|
||||
@@ -72,6 +72,7 @@ public:
|
||||
QStringList allResourceFiles;
|
||||
QHash<QString, QString> resourceFileContents;
|
||||
QStringList applicationDirectories;
|
||||
QHash<QString, QString> moduleMappings; // E.g.: QtQuick.Controls -> MyProject.MyControls
|
||||
|
||||
// whether trying to run qmldump makes sense
|
||||
bool tryQmlDump = false;
|
||||
|
||||
Reference in New Issue
Block a user