EffectComposer: Toggle "Assign to.." button based on component selection

Task-number: QDS-12148
Change-Id: I1f44df7c6c027c36c09f7c4d74e4dd609542c5b8
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
This commit is contained in:
Shrief Gabr
2024-03-14 14:22:46 +02:00
parent 36cdab7f98
commit 1ed3235e84
5 changed files with 39 additions and 1 deletions

View File

@@ -1729,6 +1729,19 @@ void EffectComposerModel::setIsEnabled(bool enabled)
emit isEnabledChanged();
}
bool EffectComposerModel::hasValidTarget() const
{
return m_hasValidTarget;
}
void EffectComposerModel::setHasValidTarget(bool validTarget)
{
if (m_hasValidTarget == validTarget)
return;
m_hasValidTarget = validTarget;
emit hasValidTargetChanged();
}
QString EffectComposerModel::getQmlImagesString(bool localFiles)
{
QString imagesString;

View File

@@ -48,6 +48,7 @@ class EffectComposerModel : public QAbstractListModel
Q_PROPERTY(bool hasUnsavedChanges MEMBER m_hasUnsavedChanges WRITE setHasUnsavedChanges NOTIFY hasUnsavedChangesChanged)
Q_PROPERTY(bool shadersUpToDate READ shadersUpToDate WRITE setShadersUpToDate NOTIFY shadersUpToDateChanged)
Q_PROPERTY(bool isEnabled READ isEnabled WRITE setIsEnabled NOTIFY isEnabledChanged)
Q_PROPERTY(bool hasValidTarget READ hasValidTarget WRITE setHasValidTarget NOTIFY hasValidTargetChanged)
Q_PROPERTY(QString currentComposition READ currentComposition WRITE setCurrentComposition NOTIFY currentCompositionChanged)
public:
@@ -77,6 +78,9 @@ public:
bool isEnabled() const;
void setIsEnabled(bool enabled);
bool hasValidTarget() const;
void setHasValidTarget(bool validTarget);
QString fragmentShader() const;
void setFragmentShader(const QString &newFragmentShader);
@@ -110,6 +114,7 @@ signals:
void effectErrorChanged();
void shadersUpToDateChanged();
void isEnabledChanged();
void hasValidTargetChanged();
void shadersBaked();
void currentCompositionChanged();
void nodesChanged();
@@ -210,6 +215,7 @@ private:
QString m_qmlComponentString;
bool m_loadComponentImages = true;
bool m_isEnabled = true;
bool m_hasValidTarget = false;
QString m_currentComposition;
QTimer m_rebakeTimer;

View File

@@ -105,4 +105,19 @@ void EffectComposerView::modelAboutToBeDetached(QmlDesigner::Model *model)
AbstractView::modelAboutToBeDetached(model);
}
void EffectComposerView::selectedNodesChanged(const QList<QmlDesigner::ModelNode> & selectedNodeList,
const QList<QmlDesigner::ModelNode> & /*lastSelectedNodeList*/)
{
bool hasValidTarget = false;
for (const QmlDesigner::ModelNode &node : selectedNodeList) {
if (node.metaInfo().isQtQuickItem()) {
hasValidTarget = true;
break;
}
}
m_widget->effectComposerModel()->setHasValidTarget(hasValidTarget);
}
} // namespace EffectComposer

View File

@@ -4,6 +4,7 @@
#pragma once
#include "abstractview.h"
#include "modelnode.h"
#include <coreplugin/icontext.h>
@@ -35,6 +36,8 @@ public:
// AbstractView
void modelAttached(QmlDesigner::Model *model) override;
void modelAboutToBeDetached(QmlDesigner::Model *model) override;
void selectedNodesChanged(const QList<QmlDesigner::ModelNode> &selectedNodeList,
const QList<QmlDesigner::ModelNode> &lastSelectedNodeList) override;
private:
void customNotification(const AbstractView *view, const QString &identifier,