diff options
author | Janne Kangas <janne.kangas@qt.io> | 2018-02-07 14:14:36 +0200 |
---|---|---|
committer | Janne Kangas <janne.kangas@qt.io> | 2018-02-14 11:50:35 +0000 |
commit | c4764bd2c8cd06d9ee407fa089c1ec7cb6eb777b (patch) | |
tree | 78dcc1e5c98237da3258ddb56005a43ed092c440 | |
parent | c8053565074b90fd383fef1f4b10aa23e7e09052 (diff) |
Allow component to have datainput controlling slide transitions
Task-ID: QT3DS-1053
Change-Id: I4b729feeeb738ae1117c4d81c8554ccb9df95f02
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Reviewed-by: Marianne Yrjänä <marianne.yrjana@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
-rw-r--r-- | src/Authoring/Studio/Palettes/Slide/SlideView.cpp | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/src/Authoring/Studio/Palettes/Slide/SlideView.cpp b/src/Authoring/Studio/Palettes/Slide/SlideView.cpp index 7cb74be4..00617c52 100644 --- a/src/Authoring/Studio/Palettes/Slide/SlideView.cpp +++ b/src/Authoring/Studio/Palettes/Slide/SlideView.cpp @@ -252,7 +252,7 @@ void SlideView::onDataInputChange(const QString &dataInputName) CDoc *doc = g_StudioApp.GetCore()->GetDoc(); CClientDataModelBridge *bridge = doc->GetStudioSystem()->GetClientDataModelBridge(); - qt3dsdm::Qt3DSDMInstanceHandle slideRoot = doc->GetSceneInstance(); + qt3dsdm::Qt3DSDMInstanceHandle slideRoot = doc->GetActiveRootInstance(); QString fullSlideControlStr; if (dataInputName != tr("[No control]")) { @@ -265,9 +265,16 @@ void SlideView::onDataInputChange(const QString &dataInputName) m_currentController.clear(); m_toolTip = tr("No controller"); } + qt3dsdm::Qt3DSDMPropertyHandle ctrldProp; + if (bridge->GetObjectType(slideRoot) == EStudioObjectType::OBJTYPE_SCENE) { + ctrldProp = bridge->GetObjectDefinitions().m_Scene.m_ControlledProperty; + } else if (bridge->GetObjectType(slideRoot) == + EStudioObjectType::OBJTYPE_COMPONENT) { + ctrldProp = bridge->GetObjectDefinitions().m_Component.m_ControlledProperty; + } else { + Q_ASSERT(false); + } - qt3dsdm::Qt3DSDMPropertyHandle ctrldProp - = bridge->GetObjectDefinitions().m_Scene.m_ControlledProperty; qt3dsdm::Option<qt3dsdm::SValue> controlledPropertyVal = Q3DStudio::SCOPED_DOCUMENT_EDITOR( *doc, @@ -308,15 +315,24 @@ void SlideView::onDataInputChange(const QString &dataInputName) Q_EMIT controlledChanged(); } -// Set the state of slide control based on scene +// Set the state of slide control based on scene or component // controlledproperty void SlideView::updateDataInputStatus(bool isViaDispatch) { CDoc *doc = g_StudioApp.GetCore()->GetDoc(); CClientDataModelBridge *bridge = doc->GetStudioSystem()->GetClientDataModelBridge(); - qt3dsdm::Qt3DSDMInstanceHandle slideRoot = doc->GetSceneInstance(); - qt3dsdm::Qt3DSDMPropertyHandle ctrldProp - = bridge->GetObjectDefinitions().m_Scene.m_ControlledProperty; + qt3dsdm::Qt3DSDMInstanceHandle slideRoot = doc->GetActiveRootInstance(); + + qt3dsdm::Qt3DSDMPropertyHandle ctrldProp; + if (bridge->GetObjectType(slideRoot) == EStudioObjectType::OBJTYPE_SCENE) { + ctrldProp = bridge->GetObjectDefinitions().m_Scene.m_ControlledProperty; + } else if (bridge->GetObjectType(slideRoot) == + EStudioObjectType::OBJTYPE_COMPONENT) { + ctrldProp = bridge->GetObjectDefinitions().m_Component.m_ControlledProperty; + } else { + Q_ASSERT(false); + } + qt3dsdm::Option<qt3dsdm::SValue> controlledPropertyVal = Q3DStudio::SCOPED_DOCUMENT_EDITOR( *doc, @@ -428,6 +444,7 @@ void SlideView::rebuildSlideList(const qt3dsdm::Qt3DSDMSlideHandle &inActiveSlid row++; } } + updateDataInputStatus(true); } CDoc *SlideView::GetDoc() |