QmlDesigner: Move component specific code out of the model

The model is an abstraction for communication between components and
should not used as place for component specific code. Otherwise it will
grow quite dramatically.

Add Utils3D in component core which is shared between all components is
actually the place to share code between components.

Change-Id: Ic9d0be72e4480fc33ac6300a10871db4983b4a73
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
This commit is contained in:
Marco Bubke
2024-02-19 15:57:08 +01:00
parent 3586a5b459
commit fe77ba28f8
19 changed files with 119 additions and 76 deletions

View File

@@ -626,6 +626,7 @@ extend_qtc_plugin(QmlDesigner
anchoraction.cpp anchoraction.h anchoraction.cpp anchoraction.h
svgpasteaction.cpp svgpasteaction.h svgpasteaction.cpp svgpasteaction.h
viewmanager.cpp viewmanager.h viewmanager.cpp viewmanager.h
utils3d.cpp utils3d.h
) )
extend_qtc_plugin(QmlDesigner extend_qtc_plugin(QmlDesigner

View File

@@ -9,11 +9,12 @@
#include "assetslibraryview.h" #include "assetslibraryview.h"
#include "designeractionmanager.h" #include "designeractionmanager.h"
#include "import.h" #include "import.h"
#include "nodemetainfo.h"
#include "modelnodeoperations.h" #include "modelnodeoperations.h"
#include "nodemetainfo.h"
#include "qmldesignerconstants.h" #include "qmldesignerconstants.h"
#include "qmldesignerplugin.h" #include "qmldesignerplugin.h"
#include "theme.h" #include "theme.h"
#include <utils3d.h>
#include <studioquickwidget.h> #include <studioquickwidget.h>
@@ -229,16 +230,18 @@ int AssetsLibraryWidget::qtVersion() const
void AssetsLibraryWidget::addTextures(const QStringList &filePaths) void AssetsLibraryWidget::addTextures(const QStringList &filePaths)
{ {
m_assetsView->executeInTransaction(__FUNCTION__, [&] { m_assetsView->executeInTransaction(__FUNCTION__, [&] {
m_createTextures.execute(filePaths, AddTextureMode::Texture, m_createTextures.execute(filePaths,
m_assetsView->model()->active3DSceneId()); AddTextureMode::Texture,
Utils3D::active3DSceneId(m_assetsView->model()));
}); });
} }
void AssetsLibraryWidget::addLightProbe(const QString &filePath) void AssetsLibraryWidget::addLightProbe(const QString &filePath)
{ {
m_assetsView->executeInTransaction(__FUNCTION__, [&] { m_assetsView->executeInTransaction(__FUNCTION__, [&] {
m_createTextures.execute({filePath}, AddTextureMode::LightProbe, m_createTextures.execute({filePath},
m_assetsView->model()->active3DSceneId()); AddTextureMode::LightProbe,
Utils3D::active3DSceneId(m_assetsView->model()));
}); });
} }
@@ -247,7 +250,8 @@ void AssetsLibraryWidget::updateContextMenuActionsEnableState()
setHasMaterialLibrary(m_assetsView->materialLibraryNode().isValid() setHasMaterialLibrary(m_assetsView->materialLibraryNode().isValid()
&& m_assetsView->model()->hasImport("QtQuick3D")); && m_assetsView->model()->hasImport("QtQuick3D"));
ModelNode activeSceneEnv = m_createTextures.resolveSceneEnv(m_assetsView->model()->active3DSceneId()); ModelNode activeSceneEnv = m_createTextures.resolveSceneEnv(
Utils3D::active3DSceneId(m_assetsView->model()));
setHasSceneEnv(activeSceneEnv.isValid()); setHasSceneEnv(activeSceneEnv.isValid());
} }

View File

@@ -0,0 +1,34 @@
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "utils3d.h"
namespace QmlDesigner {
namespace Utils3D {
ModelNode active3DSceneNode(AbstractView *view)
{
if (!view)
return {};
auto activeSceneAux = view->rootModelNode().auxiliaryData(active3dSceneProperty);
if (activeSceneAux) {
int activeScene = activeSceneAux->toInt();
if (view->hasModelNodeForInternalId(activeScene))
return view->modelNodeForInternalId(activeScene);
}
return {};
}
qint32 active3DSceneId(Model *model)
{
auto sceneId = model->rootModelNode().auxiliaryData(active3dSceneProperty);
if (sceneId)
return sceneId->toInt();
return -1;
}
} // namespace Utils3D
} // namespace QmlDesigner

View File

@@ -0,0 +1,18 @@
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
// please put here 3d related functions which have no clear place elsewhere
#include <abstractview.h>
namespace QmlDesigner {
namespace Utils3D {
inline constexpr AuxiliaryDataKeyView active3dSceneProperty{AuxiliaryDataType::Temporary,
"active3dScene"};
ModelNode active3DSceneNode(AbstractView *view);
qint32 active3DSceneId(Model *model);
} // namespace Utils3D
} // namespace QmlDesigner

View File

@@ -16,6 +16,7 @@
#include "qmldesignerconstants.h" #include "qmldesignerconstants.h"
#include "qmlobjectnode.h" #include "qmlobjectnode.h"
#include "variantproperty.h" #include "variantproperty.h"
#include <utils3d.h>
#include <coreplugin/messagebox.h> #include <coreplugin/messagebox.h>
#include <enumeration.h> #include <enumeration.h>
@@ -143,7 +144,7 @@ WidgetInfo ContentLibraryView::widgetInfo()
QTC_ASSERT(typeName.size(), return); QTC_ASSERT(typeName.size(), return);
if (!m_bundleEffectTarget) if (!m_bundleEffectTarget)
m_bundleEffectTarget = active3DSceneNode(); m_bundleEffectTarget = Utils3D::active3DSceneNode(this);
QTC_ASSERT(m_bundleEffectTarget, return); QTC_ASSERT(m_bundleEffectTarget, return);
@@ -168,7 +169,7 @@ WidgetInfo ContentLibraryView::widgetInfo()
QTC_ASSERT(metaInfo.isValid(), return); QTC_ASSERT(metaInfo.isValid(), return);
if (!m_bundleEffectTarget) if (!m_bundleEffectTarget)
m_bundleEffectTarget = active3DSceneNode(); m_bundleEffectTarget = Utils3D::active3DSceneNode(this);
QTC_ASSERT(m_bundleEffectTarget, return); QTC_ASSERT(m_bundleEffectTarget, return);
@@ -226,7 +227,7 @@ void ContentLibraryView::modelAttached(Model *model)
m_widget->setHasQuick3DImport(m_hasQuick3DImport); m_widget->setHasQuick3DImport(m_hasQuick3DImport);
m_widget->setIsQt6Project(externalDependencies().isQt6Project()); m_widget->setIsQt6Project(externalDependencies().isQt6Project());
m_sceneId = model->active3DSceneId(); m_sceneId = Utils3D::active3DSceneId(model);
m_widget->setHasActive3DScene(m_sceneId != -1); m_widget->setHasActive3DScene(m_sceneId != -1);
m_widget->clearSearchFilter(); m_widget->clearSearchFilter();
@@ -322,7 +323,7 @@ void ContentLibraryView::customNotification(const AbstractView *view,
m_bundleEffectPos = data.size() == 1 ? data.first() : QVariant(); m_bundleEffectPos = data.size() == 1 ? data.first() : QVariant();
m_widget->effectsModel()->addInstance(m_draggedBundleEffect); m_widget->effectsModel()->addInstance(m_draggedBundleEffect);
m_bundleEffectTarget = nodeList.first() ? nodeList.first() : active3DSceneNode(); m_bundleEffectTarget = nodeList.first() ? nodeList.first() : Utils3D::active3DSceneNode(this);
} }
} }
@@ -341,6 +342,14 @@ void ContentLibraryView::nodeAboutToBeRemoved(const ModelNode &removedNode)
m_widget->setHasMaterialLibrary(false); m_widget->setHasMaterialLibrary(false);
} }
void ContentLibraryView::auxiliaryDataChanged(const ModelNode &,
AuxiliaryDataKeyView type,
const QVariant &data)
{
if (type == Utils3D::active3dSceneProperty)
active3DSceneChanged(data.toInt());
}
#ifdef QDS_USE_PROJECTSTORAGE #ifdef QDS_USE_PROJECTSTORAGE
void ContentLibraryView::applyBundleMaterialToDropTarget(const ModelNode &bundleMat, void ContentLibraryView::applyBundleMaterialToDropTarget(const ModelNode &bundleMat,
const TypeName &typeName) const TypeName &typeName)

View File

@@ -33,7 +33,6 @@ public:
void modelAttached(Model *model) override; void modelAttached(Model *model) override;
void modelAboutToBeDetached(Model *model) override; void modelAboutToBeDetached(Model *model) override;
void importsChanged(const Imports &addedImports, const Imports &removedImports) override; void importsChanged(const Imports &addedImports, const Imports &removedImports) override;
void active3DSceneChanged(qint32 sceneId) override;
void selectedNodesChanged(const QList<ModelNode> &selectedNodeList, void selectedNodesChanged(const QList<ModelNode> &selectedNodeList,
const QList<ModelNode> &lastSelectedNodeList) override; const QList<ModelNode> &lastSelectedNodeList) override;
void customNotification(const AbstractView *view, const QString &identifier, void customNotification(const AbstractView *view, const QString &identifier,
@@ -42,8 +41,12 @@ public:
const NodeAbstractProperty &oldPropertyParent, const NodeAbstractProperty &oldPropertyParent,
AbstractView::PropertyChangeFlags propertyChange) override; AbstractView::PropertyChangeFlags propertyChange) override;
void nodeAboutToBeRemoved(const ModelNode &removedNode) override; void nodeAboutToBeRemoved(const ModelNode &removedNode) override;
void auxiliaryDataChanged(const ModelNode &node,
AuxiliaryDataKeyView type,
const QVariant &data) override;
private: private:
void active3DSceneChanged(qint32 sceneId);
void updateBundleMaterialsImportedState(); void updateBundleMaterialsImportedState();
void updateBundleEffectsImportedState(); void updateBundleEffectsImportedState();
void updateBundlesQuick3DVersion(); void updateBundlesQuick3DVersion();

View File

@@ -12,6 +12,7 @@
#include "nodemetainfo.h" #include "nodemetainfo.h"
#include "qmlobjectnode.h" #include "qmlobjectnode.h"
#include "variantproperty.h" #include "variantproperty.h"
#include <utils3d.h>
#include <coreplugin/messagebox.h> #include <coreplugin/messagebox.h>
@@ -117,7 +118,7 @@ ModelNode CreateTexture::resolveSceneEnv(int sceneId)
if (selectedNode.metaInfo().isQtQuick3DSceneEnvironment()) { if (selectedNode.metaInfo().isQtQuick3DSceneEnvironment()) {
activeSceneEnv = selectedNode; activeSceneEnv = selectedNode;
} else if (sceneId != -1) { } else if (sceneId != -1) {
ModelNode activeScene = m_view->active3DSceneNode(); ModelNode activeScene = Utils3D::active3DSceneNode(m_view);
if (activeScene.isValid()) { if (activeScene.isValid()) {
QmlObjectNode view3D; QmlObjectNode view3D;
if (activeScene.metaInfo().isQtQuick3DView3D()) { if (activeScene.metaInfo().isQtQuick3DView3D()) {

View File

@@ -16,6 +16,7 @@
#include <nodemetainfo.h> #include <nodemetainfo.h>
#include <plaintexteditmodifier.h> #include <plaintexteditmodifier.h>
#include <rewriterview.h> #include <rewriterview.h>
#include <utils3d.h>
#include <variantproperty.h> #include <variantproperty.h>
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
@@ -84,7 +85,7 @@ ModelNode BakeLights::resolveView3dNode(AbstractView *view)
return {}; return {};
ModelNode activeView3D; ModelNode activeView3D;
ModelNode activeScene = view->active3DSceneNode(); ModelNode activeScene = Utils3D::active3DSceneNode(view);
if (activeScene.isValid()) { if (activeScene.isValid()) {
if (activeScene.metaInfo().isQtQuick3DView3D()) { if (activeScene.metaInfo().isQtQuick3DView3D()) {

View File

@@ -23,7 +23,9 @@
#include "seekerslider.h" #include "seekerslider.h"
#include "snapconfiguration.h" #include "snapconfiguration.h"
#include <auxiliarydataproperties.h>
#include <model/modelutils.h> #include <model/modelutils.h>
#include <utils3d.h>
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/messagebox.h> #include <coreplugin/messagebox.h>
@@ -143,7 +145,7 @@ void Edit3DView::updateActiveScene3D(const QVariantMap &sceneState)
if (sceneState.contains(sceneKey)) { if (sceneState.contains(sceneKey)) {
qint32 newActiveScene = sceneState[sceneKey].value<qint32>(); qint32 newActiveScene = sceneState[sceneKey].value<qint32>();
edit3DWidget()->canvas()->updateActiveScene(newActiveScene); edit3DWidget()->canvas()->updateActiveScene(newActiveScene);
model()->setActive3DSceneId(newActiveScene); setActive3DSceneId(newActiveScene);
updateAlignActionStates(); updateAlignActionStates();
} }
@@ -238,7 +240,7 @@ void Edit3DView::updateActiveScene3D(const QVariantMap &sceneState)
bool desiredSyncValue = false; bool desiredSyncValue = false;
if (sceneState.contains(syncEnvBgKey)) if (sceneState.contains(syncEnvBgKey))
desiredSyncValue = sceneState[syncEnvBgKey].toBool(); desiredSyncValue = sceneState[syncEnvBgKey].toBool();
ModelNode checkNode = active3DSceneNode(); ModelNode checkNode = Utils3D::active3DSceneNode(this);
const bool activeSceneValid = checkNode.isValid(); const bool activeSceneValid = checkNode.isValid();
while (checkNode.isValid()) { while (checkNode.isValid()) {
@@ -385,7 +387,7 @@ void Edit3DView::updateAlignActionStates()
{ {
bool enabled = false; bool enabled = false;
ModelNode activeScene = active3DSceneNode(); ModelNode activeScene = Utils3D::active3DSceneNode(this);
if (activeScene.isValid()) { if (activeScene.isValid()) {
const QList<ModelNode> nodes = activeScene.allSubModelNodes(); const QList<ModelNode> nodes = activeScene.allSubModelNodes();
enabled = ::Utils::anyOf(nodes, [](const ModelNode &node) { enabled = ::Utils::anyOf(nodes, [](const ModelNode &node) {
@@ -397,6 +399,11 @@ void Edit3DView::updateAlignActionStates()
m_alignViewAction->action()->setEnabled(enabled); m_alignViewAction->action()->setEnabled(enabled);
} }
void Edit3DView::setActive3DSceneId(qint32 sceneId)
{
rootModelNode().setAuxiliaryData(Utils3D::active3dSceneProperty, sceneId);
}
void Edit3DView::modelAboutToBeDetached(Model *model) void Edit3DView::modelAboutToBeDetached(Model *model)
{ {
m_isBakingLightsSupported = false; m_isBakingLightsSupported = false;

View File

@@ -111,6 +111,7 @@ private:
void handleEntriesChanged(); void handleEntriesChanged();
void showMaterialPropertiesView(); void showMaterialPropertiesView();
void updateAlignActionStates(); void updateAlignActionStates();
void setActive3DSceneId(qint32 sceneId);
void createSelectBackgroundColorAction(QAction *syncEnvBackgroundAction); void createSelectBackgroundColorAction(QAction *syncEnvBackgroundAction);
void createGridColorSelectionAction(); void createGridColorSelectionAction();

View File

@@ -19,6 +19,7 @@
#include "qmleditormenu.h" #include "qmleditormenu.h"
#include "qmlvisualnode.h" #include "qmlvisualnode.h"
#include "viewmanager.h" #include "viewmanager.h"
#include <utils3d.h>
#include <auxiliarydataproperties.h> #include <auxiliarydataproperties.h>
#include <designeractionmanager.h> #include <designeractionmanager.h>
@@ -479,10 +480,7 @@ void Edit3DWidget::onCreateAction(QAction *action)
if (!m_view->model()->hasImport(import, true, true)) if (!m_view->model()->hasImport(import, true, true))
m_view->model()->changeImports({import}, {}); m_view->model()->changeImports({import}, {});
int activeScene = -1; int activeScene = Utils3D::active3DSceneId(m_view->model());
auto data = m_view->rootModelNode().auxiliaryData(active3dSceneProperty);
if (data)
activeScene = data->toInt();
auto modelNode = QmlVisualNode::createQml3DNode(m_view, entry, auto modelNode = QmlVisualNode::createQml3DNode(m_view, entry,
activeScene, m_contextMenuPos3d).modelNode(); activeScene, m_contextMenuPos3d).modelNode();
QTC_ASSERT(modelNode.isValid(), return); QTC_ASSERT(modelNode.isValid(), return);
@@ -688,7 +686,7 @@ void Edit3DWidget::dragEnterEvent(QDragEnterEvent *dragEnterEvent)
|| dragEnterEvent->mimeData()->hasFormat(Constants::MIME_TYPE_BUNDLE_MATERIAL) || dragEnterEvent->mimeData()->hasFormat(Constants::MIME_TYPE_BUNDLE_MATERIAL)
|| dragEnterEvent->mimeData()->hasFormat(Constants::MIME_TYPE_BUNDLE_EFFECT) || dragEnterEvent->mimeData()->hasFormat(Constants::MIME_TYPE_BUNDLE_EFFECT)
|| dragEnterEvent->mimeData()->hasFormat(Constants::MIME_TYPE_TEXTURE)) { || dragEnterEvent->mimeData()->hasFormat(Constants::MIME_TYPE_TEXTURE)) {
if (m_view->active3DSceneNode().isValid()) if (Utils3D::active3DSceneNode(m_view).isValid())
dragEnterEvent->acceptProposedAction(); dragEnterEvent->acceptProposedAction();
} else if (dragEnterEvent->mimeData()->hasFormat(Constants::MIME_TYPE_ITEM_LIBRARY_INFO)) { } else if (dragEnterEvent->mimeData()->hasFormat(Constants::MIME_TYPE_ITEM_LIBRARY_INFO)) {
QByteArray data = dragEnterEvent->mimeData()->data(Constants::MIME_TYPE_ITEM_LIBRARY_INFO); QByteArray data = dragEnterEvent->mimeData()->data(Constants::MIME_TYPE_ITEM_LIBRARY_INFO);

View File

@@ -15,6 +15,7 @@
#include <nodeinstanceview.h> #include <nodeinstanceview.h>
#include <nodelistproperty.h> #include <nodelistproperty.h>
#include <rewritingexception.h> #include <rewritingexception.h>
#include <utils3d.h>
#include <variantproperty.h> #include <variantproperty.h>
#include <viewmanager.h> #include <viewmanager.h>
#include <qmldesignerplugin.h> #include <qmldesignerplugin.h>
@@ -232,16 +233,15 @@ void DesignDocument::moveNodesToPosition(const QList<ModelNode> &nodes, const st
}); });
if (all3DNodes) { if (all3DNodes) {
auto data = rootModelNode().auxiliaryData(active3dSceneProperty); int activeSceneId = Utils3D::active3DSceneId(m_documentModel.get());
if (data) {
if (int activeSceneId = data->toInt(); activeSceneId != -1) { if (activeSceneId != -1) {
NodeListProperty sceneNodeProperty = QmlVisualNode::findSceneNodeProperty( NodeListProperty sceneNodeProperty = QmlVisualNode::findSceneNodeProperty(
rootModelNode().view(), activeSceneId); rootModelNode().view(), activeSceneId);
targetNode = sceneNodeProperty.parentModelNode(); targetNode = sceneNodeProperty.parentModelNode();
} }
} }
} }
}
if (!targetNode.isValid()) if (!targetNode.isValid())
targetNode = view.rootModelNode(); targetNode = view.rootModelNode();

View File

@@ -16,6 +16,7 @@
#include "qmldesignerconstants.h" #include "qmldesignerconstants.h"
#include "qmlobjectnode.h" #include "qmlobjectnode.h"
#include "variantproperty.h" #include "variantproperty.h"
#include <utils3d.h>
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
@@ -240,7 +241,7 @@ void MaterialBrowserView::modelAttached(Model *model)
loadPropertyGroups(); // Needs the delay because it uses metaInfo loadPropertyGroups(); // Needs the delay because it uses metaInfo
}); });
m_sceneId = model->active3DSceneId(); m_sceneId = Utils3D::active3DSceneId(model);
} }
void MaterialBrowserView::refreshModel(bool updateImages) void MaterialBrowserView::refreshModel(bool updateImages)
@@ -585,6 +586,14 @@ void MaterialBrowserView::instancePropertyChanged(const QList<QPair<ModelNode, P
} }
} }
void MaterialBrowserView::auxiliaryDataChanged(const ModelNode &,
AuxiliaryDataKeyView type,
const QVariant &data)
{
if (type == Utils3D::active3dSceneProperty)
active3DSceneChanged(data.toInt());
}
void MaterialBrowserView::applyTextureToModel3D(const QmlObjectNode &model3D, const ModelNode &texture) void MaterialBrowserView::applyTextureToModel3D(const QmlObjectNode &model3D, const ModelNode &texture)
{ {
if (!texture.isValid() && m_appliedTexturePath.isEmpty()) if (!texture.isValid() && m_appliedTexturePath.isEmpty())

View File

@@ -49,7 +49,9 @@ public:
const QList<ModelNode> &nodeList, const QList<QVariant> &data) override; const QList<ModelNode> &nodeList, const QList<QVariant> &data) override;
void instancesCompleted(const QVector<ModelNode> &completedNodeList) override; void instancesCompleted(const QVector<ModelNode> &completedNodeList) override;
void instancePropertyChanged(const QList<QPair<ModelNode, PropertyName> > &propertyList) override; void instancePropertyChanged(const QList<QPair<ModelNode, PropertyName> > &propertyList) override;
void active3DSceneChanged(qint32 sceneId) override; void auxiliaryDataChanged(const ModelNode &node,
AuxiliaryDataKeyView type,
const QVariant &data) override;
void currentStateChanged(const ModelNode &node) override; void currentStateChanged(const ModelNode &node) override;
void applyTextureToModel3D(const QmlObjectNode &model3D, const ModelNode &texture = {}); void applyTextureToModel3D(const QmlObjectNode &model3D, const ModelNode &texture = {});
@@ -65,6 +67,7 @@ protected:
bool eventFilter(QObject *obj, QEvent *event) override; bool eventFilter(QObject *obj, QEvent *event) override;
private: private:
void active3DSceneChanged(qint32 sceneId);
void refreshModel(bool updateImages); void refreshModel(bool updateImages);
void updateMaterialsPreview(); void updateMaterialsPreview();
bool isMaterial(const ModelNode &node) const; bool isMaterial(const ModelNode &node) const;

View File

@@ -223,8 +223,6 @@ public:
virtual void view3DAction(View3DActionType type, const QVariant &value); virtual void view3DAction(View3DActionType type, const QVariant &value);
virtual void active3DSceneChanged(qint32 sceneId);
virtual void dragStarted(QMimeData *mimeData); virtual void dragStarted(QMimeData *mimeData);
virtual void dragEnded(); virtual void dragEnded();
@@ -233,7 +231,6 @@ public:
void ensureMaterialLibraryNode(); void ensureMaterialLibraryNode();
ModelNode materialLibraryNode(); ModelNode materialLibraryNode();
bool isPartOfMaterialLibrary(const ModelNode &node); bool isPartOfMaterialLibrary(const ModelNode &node);
ModelNode active3DSceneNode();
ModelNode getTextureDefaultInstance(const QString &source); ModelNode getTextureDefaultInstance(const QString &source);
const NodeInstanceView *nodeInstanceView() const; const NodeInstanceView *nodeInstanceView() const;

View File

@@ -95,8 +95,6 @@ inline constexpr AuxiliaryDataKeyDefaultValue insightCategoriesProperty{Auxiliar
"insightCategories", "insightCategories",
{}}; {}};
inline constexpr AuxiliaryDataKeyView uuidProperty{AuxiliaryDataType::Document, "uuid"}; inline constexpr AuxiliaryDataKeyView uuidProperty{AuxiliaryDataType::Document, "uuid"};
inline constexpr AuxiliaryDataKeyView active3dSceneProperty{AuxiliaryDataType::Temporary,
"active3dScene"};
inline constexpr AuxiliaryDataKeyView tmpProperty{AuxiliaryDataType::Temporary, "tmp"}; inline constexpr AuxiliaryDataKeyView tmpProperty{AuxiliaryDataType::Temporary, "tmp"};
inline constexpr AuxiliaryDataKeyView recordProperty{AuxiliaryDataType::Temporary, "Record"}; inline constexpr AuxiliaryDataKeyView recordProperty{AuxiliaryDataType::Temporary, "Record"};
inline constexpr AuxiliaryDataKeyView transitionDurationProperty{AuxiliaryDataType::Document, inline constexpr AuxiliaryDataKeyView transitionDurationProperty{AuxiliaryDataType::Document,

View File

@@ -239,9 +239,6 @@ public:
std::optional<std::function<bool(const QString &)>> isDuplicate = {}) const; std::optional<std::function<bool(const QString &)>> isDuplicate = {}) const;
QString generateIdFromName(const QString &name, const QString &fallbackId = "element") const; QString generateIdFromName(const QString &name, const QString &fallbackId = "element") const;
void setActive3DSceneId(qint32 sceneId);
qint32 active3DSceneId() const;
void startDrag(QMimeData *mimeData, const QPixmap &icon); void startDrag(QMimeData *mimeData, const QPixmap &icon);
void endDrag(); void endDrag();

View File

@@ -373,8 +373,6 @@ void AbstractView::modelNodePreviewPixmapChanged(const ModelNode &/*node*/, cons
void AbstractView::view3DAction(View3DActionType, const QVariant &) {} void AbstractView::view3DAction(View3DActionType, const QVariant &) {}
void AbstractView::active3DSceneChanged(qint32 /*sceneId*/) {}
void AbstractView::dragStarted(QMimeData * /*mimeData*/) {} void AbstractView::dragStarted(QMimeData * /*mimeData*/) {}
void AbstractView::dragEnded() {} void AbstractView::dragEnded() {}
@@ -837,19 +835,6 @@ bool AbstractView::isPartOfMaterialLibrary(const ModelNode &node)
|| (node.hasParentProperty() && node.parentProperty().parentModelNode() == matLib)); || (node.hasParentProperty() && node.parentProperty().parentModelNode() == matLib));
} }
ModelNode AbstractView::active3DSceneNode()
{
auto activeSceneAux = rootModelNode().auxiliaryData(active3dSceneProperty);
if (activeSceneAux) {
int activeScene = activeSceneAux->toInt();
if (hasModelNodeForInternalId(activeScene))
return modelNodeForInternalId(activeScene);
}
return {};
}
ModelNode AbstractView::getTextureDefaultInstance(const QString &source) ModelNode AbstractView::getTextureDefaultInstance(const QString &source)
{ {
ModelNode matLib = materialLibraryNode(); ModelNode matLib = materialLibraryNode();

View File

@@ -733,11 +733,6 @@ void ModelPrivate::notifyView3DAction(View3DActionType type, const QVariant &val
notifyNormalViewsLast([&](AbstractView *view) { view->view3DAction(type, value); }); notifyNormalViewsLast([&](AbstractView *view) { view->view3DAction(type, value); });
} }
void ModelPrivate::notifyActive3DSceneIdChanged(qint32 sceneId)
{
notifyInstanceChanges([&](AbstractView *view) { view->active3DSceneChanged(sceneId); });
}
void ModelPrivate::notifyDragStarted(QMimeData *mimeData) void ModelPrivate::notifyDragStarted(QMimeData *mimeData)
{ {
notifyInstanceChanges([&](AbstractView *view) { view->dragStarted(mimeData); }); notifyInstanceChanges([&](AbstractView *view) { view->dragStarted(mimeData); });
@@ -1903,24 +1898,6 @@ QString Model::generateIdFromName(const QString &name, const QString &fallbackId
return newId; return newId;
} }
void Model::setActive3DSceneId(qint32 sceneId)
{
auto activeSceneAux = d->rootNode()->auxiliaryData(active3dSceneProperty);
if (activeSceneAux && activeSceneAux->toInt() == sceneId)
return;
d->rootNode()->setAuxiliaryData(active3dSceneProperty, sceneId);
d->notifyActive3DSceneIdChanged(sceneId);
}
qint32 Model::active3DSceneId() const
{
auto sceneId = d->rootNode()->auxiliaryData(active3dSceneProperty);
if (sceneId)
return sceneId->toInt();
return -1;
}
void Model::startDrag(QMimeData *mimeData, const QPixmap &icon) void Model::startDrag(QMimeData *mimeData, const QPixmap &icon)
{ {
d->notifyDragStarted(mimeData); d->notifyDragStarted(mimeData);