diff options
author | Mahmoud Badri <mahmoud.badri@qt.io> | 2019-05-24 15:43:14 +0300 |
---|---|---|
committer | Mahmoud Badri <mahmoud.badri@qt.io> | 2019-05-24 19:58:08 +0300 |
commit | f6ae6e7c14b67657d8f4bd5961aa7bc47eb57605 (patch) | |
tree | a1fcb74d7dfccd1f17a75b91e38565eeb1d1b7fe /src/Authoring/Studio | |
parent | 243065d9203e58991ed3e7b1ff6d3e6b4d2d3281 (diff) |
Correct RowTree::rowType() for materials
RowTree::rowType() retuned OBJTYPE_MATERIAL for all types of materials.
now it is fixed. Also code that uses it is updated. Additionally it is
renamed to objectType() which is more matching with its purpose.
Change-Id: Idaccc206ab053dbfad11a06469d60bd3adc73ad7
Reviewed-by: Janne Kangas <janne.kangas@qt.io>
Reviewed-by: Jari Karppinen <jari.karppinen@qt.io>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Reviewed-by: Antti Määttä <antti.maatta@qt.io>
Diffstat (limited to 'src/Authoring/Studio')
9 files changed, 68 insertions, 97 deletions
diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/MaterialTimelineItemBinding.cpp b/src/Authoring/Studio/Palettes/Timeline/Bindings/MaterialTimelineItemBinding.cpp index d34faf1b..e3483969 100644 --- a/src/Authoring/Studio/Palettes/Timeline/Bindings/MaterialTimelineItemBinding.cpp +++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/MaterialTimelineItemBinding.cpp @@ -81,11 +81,6 @@ ITimelineTimebar *CMaterialTimelineItemBinding::GetTimebar() return new CEmptyTimelineTimebar(); } -EStudioObjectType CMaterialTimelineItemBinding::GetObjectType() const -{ - return OBJTYPE_MATERIAL; -} - bool CMaterialTimelineItemBinding::ShowToggleControls() const { // Materials have no toggle controls, by design diff --git a/src/Authoring/Studio/Palettes/Timeline/Bindings/MaterialTimelineItemBinding.h b/src/Authoring/Studio/Palettes/Timeline/Bindings/MaterialTimelineItemBinding.h index 9f5bebdd..8e188a52 100644 --- a/src/Authoring/Studio/Palettes/Timeline/Bindings/MaterialTimelineItemBinding.h +++ b/src/Authoring/Studio/Palettes/Timeline/Bindings/MaterialTimelineItemBinding.h @@ -63,7 +63,6 @@ public: // Construction public: // Qt3DSDMTimelineItemBinding ITimelineTimebar *GetTimebar() override; - EStudioObjectType GetObjectType() const override; bool ShowToggleControls() const override; // Hierarchy long GetChildrenCount() override; diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/RowManager.cpp b/src/Authoring/Studio/Palettes/TimelineGraphicsView/RowManager.cpp index 9b52667b..50eff996 100644 --- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/RowManager.cpp +++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/RowManager.cpp @@ -224,7 +224,7 @@ void RowManager::selectRow(RowTree *row, bool multiSelect) if (multiSelect && m_selectedRows.size() > 0) { // Do not allow singular object types into multiselection - if ((row->rowType() | m_selectedRows[0]->rowType()) & OBJTYPE_IS_SINGULAR) + if ((row->objectType() | m_selectedRows[0]->objectType()) & OBJTYPE_IS_SINGULAR) return; } @@ -275,13 +275,15 @@ void RowManager::updateRulerDuration(bool updateMaxDuration) long maxDuration = 0; // for setting correct size for the view so scrollbars appear correctly if (m_layoutTree->count() > 1) { auto rootRow = static_cast<RowTree *>(m_layoutTree->itemAt(1)->graphicsItem()); - bool isComponent = rootRow->rowType() == OBJTYPE_COMPONENT; + bool isComponent = rootRow->objectType() == OBJTYPE_COMPONENT; for (int i = 1; i < m_layoutTree->count(); ++i) { RowTree *row_i = static_cast<RowTree *>(m_layoutTree->itemAt(i)->graphicsItem()); long dur_i = row_i->rowTimeline()->getEndTime(); - if (((isComponent && i != 1) || row_i->rowType() == OBJTYPE_LAYER) && dur_i > duration) + if (((isComponent && i != 1) || row_i->objectType() == OBJTYPE_LAYER) + && dur_i > duration) { duration = dur_i; + } if (dur_i > maxDuration) maxDuration = dur_i; @@ -316,7 +318,7 @@ void RowManager::updateRowFilterRecursive(RowTree *row) void RowManager::deleteRow(RowTree *row) { - if (row && row->rowType() != OBJTYPE_SCENE) { + if (row && row->objectType() != OBJTYPE_SCENE) { if (row->parentRow()) row->parentRow()->removeChild(row); @@ -379,7 +381,7 @@ bool RowManager::isComponentRoot() const { if (m_layoutTree->count() > 1) { RowTree *root = static_cast<RowTree *>(m_layoutTree->itemAt(1)->graphicsItem()); - return root->rowType() == OBJTYPE_COMPONENT; + return root->objectType() == OBJTYPE_COMPONENT; } return false; } diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/RowMover.cpp b/src/Authoring/Studio/Palettes/TimelineGraphicsView/RowMover.cpp index 4641753b..3e96f2dc 100644 --- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/RowMover.cpp +++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/RowMover.cpp @@ -182,7 +182,7 @@ bool RowMover::isNextSiblingRow(RowTree *rowMain, RowTree *rowSibling) const bool RowMover::sourceRowsHasMaster() const { for (auto sourceRow : qAsConst(m_sourceRows)) { - if (sourceRow->isMaster() && sourceRow->rowType() != OBJTYPE_LAYER) + if (sourceRow->isMaster() && sourceRow->objectType() != OBJTYPE_LAYER) return true; } @@ -208,8 +208,7 @@ void RowMover::updateTargetRow(const QPointF &scenePos, EStudioObjectType rowTyp bool firstTry) { // DnD a presentation / Qml stream from the project panel (to set it as a subpresentation) - if (rowType == OBJTYPE_PRESENTATION || rowType == OBJTYPE_QML_STREAM - || rowType == OBJTYPE_MATERIALDATA) { + if (rowType & (OBJTYPE_PRESENTATION | OBJTYPE_QML_STREAM | OBJTYPE_MATERIALDATA)) { if (!m_insertionTarget.isNull()) m_insertionTarget->setDnDState(RowTree::DnDState::None, RowTree::DnDState::SP_TARGET); @@ -221,16 +220,11 @@ void RowMover::updateTargetRow(const QPointF &scenePos, EStudioObjectType rowTyp m_insertType = Q3DStudio::DocumentEditorInsertType::LastChild; if (rowType == OBJTYPE_MATERIALDATA) { - if (rowAtMouse->rowType() == OBJTYPE_MATERIAL - || rowAtMouse->rowType() == OBJTYPE_CUSTOMMATERIAL - || rowAtMouse->rowType() == OBJTYPE_REFERENCEDMATERIAL) { + if (rowAtMouse->objectType() & OBJTYPE_IS_MATERIAL) m_insertionTarget->setDnDState(RowTree::DnDState::SP_TARGET); - } } else { - if ((rowAtMouse->rowType() == OBJTYPE_LAYER - || rowAtMouse->rowType() == OBJTYPE_MATERIAL - || rowAtMouse->rowType() == OBJTYPE_IMAGE) - && !rowAtMouse->isDefaultMaterial()) { + if (rowAtMouse->objectType() & (OBJTYPE_LAYER | OBJTYPE_IS_MATERIAL | OBJTYPE_IMAGE) + && !rowAtMouse->isDefaultMaterial()) { m_insertionTarget->setDnDState(RowTree::DnDState::SP_TARGET); } } @@ -249,7 +243,7 @@ void RowMover::updateTargetRow(const QPointF &scenePos, EStudioObjectType rowTyp if (rowAtMouse) { double y = rowAtMouse->mapFromScene(scenePos).y(); if (y > TimelineConstants::ROW_H * .25 && y < TimelineConstants::ROW_H * .75) { - if (rowAtMouse->rowType() & (OBJTYPE_LAYER | OBJTYPE_MATERIAL | OBJTYPE_IMAGE) + if (rowAtMouse->objectType() & (OBJTYPE_LAYER | OBJTYPE_IS_MATERIAL | OBJTYPE_IMAGE) && !rowAtMouse->isDefaultMaterial()) { m_rowAutoExpand = nullptr; m_autoExpandTimer.stop(); @@ -267,7 +261,7 @@ void RowMover::updateTargetRow(const QPointF &scenePos, EStudioObjectType rowTyp EStudioObjectType theRowType = rowType; if (theRowType == OBJTYPE_UNKNOWN && m_sourceRows.size() == 1) - theRowType = m_sourceRows[0]->rowType(); + theRowType = m_sourceRows[0]->objectType(); // row will be inserted just below rowInsert1 and just above rowInsert2 (if it exists) RowTree *rowInsert1 = m_scene->rowManager() @@ -283,8 +277,7 @@ void RowMover::updateTargetRow(const QPointF &scenePos, EStudioObjectType rowTyp ->getRowAtPos(scenePos + QPointF(0, TimelineConstants::ROW_H)); } - bool valid = rowInsert1 && theRowType != OBJTYPE_MATERIAL - && theRowType != OBJTYPE_CUSTOMMATERIAL; + bool valid = rowInsert1 != nullptr; if (valid) { // if dragging over a property or a parent of a property, move to the first row @@ -362,7 +355,7 @@ void RowMover::updateTargetRow(const QPointF &scenePos, EStudioObjectType rowTyp if (depth < depthMin || depth > depthMax || (theRowType != OBJTYPE_UNKNOWN && !CStudioObjectTypes::AcceptableParent(theRowType, - m_insertionParent->rowType())) + m_insertionParent->objectType())) || m_insertionParent->locked()) { valid = false; } @@ -370,8 +363,8 @@ void RowMover::updateTargetRow(const QPointF &scenePos, EStudioObjectType rowTyp for (auto sourceRow : qAsConst(m_sourceRows)) { if (m_insertionParent == sourceRow || m_insertionParent->isDecendentOf(sourceRow) - || !CStudioObjectTypes::AcceptableParent(sourceRow->rowType(), - m_insertionParent->rowType())) { + || !CStudioObjectTypes::AcceptableParent(sourceRow->objectType(), + m_insertionParent->objectType())) { // prevent insertion under itself, or under unacceptable parent valid = false; break; diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineGraphicsScene.cpp b/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineGraphicsScene.cpp index d7b2d091..b4a52760 100644 --- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineGraphicsScene.cpp +++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineGraphicsScene.cpp @@ -866,8 +866,8 @@ void TimelineGraphicsScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *even if (treeLabelItem->parentRow()->isProperty()) { treeLabelItem->parentRow()->togglePropertyExpanded(); } else if (!treeLabelItem->isLocked() - && treeLabelItem->parentRow()->rowType() != OBJTYPE_SCENE - && treeLabelItem->parentRow()->rowType() != OBJTYPE_IMAGE) { + && treeLabelItem->parentRow()->objectType() != OBJTYPE_SCENE + && treeLabelItem->parentRow()->objectType() != OBJTYPE_IMAGE) { int instance = treeLabelItem->parentRow()->instance(); const auto bridge = g_StudioApp.GetCore()->GetDoc()->GetStudioSystem() ->GetClientDataModelBridge(); diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTimeline.cpp b/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTimeline.cpp index 67b4cea8..25b66911 100644 --- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTimeline.cpp +++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTimeline.cpp @@ -642,7 +642,7 @@ void RowTimeline::moveDurationBy(double dx) m_startX += dx; m_endX += dx; - if (!m_rowTree->parentRow() || m_rowTree->rowType() == OBJTYPE_LAYER + if (!m_rowTree->parentRow() || m_rowTree->objectType() == OBJTYPE_LAYER || m_rowTree->hasComponentAncestor()) { m_minStartX = m_startX; m_maxEndX = m_endX; @@ -682,7 +682,7 @@ void RowTimeline::moveDurationTo(double newX) m_startX = newX; m_endX = m_startX + durationX; - if (!m_rowTree->parentRow() || m_rowTree->rowType() == OBJTYPE_LAYER + if (!m_rowTree->parentRow() || m_rowTree->objectType() == OBJTYPE_LAYER || m_rowTree->hasComponentAncestor()) { m_minStartX = m_startX; m_maxEndX = m_endX; @@ -756,7 +756,7 @@ void RowTimeline::setStartX(double startX) m_startX = startX; m_startTime = m_rowTree->m_scene->ruler()->distanceToTime(startX); - if (!m_rowTree->parentRow() || m_rowTree->parentRow()->rowType() == OBJTYPE_SCENE + if (!m_rowTree->parentRow() || m_rowTree->parentRow()->objectType() == OBJTYPE_SCENE || m_rowTree->hasComponentAncestor()) { m_minStartX = 0; } @@ -775,7 +775,7 @@ void RowTimeline::setEndX(double endX) m_endX = endX; m_endTime = m_rowTree->m_scene->ruler()->distanceToTime(endX); - if (!m_rowTree->parentRow() || m_rowTree->parentRow()->rowType() == OBJTYPE_SCENE + if (!m_rowTree->parentRow() || m_rowTree->parentRow()->objectType() == OBJTYPE_SCENE || m_rowTree->hasComponentAncestor()) { m_maxEndX = 999999; } @@ -828,9 +828,9 @@ void RowTimeline::updateChildrenEndRecursive() void RowTimeline::updateChildrenMinStartXRecursive(RowTree *rowTree) { - if (m_rowTree->rowType() != OBJTYPE_SCENE && !rowTree->empty()) { + if (m_rowTree->objectType() != OBJTYPE_SCENE && !rowTree->empty()) { const auto childRows = rowTree->childRows(); - bool isComponentChild = m_rowTree->rowType() == OBJTYPE_COMPONENT + bool isComponentChild = m_rowTree->objectType() == OBJTYPE_COMPONENT || m_rowTree->hasComponentAncestor(); for (auto child : childRows) { if (isComponentChild) { @@ -848,9 +848,9 @@ void RowTimeline::updateChildrenMinStartXRecursive(RowTree *rowTree) void RowTimeline::updateChildrenMaxEndXRecursive(RowTree *rowTree) { - if (m_rowTree->rowType() != OBJTYPE_SCENE && !rowTree->empty()) { + if (m_rowTree->objectType() != OBJTYPE_SCENE && !rowTree->empty()) { const auto childRows = rowTree->childRows(); - bool isComponentChild = m_rowTree->rowType() == OBJTYPE_COMPONENT + bool isComponentChild = m_rowTree->objectType() == OBJTYPE_COMPONENT || m_rowTree->hasComponentAncestor(); for (auto child : childRows) { if (isComponentChild) { @@ -896,7 +896,7 @@ void RowTimeline::setStartTime(long startTime) m_startTime = startTime; m_startX = m_rowTree->m_scene->ruler()->timeToDistance(startTime); - if (!m_rowTree->parentRow() || m_rowTree->parentRow()->rowType() == OBJTYPE_SCENE + if (!m_rowTree->parentRow() || m_rowTree->parentRow()->objectType() == OBJTYPE_SCENE || m_rowTree->hasComponentAncestor()) { m_minStartX = 0; } @@ -911,7 +911,7 @@ void RowTimeline::setEndTime(long endTime) m_endTime = endTime; m_endX = m_rowTree->m_scene->ruler()->timeToDistance(endTime); - if (!m_rowTree->parentRow() || m_rowTree->parentRow()->rowType() == OBJTYPE_SCENE + if (!m_rowTree->parentRow() || m_rowTree->parentRow()->objectType() == OBJTYPE_SCENE || m_rowTree->hasComponentAncestor()) { m_maxEndX = 999999; } diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTree.cpp b/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTree.cpp index f92fc58d..e15258cd 100644 --- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTree.cpp +++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTree.cpp @@ -54,11 +54,11 @@ #include <QtWidgets/qgraphicssceneevent.h> // object row constructor -RowTree::RowTree(TimelineGraphicsScene *timelineScene, EStudioObjectType rowType, +RowTree::RowTree(TimelineGraphicsScene *timelineScene, EStudioObjectType objType, const QString &label) : m_rowTimeline(new RowTimeline()) , m_scene(timelineScene) - , m_rowType(rowType) + , m_objectType(objType) , m_label(label) { CDoc *doc = g_StudioApp.GetCore()->GetDoc(); @@ -428,7 +428,7 @@ void RowTree::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, Q pixRowType = hiResIcons ? (m_locked ? pixPropertyDisabled2x : pixPropertyNormal2x) : (m_locked ? pixPropertyDisabled : pixPropertyNormal); } else { - switch (m_rowType) { + switch (m_objectType) { case OBJTYPE_SCENE: pixRowType = hiResIcons ? (m_locked ? pixSceneDisabled2x : pixSceneNormal2x) : (m_locked ? pixSceneDisabled : pixSceneNormal); @@ -466,6 +466,8 @@ void RowTree::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, Q : (m_locked ? pixComponentDisabled : pixComponentNormal); break; case OBJTYPE_MATERIAL: + case OBJTYPE_CUSTOMMATERIAL: + case OBJTYPE_REFERENCEDMATERIAL: pixRowType = hiResIcons ? (m_locked ? pixMaterialDisabled2x : pixMaterialNormal2x) : (m_locked ? pixMaterialDisabled : pixMaterialNormal); break; @@ -509,7 +511,7 @@ void RowTree::setBinding(ITimelineItemBinding *binding) if (m_expandState == ExpandState::Unknown) { // Everything but scene/component is initially collapsed and hidden - if (m_rowType == OBJTYPE_SCENE || m_rowType == OBJTYPE_COMPONENT) + if (m_objectType == OBJTYPE_SCENE || m_objectType == OBJTYPE_COMPONENT) m_expandState = ExpandState::Expanded; else m_expandState = ExpandState::HiddenCollapsed; @@ -597,9 +599,9 @@ int RowTree::depth() const return m_depth; } -EStudioObjectType RowTree::rowType() const +EStudioObjectType RowTree::objectType() const { - return m_rowType; + return m_objectType; } QString RowTree::propertyType() const @@ -668,7 +670,7 @@ bool RowTree::isInVariantsFilter() const { const QString filterStr = g_StudioApp.m_pMainWnd->getVariantsFilterStr(); - if (m_rowType & ~OBJTYPE_IS_VARIANT || filterStr.isEmpty() + if (m_objectType & ~OBJTYPE_IS_VARIANT || filterStr.isEmpty() || !m_scene->widgetTimeline()->toolbar()->isVariantsFilterOn()) { return true; } @@ -856,9 +858,7 @@ int RowTree::removeChildFromLayout(RowTree *child) const bool RowTree::draggable() const { return !m_locked && !isProperty() - && m_rowType != OBJTYPE_IMAGE - && m_rowType != OBJTYPE_SCENE - && m_rowType != OBJTYPE_MATERIAL; + && m_objectType & ~(OBJTYPE_IMAGE | OBJTYPE_SCENE | OBJTYPE_IS_MATERIAL); } void RowTree::updateDepthRecursive() @@ -1157,13 +1157,7 @@ void RowTree::setActionStates(ActionStates states) bool RowTree::isContainer() const { - return !m_isProperty - && m_rowType != OBJTYPE_ALIAS - && m_rowType != OBJTYPE_MATERIAL - && m_rowType != OBJTYPE_IMAGE - && m_rowType != OBJTYPE_TEXT - && m_rowType != OBJTYPE_BEHAVIOR - && m_rowType != OBJTYPE_EFFECT; + return !m_isProperty && m_objectType & OBJTYPE_IS_CONTAINER; } bool RowTree::isProperty() const @@ -1184,17 +1178,17 @@ RowTree *RowTree::getPropertyRow(const QString &type) const bool RowTree::isPropertyOrMaterial() const { - return m_isProperty || m_rowType == OBJTYPE_MATERIAL || m_rowType == OBJTYPE_IMAGE; + return m_isProperty || m_objectType & (OBJTYPE_IS_MATERIAL | OBJTYPE_IMAGE); } bool RowTree::isComponent() const { - return m_rowType == OBJTYPE_COMPONENT; + return m_objectType == OBJTYPE_COMPONENT; } bool RowTree::isComponentRoot() const { - if (m_rowType == OBJTYPE_COMPONENT && m_binding) + if (m_objectType == OBJTYPE_COMPONENT && m_binding) return static_cast<Qt3DSDMTimelineItemBinding *>(m_binding)->isRootComponent(); return false; @@ -1289,18 +1283,15 @@ bool RowTree::locked() const // Returns true for items with shy/visible/lock buttons bool RowTree::hasActionButtons() const { - return (!m_isProperty - && m_indexInLayout != 1 - && m_rowType != OBJTYPE_SCENE - && m_rowType != OBJTYPE_MATERIAL - && m_rowType != OBJTYPE_IMAGE); + return !m_isProperty && m_indexInLayout != 1 + && m_objectType & ~(OBJTYPE_SCENE | OBJTYPE_IS_MATERIAL | OBJTYPE_IMAGE); } bool RowTree::hasComponentAncestor() const { RowTree *parentRow = m_parentRow; while (parentRow) { - if (parentRow->rowType() == OBJTYPE_COMPONENT) + if (parentRow->objectType() == OBJTYPE_COMPONENT) return true; parentRow = parentRow->parentRow(); } diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTree.h b/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTree.h index 08e85dc5..b028e94d 100644 --- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTree.h +++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTree.h @@ -78,7 +78,7 @@ public: Q_DECLARE_FLAGS(ActionStates, ActionState) explicit RowTree(TimelineGraphicsScene *timelineScene, - EStudioObjectType rowType = OBJTYPE_UNKNOWN, const QString &label = {}); + EStudioObjectType objectType = OBJTYPE_UNKNOWN, const QString &label = {}); // property row constructor explicit RowTree(TimelineGraphicsScene *timelineScene, const QString &propType); ~RowTree(); @@ -127,7 +127,7 @@ public: int index() const; int indexInLayout() const; int treeWidth() const; - EStudioObjectType rowType() const; + EStudioObjectType objectType() const; QString propertyType() const; RowTree *getChildAt(int index) const; RowTree *parentRow() const; @@ -197,7 +197,7 @@ private: ExpandState m_expandState = ExpandState::HiddenCollapsed; TimelineGraphicsScene *m_scene; RowTreeLabelItem m_labelItem; - EStudioObjectType m_rowType = OBJTYPE_UNKNOWN; + EStudioObjectType m_objectType = OBJTYPE_UNKNOWN; QString m_propertyType; // for property rows QString m_label; QList<RowTree *> m_childRows; diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTreeContextMenu.cpp b/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTreeContextMenu.cpp index 9544903e..ae5c0bbb 100644 --- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTreeContextMenu.cpp +++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTreeContextMenu.cpp @@ -54,11 +54,10 @@ RowTreeContextMenu::~RowTreeContextMenu() void RowTreeContextMenu::initialize() { CDoc &doc(*g_StudioApp.GetCore()->GetDoc()); - qt3dsdm::Qt3DSDMInstanceHandle instance - = static_cast<Qt3DSDMTimelineItemBinding *>(m_TimelineItemBinding)->GetInstance(); + qt3dsdm::Qt3DSDMInstanceHandle instance = m_RowTree->instance(); // add sub-presentations submenu - if (m_RowTree->rowType() & (OBJTYPE_LAYER | OBJTYPE_MATERIAL | OBJTYPE_IMAGE)) { + if (m_RowTree->objectType() & (OBJTYPE_LAYER | OBJTYPE_IS_MATERIAL | OBJTYPE_IMAGE)) { m_subpMenu = addMenu(tr("Set sub-presentation")); connect(m_subpMenu, &QMenu::triggered, this, &RowTreeContextMenu::addSubPresentation); @@ -70,9 +69,9 @@ void RowTreeContextMenu::initialize() } // add datainput controller submenu - if (m_RowTree->rowType() & ~(OBJTYPE_GUIDE | OBJTYPE_EFFECT | OBJTYPE_ALIAS | OBJTYPE_SCENE) - && !static_cast<Qt3DSDMTimelineItemBinding *>(m_TimelineItemBinding) - ->isDefaultMaterial()) { + if (m_RowTree->objectType() & ~(OBJTYPE_GUIDE | OBJTYPE_EFFECT | OBJTYPE_ALIAS | OBJTYPE_SCENE) + && !m_RowTree->isDefaultMaterial()) { + m_diMenu = addMenu(tr("Set datainput controller")); connect(m_diMenu, &QMenu::triggered, this, &RowTreeContextMenu::addDiController); @@ -82,9 +81,9 @@ void RowTreeContextMenu::initialize() // the referenced source, and set datainput control to point to the property // in the referenced source. auto refInstance = doc.GetStudioSystem()->GetClientDataModelBridge() - ->getMaterialReference(instance); + ->getMaterialReference(instance); propList = doc.GetStudioSystem()->GetPropertySystem() - ->GetControllableProperties(refInstance ? refInstance : instance); + ->GetControllableProperties(refInstance ? refInstance : instance); QMap<int, QAction *> sections; for (const auto &prop : propList) { @@ -236,29 +235,21 @@ bool RowTreeContextMenu::canRenameObject() const void RowTreeContextMenu::addSubPresentation(QAction *action) { CDoc &doc(*g_StudioApp.GetCore()->GetDoc()); - qt3dsdm::Qt3DSDMInstanceHandle instance = - static_cast<Qt3DSDMTimelineItemBinding *>(m_TimelineItemBinding)->GetInstance(); + auto &bridge(*doc.GetStudioSystem()->GetClientDataModelBridge()); + + qt3dsdm::Qt3DSDMInstanceHandle instance = m_RowTree->instance(); Q3DStudio::CString presentationId; if (action->text() != tr("[None]")) presentationId = Q3DStudio::CString::fromQString(action->text()); - if (m_RowTree->rowType() == OBJTYPE_LAYER) { - qt3dsdm::Qt3DSDMPropertyHandle propHandle = doc.GetPropertySystem() - ->GetAggregateInstancePropertyByName(instance, L"sourcepath"); + if (m_RowTree->objectType() == OBJTYPE_LAYER) { + qt3dsdm::Qt3DSDMPropertyHandle propHandle = bridge.GetSourcePathProperty(); + Q3DStudio::SCOPED_DOCUMENT_EDITOR(doc, tr("Set layer sub-presentation")) ->SetInstancePropertyValueAsRenderable(instance, propHandle, presentationId); - } else if (m_RowTree->rowType() == OBJTYPE_MATERIAL) { - auto &bridge(*doc.GetStudioSystem()->GetClientDataModelBridge()); + } else if (m_RowTree->objectType() & OBJTYPE_IS_MATERIAL) { // if this is a ref material, update the material it references - - qt3dsdm::Qt3DSDMInstanceHandle refInstance = 0; - if (bridge.GetObjectType(instance) == OBJTYPE_REFERENCEDMATERIAL) { - auto optValue = doc.getSceneEditor()->GetInstancePropertyValue(instance, - bridge.GetObjectDefinitions().m_ReferencedMaterial - .m_ReferencedMaterial.m_Property); - if (optValue.hasValue()) - refInstance = bridge.GetInstance(doc.GetSceneInstance(), optValue.getValue()); - } + qt3dsdm::Qt3DSDMInstanceHandle refInstance = bridge.getMaterialReference(instance); ChooseImagePropertyDlg dlg(refInstance ? refInstance : instance, refInstance != 0); if (dlg.exec() == QDialog::Accepted) { @@ -276,9 +267,9 @@ void RowTreeContextMenu::addSubPresentation(QAction *action) presentationId); } } - } else if (m_RowTree->rowType() == OBJTYPE_IMAGE) { - qt3dsdm::Qt3DSDMPropertyHandle propHandle = doc.GetPropertySystem() - ->GetAggregateInstancePropertyByName(instance, L"subpresentation"); + } else if (m_RowTree->objectType() == OBJTYPE_IMAGE) { + qt3dsdm::Qt3DSDMPropertyHandle propHandle = bridge.getSubpresentationProperty(); + Q3DStudio::SCOPED_DOCUMENT_EDITOR(doc, tr("Set image sub-presentation")) ->SetInstancePropertyValueAsRenderable(instance, propHandle, presentationId); } |