forked from qt-creator/qt-creator
Implement drag-and-drop from Assets View to Texture Editor
The asset (i.e. image) can now be dragged to the "Source" property of the Texture Editor. Task-number: QDS-8341 Change-Id: I2d30bdf245a8328a864c116c727d3faaaad347cc Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
@@ -103,6 +103,19 @@ void TextureEditorContextObject::setMajorVersion(int majorVersion)
|
|||||||
emit majorVersionChanged();
|
emit majorVersionChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString TextureEditorContextObject::activeDragSuffix() const
|
||||||
|
{
|
||||||
|
return m_activeDragSuffix;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TextureEditorContextObject::setActiveDragSuffix(const QString &suffix)
|
||||||
|
{
|
||||||
|
if (m_activeDragSuffix != suffix) {
|
||||||
|
m_activeDragSuffix = suffix;
|
||||||
|
emit activeDragSuffixChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool TextureEditorContextObject::hasActiveTimeline() const
|
bool TextureEditorContextObject::hasActiveTimeline() const
|
||||||
{
|
{
|
||||||
return m_hasActiveTimeline;
|
return m_hasActiveTimeline;
|
||||||
|
@@ -42,6 +42,8 @@ class TextureEditorContextObject : public QObject
|
|||||||
|
|
||||||
Q_PROPERTY(QQmlPropertyMap *backendValues READ backendValues WRITE setBackendValues NOTIFY backendValuesChanged)
|
Q_PROPERTY(QQmlPropertyMap *backendValues READ backendValues WRITE setBackendValues NOTIFY backendValuesChanged)
|
||||||
|
|
||||||
|
Q_PROPERTY(QString activeDragSuffix READ activeDragSuffix NOTIFY activeDragSuffixChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TextureEditorContextObject(QQmlContext *context, QObject *parent = nullptr);
|
TextureEditorContextObject(QQmlContext *context, QObject *parent = nullptr);
|
||||||
|
|
||||||
@@ -95,6 +97,9 @@ public:
|
|||||||
bool hasSingleModelSelection() const;
|
bool hasSingleModelSelection() const;
|
||||||
void setHasSingleModelSelection(bool b);
|
void setHasSingleModelSelection(bool b);
|
||||||
|
|
||||||
|
QString activeDragSuffix() const;
|
||||||
|
void setActiveDragSuffix(const QString &suffix);
|
||||||
|
|
||||||
bool hasAliasExport() const { return m_aliasExport; }
|
bool hasAliasExport() const { return m_aliasExport; }
|
||||||
|
|
||||||
void setSelectedMaterial(const ModelNode &matNode);
|
void setSelectedMaterial(const ModelNode &matNode);
|
||||||
@@ -126,6 +131,7 @@ signals:
|
|||||||
void hasQuick3DImportChanged();
|
void hasQuick3DImportChanged();
|
||||||
void hasMaterialLibraryChanged();
|
void hasMaterialLibraryChanged();
|
||||||
void hasSingleModelSelectionChanged();
|
void hasSingleModelSelectionChanged();
|
||||||
|
void activeDragSuffixChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QUrl m_specificsUrl;
|
QUrl m_specificsUrl;
|
||||||
@@ -152,6 +158,8 @@ private:
|
|||||||
bool m_hasSingleModelSelection = false;
|
bool m_hasSingleModelSelection = false;
|
||||||
|
|
||||||
ModelNode m_selectedTexture;
|
ModelNode m_selectedTexture;
|
||||||
|
|
||||||
|
QString m_activeDragSuffix;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // QmlDesigner
|
} // QmlDesigner
|
||||||
|
@@ -821,10 +821,15 @@ void QmlDesigner::TextureEditorView::highlightSupportedProperties(bool highlight
|
|||||||
QTC_ASSERT(metaInfo.isValid(), return);
|
QTC_ASSERT(metaInfo.isValid(), return);
|
||||||
|
|
||||||
for (const QString &propName : propNames) {
|
for (const QString &propName : propNames) {
|
||||||
if (metaInfo.property(propName.toUtf8()).propertyType().isQtQuick3DTexture()) { // TODO: support dropping to texture source
|
if (metaInfo.property(propName.toUtf8()).propertyType().isQtQuick3DTexture()) {
|
||||||
QObject *propEditorValObj = propMap.value(propName).value<QObject *>();
|
QObject *propEditorValObj = propMap.value(propName).value<QObject *>();
|
||||||
PropertyEditorValue *propEditorVal = qobject_cast<PropertyEditorValue *>(propEditorValObj);
|
PropertyEditorValue *propEditorVal = qobject_cast<PropertyEditorValue *>(propEditorValObj);
|
||||||
propEditorVal->setHasActiveDrag(highlight);
|
propEditorVal->setHasActiveDrag(highlight);
|
||||||
|
} else if (metaInfo.property(propName.toUtf8()).propertyType().isUrl()) {
|
||||||
|
QObject *propEditorValObj = propMap.value(propName).value<QObject *>();
|
||||||
|
PropertyEditorValue *propEditorVal = qobject_cast<PropertyEditorValue *>(propEditorValObj);
|
||||||
|
if (propEditorVal)
|
||||||
|
propEditorVal->setHasActiveDrag(highlight);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -841,6 +846,9 @@ void TextureEditorView::dragStarted(QMimeData *mimeData)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
highlightSupportedProperties();
|
highlightSupportedProperties();
|
||||||
|
|
||||||
|
const QString suffix = "*." + assetPath.split('.').last().toLower();
|
||||||
|
m_qmlBackEnd->contextObject()->setActiveDragSuffix(suffix);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextureEditorView::dragEnded()
|
void TextureEditorView::dragEnded()
|
||||||
|
Reference in New Issue
Block a user