diff options
author | Ivan Komissarov <abbapoh@gmail.com> | 2021-10-06 19:25:42 +0300 |
---|---|---|
committer | Ivan Komissarov <ABBAPOH@gmail.com> | 2021-10-07 11:12:38 +0000 |
commit | a35ff56175cc8c993b54bb1d92ff71ba4532fc88 (patch) | |
tree | bc47c81a595c4d5afe83d5dc5cfa9c05cf197b92 /src/lib/corelib/language/item.cpp | |
parent | 5acd507e853fe67f1065dc69933d81e2564fb002 (diff) |
Use common function for property overriding
...in Module and ModuleProvider loaders
Change-Id: I3d60ec1efb9e655decf599179ddec77624186521
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/lib/corelib/language/item.cpp')
-rw-r--r-- | src/lib/corelib/language/item.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/lib/corelib/language/item.cpp b/src/lib/corelib/language/item.cpp index fa33a264d..2f23de210 100644 --- a/src/lib/corelib/language/item.cpp +++ b/src/lib/corelib/language/item.cpp @@ -387,5 +387,28 @@ void Item::setPropertyDeclarations(const Item::PropertyDeclarationMap &decls) m_propertyDeclarations = decls; } +void Item::overrideProperties( + const QVariantMap &overridden, + const QualifiedId &namePrefix, + const SetupProjectParameters ¶meters, + Logger &logger) +{ + if (overridden.isEmpty()) + return; + for (QVariantMap::const_iterator it = overridden.constBegin(); it != overridden.constEnd(); + ++it) { + const PropertyDeclaration decl = propertyDeclaration(it.key()); + if (!decl.isValid()) { + ErrorInfo error(Tr::tr("Unknown property: %1.%2"). + arg(namePrefix.toString(), it.key())); + handlePropertyError(error, parameters, logger); + continue; + } + setProperty(it.key(), + VariantValue::create(PropertyDeclaration::convertToPropertyType( + it.value(), decl.type(), namePrefix, it.key()))); + } +} + } // namespace Internal } // namespace qbs |