diff options
author | Henning Gruendl <henning.gruendl@qt.io> | 2021-12-08 15:22:08 +0100 |
---|---|---|
committer | Henning Gründl <henning.gruendl@qt.io> | 2021-12-08 19:01:07 +0000 |
commit | efa8e9fd9a8ef60cb5a1fa3e254f2a16d2970c42 (patch) | |
tree | ae4fca2035ed9fe3e83852f3de26247f3539e7d3 | |
parent | e71e6b95833b2a93b56ea0edac6ca93771838cb2 (diff) |
QmlDesigner: ConnectionEditor hide readonly
Hide readonly properties in the ConnectionEditors target item property
ComboBox.
Task-number: QDS-5718
Change-Id: Idee217714d460a0a59954faf3c51641648e0657b
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
3 files changed, 31 insertions, 18 deletions
diff --git a/src/plugins/qmldesigner/components/bindingeditor/actioneditor.cpp b/src/plugins/qmldesigner/components/bindingeditor/actioneditor.cpp index c88d072618..ce4f124d34 100644 --- a/src/plugins/qmldesigner/components/bindingeditor/actioneditor.cpp +++ b/src/plugins/qmldesigner/components/bindingeditor/actioneditor.cpp @@ -202,26 +202,26 @@ void ActionEditor::prepareConnections() continue; const QString name = QString::fromUtf8(propertyName); + const bool writeable = modelNode.metaInfo().propertyIsWritable(propertyName); TypeName type = modelNode.metaInfo().propertyTypeName(propertyName); if (type.contains("<cpp>.")) type.remove(0, 6); - connection.properties.append(ActionEditorDialog::PropertyOption(name, type)); + connection.properties.append(ActionEditorDialog::PropertyOption(name, type, writeable)); } for (const VariantProperty &variantProperty : modelNode.variantProperties()) { - if (variantProperty.isValid()) { - if (variantProperty.isDynamic()) { - if (!typeWhiteList.contains(variantProperty.dynamicTypeName())) - continue; + if (variantProperty.isValid() && variantProperty.isDynamic()) { + if (!typeWhiteList.contains(variantProperty.dynamicTypeName())) + continue; - const QString name = QString::fromUtf8(variantProperty.name()); - TypeName type = variantProperty.dynamicTypeName(); - if (type.contains("<cpp>.")) - type.remove(0, 6); + const QString name = QString::fromUtf8(variantProperty.name()); + const bool writeable = modelNode.metaInfo().propertyIsWritable(variantProperty.name()); + TypeName type = variantProperty.dynamicTypeName(); + if (type.contains("<cpp>.")) + type.remove(0, 6); - connection.properties.append(ActionEditorDialog::PropertyOption(name, type)); - } + connection.properties.append(ActionEditorDialog::PropertyOption(name, type, writeable)); } } @@ -266,10 +266,11 @@ void ActionEditor::prepareConnections() continue; const QString name = QString::fromUtf8(propertyName); + const bool writeable = metaInfo.propertyIsWritable(propertyName); if (type.contains("<cpp>.")) type.remove(0, 6); - singelton.properties.append(ActionEditorDialog::PropertyOption(name, type)); + singelton.properties.append(ActionEditorDialog::PropertyOption(name, type, writeable)); } if (!singelton.properties.isEmpty()) { diff --git a/src/plugins/qmldesigner/components/bindingeditor/actioneditordialog.cpp b/src/plugins/qmldesigner/components/bindingeditor/actioneditordialog.cpp index 7e4fb86451..12b3389b46 100644 --- a/src/plugins/qmldesigner/components/bindingeditor/actioneditordialog.cpp +++ b/src/plugins/qmldesigner/components/bindingeditor/actioneditordialog.cpp @@ -472,7 +472,7 @@ void ActionEditorDialog::fillAndSetTargetItem(const QString &value, bool useDefa } else { // ConnectionType::Assignment m_assignmentTargetItem->clear(); for (const auto &connection : qAsConst(m_connections)) { - if (!connection.properties.isEmpty()) + if (!connection.properties.isEmpty() && connection.hasWriteableProperties()) m_assignmentTargetItem->addItem(connection.item); } @@ -516,8 +516,10 @@ void ActionEditorDialog::fillAndSetTargetProperty(const QString &value, bool use if (idx == -1) { insertAndSetUndefined(m_assignmentTargetProperty); } else { - for (const auto &property : qAsConst(m_connections[idx].properties)) - m_assignmentTargetProperty->addItem(property.name, property.type); + for (const auto &property : qAsConst(m_connections[idx].properties)) { + if (property.isWriteable) + m_assignmentTargetProperty->addItem(property.name, property.type); + } if (m_assignmentTargetProperty->findText(value) != -1) { m_assignmentTargetProperty->setCurrentText(value); diff --git a/src/plugins/qmldesigner/components/bindingeditor/actioneditordialog.h b/src/plugins/qmldesigner/components/bindingeditor/actioneditordialog.h index e19c7fe657..02d1cb9482 100644 --- a/src/plugins/qmldesigner/components/bindingeditor/actioneditordialog.h +++ b/src/plugins/qmldesigner/components/bindingeditor/actioneditordialog.h @@ -51,10 +51,10 @@ public: class PropertyOption { public: - PropertyOption() {} - PropertyOption(const QString &n, const TypeName &t) + PropertyOption(const QString &n, const TypeName &t, bool writeable = true) : name(n) , type(t) + , isWriteable(writeable) {} bool operator==(const QString &value) const { return value == name; } @@ -62,6 +62,7 @@ public: QString name; TypeName type; + bool isWriteable; }; class SingletonOption @@ -80,6 +81,16 @@ public: return false; } + bool hasWriteableProperties() const + { + for (const auto &p : properties) { + if (p.isWriteable) + return true; + } + + return false; + } + bool operator==(const QString &value) const { return value == item; } bool operator==(const SingletonOption &value) const { return value.item == item; } @@ -90,7 +101,6 @@ public: class ConnectionOption : public SingletonOption { public: - ConnectionOption() {} ConnectionOption(const QString &value) : SingletonOption(value) {} QStringList methods; |