diff options
author | Mahmoud Badri <mahmoud.badri@qt.io> | 2023-03-15 14:26:20 +0200 |
---|---|---|
committer | Mahmoud Badri <mahmoud.badri@qt.io> | 2023-03-16 10:09:07 +0000 |
commit | 05a1a810924e3ba7904409540184fcfe88d246eb (patch) | |
tree | 24133300a5d610fcee5ddf76cb40892cc54c3989 /src/plugins/qmldesigner/components | |
parent | 5631c81a98adfdc0e1c4e5ba272af735e5cd615a (diff) | |
download | qt-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.cpp | 95 | ||||
-rw-r--r-- | src/plugins/qmldesigner/components/materialeditor/materialeditorview.h | 9 |
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 { |