summaryrefslogtreecommitdiff
path: root/src/plugins/qmldesigner/components
diff options
context:
space:
mode:
authorMahmoud Badri <mahmoud.badri@qt.io>2023-03-15 14:26:20 +0200
committerMahmoud Badri <mahmoud.badri@qt.io>2023-03-16 10:09:07 +0000
commit05a1a810924e3ba7904409540184fcfe88d246eb (patch)
tree24133300a5d610fcee5ddf76cb40892cc54c3989 /src/plugins/qmldesigner/components
parent5631c81a98adfdc0e1c4e5ba272af735e5cd615a (diff)
downloadqt-creator-05a1a810924e3ba7904409540184fcfe88d246eb.tar.gz
QmlDesigner: Allow dropping hdr/ktx assets to material editor
Also some tweaks in the same class and fixing few warnings. Fixes: QDS-9430 Change-Id: Ife19fb5f9ad67292882c339f1aa3255e91461cd1 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src/plugins/qmldesigner/components')
-rw-r--r--src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp95
-rw-r--r--src/plugins/qmldesigner/components/materialeditor/materialeditorview.h9
2 files changed, 46 insertions, 58 deletions
diff --git a/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp b/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp
index 3213792b30..5c6308d15b 100644
--- a/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp
+++ b/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp
@@ -3,49 +3,39 @@
#include "materialeditorview.h"
+#include "asset.h"
+#include "bindingproperty.h"
+#include "auxiliarydataproperties.h"
+#include "designdocument.h"
+#include "designmodewidget.h"
+#include "dynamicpropertiesmodel.h"
+#include "itemlibraryinfo.h"
#include "materialeditorqmlbackend.h"
#include "materialeditorcontextobject.h"
#include "materialeditordynamicpropertiesproxymodel.h"
-#include "propertyeditorvalue.h"
#include "materialeditortransaction.h"
-#include "assetslibrarywidget.h"
-
-#include <auxiliarydataproperties.h>
-#include <bindingproperty.h>
-#include <designdocument.h>
-#include <dynamicpropertiesmodel.h>
-#include <metainfo.h>
-#include <nodeinstanceview.h>
-#include <nodelistproperty.h>
-#include <nodemetainfo.h>
-#include <nodeproperty.h>
-#include <rewritingexception.h>
-#include <variantproperty.h>
-#include <qmldesignerconstants.h>
-#include <qmldesignerplugin.h>
-#include <qmltimeline.h>
-
-#include <theme.h>
+#include "metainfo.h"
+#include "nodeinstanceview.h"
+#include "nodelistproperty.h"
+#include "nodemetainfo.h"
+#include "propertyeditorqmlbackend.h"
+#include "propertyeditorvalue.h"
+#include "qmldesignerconstants.h"
+#include "qmldesignerplugin.h"
+#include "qmltimeline.h"
+#include "variantproperty.h"
#include <coreplugin/icore.h>
#include <coreplugin/messagebox.h>
-#include <designmodewidget.h>
-#include <propertyeditorqmlbackend.h>
+
#include <utils/environment.h>
-#include <utils/fileutils.h>
#include <utils/qtcassert.h>
-#include <qmldesignerplugin.h>
-#include <QApplication>
-#include <QDebug>
#include <QDir>
#include <QFileInfo>
-#include <QQuickWidget>
#include <QQuickItem>
-#include <QScopedPointer>
#include <QStackedWidget>
#include <QShortcut>
-#include <QTimer>
#include <QColorDialog>
namespace QmlDesigner {
@@ -74,8 +64,6 @@ MaterialEditorView::MaterialEditorView(ExternalDependenciesInterface &externalDe
m_typeUpdateTimer.setInterval(500);
connect(&m_typeUpdateTimer, &QTimer::timeout, this, &MaterialEditorView::updatePossibleTypes);
- m_stackedWidget->setStyleSheet(Theme::replaceCssColors(
- QString::fromUtf8(Utils::FileReader::fetchQrc(":/qmldesigner/stylesheet.css"))));
m_stackedWidget->setMinimumWidth(250);
QmlDesignerPlugin::trackWidgetFocusTime(m_stackedWidget, Constants::EVENT_MATERIALEDITOR_TIME);
@@ -183,7 +171,7 @@ void MaterialEditorView::changeExpression(const QString &propertyName)
if (name.isNull() || locked() || noValidSelection())
return;
- executeInTransaction("MaterialEditorView::changeExpression", [this, name] {
+ executeInTransaction(__FUNCTION__, [this, name] {
PropertyName underscoreName(name);
underscoreName.replace('.', '_');
@@ -257,7 +245,7 @@ void MaterialEditorView::exportPropertyAsAlias(const QString &name)
if (name.isNull() || locked() || noValidSelection())
return;
- executeInTransaction("MaterialEditorView::exportPopertyAsAlias", [this, name] {
+ executeInTransaction(__FUNCTION__, [this, name] {
const QString id = m_selectedMaterial.validId();
QString upperCasePropertyName = name;
upperCasePropertyName.replace(0, 1, upperCasePropertyName.at(0).toUpper());
@@ -279,7 +267,7 @@ void MaterialEditorView::removeAliasExport(const QString &name)
if (name.isNull() || locked() || noValidSelection())
return;
- executeInTransaction("MaterialEditorView::removeAliasExport", [this, name] {
+ executeInTransaction(__FUNCTION__, [this, name] {
const QString id = m_selectedMaterial.validId();
const QList<BindingProperty> bindingProps = rootModelNode().bindingProperties();
@@ -392,7 +380,7 @@ void MaterialEditorView::applyMaterialToSelectedModels(const ModelNode &material
return QString();
};
- executeInTransaction("MaterialEditorView::applyMaterialToSelectedModels", [&] {
+ executeInTransaction(__FUNCTION__, [&] {
for (const ModelNode &node : std::as_const(m_selectedModels)) {
QmlObjectNode qmlObjNode(node);
if (add) {
@@ -425,7 +413,7 @@ void MaterialEditorView::handleToolBarAction(int action)
case MaterialEditorContextObject::AddNewMaterial: {
if (!model())
break;
- executeInTransaction("MaterialEditorView:handleToolBarAction", [&] {
+ executeInTransaction(__FUNCTION__, [&] {
ModelNode matLib = materialLibraryNode();
if (!matLib.isValid())
return;
@@ -455,7 +443,6 @@ void MaterialEditorView::handleToolBarAction(int action)
void MaterialEditorView::handlePreviewEnvChanged(const QString &envAndValue)
{
- Q_UNUSED(envAndValue);
if (envAndValue.isEmpty() || m_initializingPreviewData)
return;
@@ -518,7 +505,6 @@ void MaterialEditorView::handlePreviewEnvChanged(const QString &envAndValue)
void MaterialEditorView::handlePreviewModelChanged(const QString &modelStr)
{
- Q_UNUSED(modelStr);
if (modelStr.isEmpty() || m_initializingPreviewData)
return;
@@ -613,7 +599,7 @@ void MaterialEditorView::setupQmlBackend()
void MaterialEditorView::commitVariantValueToModel(const PropertyName &propertyName, const QVariant &value)
{
m_locked = true;
- executeInTransaction("MaterialEditorView:commitVariantValueToModel", [&] {
+ executeInTransaction(__FUNCTION__, [&] {
QmlObjectNode(m_selectedMaterial).setVariantProperty(propertyName, value);
});
m_locked = false;
@@ -641,7 +627,7 @@ void MaterialEditorView::commitAuxValueToModel(const PropertyName &propertyName,
void MaterialEditorView::removePropertyFromModel(const PropertyName &propertyName)
{
m_locked = true;
- executeInTransaction("MaterialEditorView:removePropertyFromModel", [&] {
+ executeInTransaction(__FUNCTION__, [&] {
QmlObjectNode(m_selectedMaterial).removeProperty(propertyName);
});
m_locked = false;
@@ -696,6 +682,7 @@ static Import entryToImport(const ItemLibraryEntry &entry)
{
if (entry.majorVersion() == -1 && entry.minorVersion() == -1)
return Import::createFileImport(entry.requiredImport());
+
return Import::createLibraryImport(entry.requiredImport(),
QString::number(entry.majorVersion()) + QLatin1Char('.') +
QString::number(entry.minorVersion()));
@@ -933,6 +920,7 @@ void MaterialEditorView::currentStateChanged(const ModelNode &node)
{
QmlModelState newQmlModelState(node);
Q_ASSERT(newQmlModelState.isValid());
+
resetView();
}
@@ -1006,7 +994,7 @@ void MaterialEditorView::renameMaterial(ModelNode &material, const QString &newN
if (objName.isValid() && objName.toString() == newName)
return;
- executeInTransaction("MaterialEditorView:renameMaterial", [&] {
+ executeInTransaction(__FUNCTION__, [&] {
material.setIdWithRefactoring(model()->generateIdFromName(newName, "material"));
VariantProperty objNameProp = material.variantProperty("objectName");
@@ -1039,7 +1027,8 @@ void MaterialEditorView::duplicateMaterial(const ModelNode &material)
// set name and id
QString newName = sourceMat.modelNode().variantProperty("objectName").value().toString() + " copy";
- duplicateMatNode.variantProperty("objectName").setValue(newName);
+ VariantProperty objNameProp = duplicateMatNode.variantProperty("objectName");
+ objNameProp.setValue(newName);
duplicateMatNode.setIdWithoutRefactoring(model()->generateIdFromName(newName, "material"));
// sync properties. Only the base state is duplicated.
@@ -1052,15 +1041,15 @@ void MaterialEditorView::duplicateMaterial(const ModelNode &material)
if (prop.isDynamic()) {
dynamicProps.append(prop);
} else {
- duplicateMatNode.variantProperty(prop.name())
- .setValue(prop.toVariantProperty().value());
+ VariantProperty variantProp = duplicateMatNode.variantProperty(prop.name());
+ variantProp.setValue(prop.toVariantProperty().value());
}
} else if (prop.isBindingProperty()) {
if (prop.isDynamic()) {
dynamicProps.append(prop);
} else {
- duplicateMatNode.bindingProperty(prop.name())
- .setExpression(prop.toBindingProperty().expression());
+ BindingProperty bindingProp = duplicateMatNode.bindingProperty(prop.name());
+ bindingProp.setExpression(prop.toBindingProperty().expression());
}
}
}
@@ -1075,13 +1064,13 @@ void MaterialEditorView::duplicateMaterial(const ModelNode &material)
executeInTransaction(__FUNCTION__, [&] {
for (const AbstractProperty &prop : std::as_const(dynamicProps)) {
if (prop.isVariantProperty()) {
- duplicateMatNode.variantProperty(prop.name())
- .setDynamicTypeNameAndValue(prop.dynamicTypeName(),
- prop.toVariantProperty().value());
+ VariantProperty variantProp = duplicateMatNode.variantProperty(prop.name());
+ variantProp.setDynamicTypeNameAndValue(prop.dynamicTypeName(),
+ prop.toVariantProperty().value());
} else if (prop.isBindingProperty()) {
- duplicateMatNode.bindingProperty(prop.name())
- .setDynamicTypeNameAndExpression(prop.dynamicTypeName(),
- prop.toBindingProperty().expression());
+ BindingProperty bindingProp = duplicateMatNode.bindingProperty(prop.name());
+ bindingProp.setDynamicTypeNameAndExpression(prop.dynamicTypeName(),
+ prop.toBindingProperty().expression());
}
}
});
@@ -1149,9 +1138,9 @@ void MaterialEditorView::dragStarted(QMimeData *mimeData)
{
if (mimeData->hasFormat(Constants::MIME_TYPE_ASSETS)) {
const QString assetPath = QString::fromUtf8(mimeData->data(Constants::MIME_TYPE_ASSETS)).split(',')[0];
- QString assetType = AssetsLibraryWidget::getAssetTypeAndData(assetPath).first;
+ Asset asset(assetPath);
- if (assetType != Constants::MIME_TYPE_ASSET_IMAGE) // currently only image assets have dnd-supported properties
+ if (!asset.isValidTextureSource()) // currently only image assets have dnd-supported properties
return;
highlightSupportedProperties();
diff --git a/src/plugins/qmldesigner/components/materialeditor/materialeditorview.h b/src/plugins/qmldesigner/components/materialeditor/materialeditorview.h
index c0880c738b..e0733a34ca 100644
--- a/src/plugins/qmldesigner/components/materialeditor/materialeditorview.h
+++ b/src/plugins/qmldesigner/components/materialeditor/materialeditorview.h
@@ -3,23 +3,22 @@
#pragma once
-#include <abstractview.h>
-#include <itemlibraryinfo.h>
+#include "abstractview.h"
+#include "modelnode.h"
#include <QHash>
#include <QPointer>
#include <QTimer>
QT_BEGIN_NAMESPACE
+class QColorDialog;
class QShortcut;
class QStackedWidget;
-class QTimer;
-class QColorDialog;
QT_END_NAMESPACE
namespace QmlDesigner {
-class ModelNode;
+class ItemLibraryInfo;
class MaterialEditorQmlBackend;
namespace Internal {