From 3897d917e21a45490bfdf2fddc322507811576a0 Mon Sep 17 00:00:00 2001 From: Ali Kianian Date: Tue, 1 Nov 2022 11:51:25 +0200 Subject: [PATCH] QmlDesigner: Add camera-view align actions to 3d context menu The following items are added to the context menu of the 3d editor: 1. Align Camera to View 2. Align View to Camera Task-number: QDS-8063 Change-Id: I7b5b966aba2b5e96b7cd4d8a88cf4e7db8cdc0ac Reviewed-by: Mahmoud Badri Reviewed-by: Reviewed-by: Samuel Ghinet Reviewed-by: Miikka Heikkinen --- .../components/edit3d/edit3dwidget.cpp | 19 ++++++++++++++++--- .../components/edit3d/edit3dwidget.h | 2 ++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp b/src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp index 52518a28499..25d91fab4fc 100644 --- a/src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp +++ b/src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp @@ -188,6 +188,16 @@ void Edit3DWidget::createContextMenu() }); + m_contextMenu->addSeparator(); + + m_alignCameraAction = m_contextMenu->addAction(tr("Align Camera to View"), [&] { + view()->emitView3DAction(View3DActionType::AlignCamerasToView, true); + }); + + m_alignViewAction = m_contextMenu->addAction(tr("Align View to Camera"), [&] { + view()->emitView3DAction(View3DActionType::AlignViewToCamera, true); + }); + m_contextMenu->addSeparator(); } @@ -312,11 +322,14 @@ void Edit3DWidget::showContextMenu(const QPoint &pos, const ModelNode &modelNode const bool isValid = modelNode.isValid(); const bool isModel = modelNode.metaInfo().isQtQuick3DModel(); - const bool isValidNotRoot = isValid && !modelNode.isRootNode(); + const bool isNotRoot = isValid && !modelNode.isRootNode(); + const bool isCamera = isValid && modelNode.metaInfo().isQtQuick3DCamera(); m_editMaterialAction->setEnabled(isModel); - m_deleteAction->setEnabled(isValidNotRoot); - m_copyAction->setEnabled(isValidNotRoot); + m_deleteAction->setEnabled(isNotRoot); + m_copyAction->setEnabled(isNotRoot); + m_alignCameraAction->setEnabled(isCamera); + m_alignViewAction->setEnabled(isCamera); m_contextMenu->popup(mapToGlobal(pos)); } diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dwidget.h b/src/plugins/qmldesigner/components/edit3d/edit3dwidget.h index 59493281c1e..3ce3e1a9f37 100644 --- a/src/plugins/qmldesigner/components/edit3d/edit3dwidget.h +++ b/src/plugins/qmldesigner/components/edit3d/edit3dwidget.h @@ -63,6 +63,8 @@ private: QPointer m_editMaterialAction; QPointer m_deleteAction; QPointer m_copyAction; + QPointer m_alignCameraAction; + QPointer m_alignViewAction; QPointer m_createSubMenu; ModelNode m_contextMenuTarget; QVector3D m_contextMenuPos3d;