aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language/item.cpp
diff options
context:
space:
mode:
authorIvan Komissarov <abbapoh@gmail.com>2021-10-06 19:25:42 +0300
committerIvan Komissarov <ABBAPOH@gmail.com>2021-10-07 11:12:38 +0000
commita35ff56175cc8c993b54bb1d92ff71ba4532fc88 (patch)
treebc47c81a595c4d5afe83d5dc5cfa9c05cf197b92 /src/lib/corelib/language/item.cpp
parent5acd507e853fe67f1065dc69933d81e2564fb002 (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.cpp23
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 &parameters,
+ 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