QmlDesigner: Simply property type name check

Move some repetitive pattern to PropertyMetaInfo

Change-Id: Iba8722d3d95881c1db85c12cbc2b2b8c4b629f2c
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
Marco Bubke
2022-06-30 18:04:32 +02:00
parent 87dfe4725a
commit fe50af151d
7 changed files with 16 additions and 10 deletions

View File

@@ -139,7 +139,7 @@ void MaterialEditorView::changeValue(const QString &name)
bool propertyTypeUrl = false; bool propertyTypeUrl = false;
if (metaInfo.isValid() && metaInfo.hasProperty(propertyName)) { if (metaInfo.isValid() && metaInfo.hasProperty(propertyName)) {
if (metaInfo.property(propertyName).hasPropertyTypeName("QUrl", "url")) { if (metaInfo.property(propertyName).propertyTypeNameIsUrl()) {
// turn absolute local file paths into relative paths // turn absolute local file paths into relative paths
propertyTypeUrl = true; propertyTypeUrl = true;
QString filePath = castedValue.toUrl().toString(); QString filePath = castedValue.toUrl().toString();

View File

@@ -63,7 +63,7 @@ QVariant PropertyEditorValue::value() const
if (modelNode().isValid()) { if (modelNode().isValid()) {
if (auto metaInfo = modelNode().metaInfo(); if (auto metaInfo = modelNode().metaInfo();
metaInfo.isValid() && metaInfo.hasProperty(name()) metaInfo.isValid() && metaInfo.hasProperty(name())
&& metaInfo.property(name()).hasPropertyTypeName("QUrl", "url")) { && metaInfo.property(name()).propertyTypeNameIsUrl()) {
returnValue = returnValue.toUrl().toString(); returnValue = returnValue.toUrl().toString();
} }
} }
@@ -106,7 +106,7 @@ static void fixAmbigousColorNames(const QmlDesigner::ModelNode &modelNode,
{ {
if (modelNode.isValid()) { if (modelNode.isValid()) {
if (auto metaInfo = modelNode.metaInfo(); if (auto metaInfo = modelNode.metaInfo();
metaInfo.isValid() && metaInfo.property(name).hasPropertyTypeName("QColor", "color")) { metaInfo.isValid() && metaInfo.property(name).propertyTypeNameIsColor()) {
if ((value->type() == QVariant::Color)) { if ((value->type() == QVariant::Color)) {
QColor color = value->value<QColor>(); QColor color = value->value<QColor>();
int alpha = color.alpha(); int alpha = color.alpha();
@@ -124,7 +124,7 @@ static void fixUrl(const QmlDesigner::ModelNode &modelNode, const QmlDesigner::P
{ {
if (modelNode.isValid()) { if (modelNode.isValid()) {
if (auto metaInfo = modelNode.metaInfo(); if (auto metaInfo = modelNode.metaInfo();
metaInfo.isValid() && metaInfo.property(name).hasPropertyTypeName("QUrl", "url")) metaInfo.isValid() && metaInfo.property(name).propertyTypeNameIsUrl())
if (!value->isValid()) if (!value->isValid())
*value = QStringLiteral(""); *value = QStringLiteral("");
@@ -149,7 +149,7 @@ void PropertyEditorValue::setValueWithEmit(const QVariant &value)
if (modelNode().isValid()) { if (modelNode().isValid()) {
if (auto metaInfo = modelNode().metaInfo(); if (auto metaInfo = modelNode().metaInfo();
metaInfo.isValid() && metaInfo.hasProperty(name()) metaInfo.isValid() && metaInfo.hasProperty(name())
&& metaInfo.property(name()).hasPropertyTypeName("QUrl")) { && metaInfo.property(name()).propertyTypeNameIsUrl()) {
newValue = QUrl(newValue.toString()); newValue = QUrl(newValue.toString());
} }
} }
@@ -268,7 +268,7 @@ bool PropertyEditorValue::isTranslated() const
if (modelNode().isValid()) { if (modelNode().isValid()) {
if (auto metaInfo = modelNode().metaInfo(); if (auto metaInfo = modelNode().metaInfo();
metaInfo.isValid() && metaInfo.hasProperty(name()) metaInfo.isValid() && metaInfo.hasProperty(name())
&& metaInfo.property(name()).hasPropertyTypeName("QString", "string")) { && metaInfo.property(name()).propertyTypeNameIsString()) {
const QmlDesigner::QmlObjectNode objectNode(modelNode()); const QmlDesigner::QmlObjectNode objectNode(modelNode());
if (objectNode.isValid() && objectNode.hasBindingProperty(name())) { if (objectNode.isValid() && objectNode.hasBindingProperty(name())) {
const QRegularExpression rx( const QRegularExpression rx(
@@ -438,7 +438,7 @@ QString PropertyEditorValue::getTranslationContext() const
if (modelNode().isValid()) { if (modelNode().isValid()) {
if (auto metaInfo = modelNode().metaInfo(); if (auto metaInfo = modelNode().metaInfo();
metaInfo.isValid() && metaInfo.hasProperty(name()) metaInfo.isValid() && metaInfo.hasProperty(name())
&& metaInfo.property(name()).hasPropertyTypeName("QString", "string")) { && metaInfo.property(name()).propertyTypeNameIsString()) {
const QmlDesigner::QmlObjectNode objectNode(modelNode()); const QmlDesigner::QmlObjectNode objectNode(modelNode());
if (objectNode.isValid() && objectNode.hasBindingProperty(name())) { if (objectNode.isValid() && objectNode.hasBindingProperty(name())) {
const QRegularExpression rx(QRegularExpression::anchoredPattern( const QRegularExpression rx(QRegularExpression::anchoredPattern(

View File

@@ -201,7 +201,7 @@ void PropertyEditorView::changeValue(const QString &name)
bool propertyTypeUrl = false; bool propertyTypeUrl = false;
if (metaInfo.isValid() && metaInfo.hasProperty(propertyName) if (metaInfo.isValid() && metaInfo.hasProperty(propertyName)
&& metaInfo.property(propertyName).hasPropertyTypeName("QUrl", "url")) { && metaInfo.property(propertyName).propertyTypeNameIsUrl()) {
// turn absolute local file paths into relative paths // turn absolute local file paths into relative paths
propertyTypeUrl = true; propertyTypeUrl = true;
QString filePath = castedValue.toUrl().toString(); QString filePath = castedValue.toUrl().toString();

View File

@@ -54,7 +54,7 @@ bool modelNodeHasUrlSource(const QmlDesigner::ModelNode &modelNode)
{ {
QmlDesigner::NodeMetaInfo metaInfo = modelNode.metaInfo(); QmlDesigner::NodeMetaInfo metaInfo = modelNode.metaInfo();
return metaInfo.isValid() && metaInfo.hasProperty("source") return metaInfo.isValid() && metaInfo.hasProperty("source")
&& metaInfo.property("source").hasPropertyTypeName("QUrl", "url"); && metaInfo.property("source").propertyTypeNameIsUrl();
} }
} //namespace } //namespace

View File

@@ -59,6 +59,10 @@ public:
return ((propertyTypeName_ == typeName) || ...); return ((propertyTypeName_ == typeName) || ...);
} }
bool propertyTypeNameIsColor() const { return hasPropertyTypeName("QColor", "color"); }
bool propertyTypeNameIsString() const { return hasPropertyTypeName("QString", "string"); }
bool propertyTypeNameIsUrl() const { return hasPropertyTypeName("QUrl", "url"); }
private: private:
QSharedPointer<class NodeMetaInfoPrivate> m_nodeMetaInfoPrivateData; QSharedPointer<class NodeMetaInfoPrivate> m_nodeMetaInfoPrivateData;
PropertyName m_propertyName; PropertyName m_propertyName;

View File

@@ -247,7 +247,7 @@ QVariant QmlObjectNode::modelValue(const PropertyName &name) const
bool QmlObjectNode::isTranslatableText(const PropertyName &name) const bool QmlObjectNode::isTranslatableText(const PropertyName &name) const
{ {
if (modelNode().metaInfo().isValid() && modelNode().metaInfo().hasProperty(name) if (modelNode().metaInfo().isValid() && modelNode().metaInfo().hasProperty(name)
&& modelNode().metaInfo().property(name).hasPropertyTypeName("QString", "string")) { && modelNode().metaInfo().property(name).propertyTypeNameIsString()) {
if (modelNode().hasBindingProperty(name)) { if (modelNode().hasBindingProperty(name)) {
static QRegularExpression regularExpressionPattern( static QRegularExpression regularExpressionPattern(
QLatin1String("^qsTr(|Id|anslate)\\(\".*\"\\)$")); QLatin1String("^qsTr(|Id|anslate)\\(\".*\"\\)$"));

View File

@@ -62,6 +62,8 @@ public:
auto propertyTypeName_ = propertyTypeName(); auto propertyTypeName_ = propertyTypeName();
return ((propertyTypeName_ == typeName) && ...); return ((propertyTypeName_ == typeName) && ...);
} }
bool propertyTypeNameIsUrl() const { return hasPropertyTypeName("QUrl", "url"); }
}; };
using PropertyMetaInfos = std::vector<PropertyMetaInfo>; using PropertyMetaInfos = std::vector<PropertyMetaInfo>;