diff options
Diffstat (limited to 'src/Authoring/Qt3DStudio/Palettes/Timeline')
4 files changed, 40 insertions, 1 deletions
diff --git a/src/Authoring/Qt3DStudio/Palettes/Timeline/Bindings/ITimelineItem.h b/src/Authoring/Qt3DStudio/Palettes/Timeline/Bindings/ITimelineItem.h index 4308fb2b..2c8b6ecc 100644 --- a/src/Authoring/Qt3DStudio/Palettes/Timeline/Bindings/ITimelineItem.h +++ b/src/Authoring/Qt3DStudio/Palettes/Timeline/Bindings/ITimelineItem.h @@ -47,6 +47,13 @@ class ITimelineTimebar; class ITimelineItem : public INamable { public: + enum class ActivateAction { + None = 0, + Activate = 1, + Deactivate = 2 + }; + Q_DECLARE_FLAGS(ActivateActions, ActivateAction) + virtual ~ITimelineItem() {} virtual EStudioObjectType GetObjectType() const = 0; @@ -65,6 +72,7 @@ public: virtual bool HasAction(bool inMaster) = 0; virtual bool ChildrenHasAction(bool inMaster) = 0; virtual bool ComponentHasAction(bool inMaster) = 0; + virtual ActivateActions getActivateActions() = 0; // subpresentations virtual bool hasSubpresentation() const = 0; @@ -72,4 +80,6 @@ public: virtual ITimelineTimebar *GetTimebar() = 0; }; +Q_DECLARE_OPERATORS_FOR_FLAGS(ITimelineItem::ActivateActions) + #endif // INCLUDED_ITIMELINE_ITEM_H diff --git a/src/Authoring/Qt3DStudio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.cpp b/src/Authoring/Qt3DStudio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.cpp index 744c53a0..58529ad4 100644 --- a/src/Authoring/Qt3DStudio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.cpp +++ b/src/Authoring/Qt3DStudio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.cpp @@ -234,6 +234,34 @@ bool Qt3DSDMTimelineItemBinding::HasAction(bool inMaster) return theActions.size() > 0; } +ITimelineItem::ActivateActions Qt3DSDMTimelineItemBinding::getActivateActions() +{ + TActionHandleList theActions; + CDoc *theDoc = g_StudioApp.GetCore()->GetDoc(); + + Qt3DSDMSlideHandle theSlide = theDoc->GetActiveSlide(); + qt3dsdm::ISlideCore &theSlideCore(*m_StudioSystem->GetSlideCore()); + if (theSlideCore.IsSlide(theSlide)) { + m_StudioSystem->GetActionCore()->GetActions(theSlide, m_DataHandle, theActions); + // Check also master slide, to get actions inside component + TActionHandleList masterActions; + Qt3DSDMSlideHandle masterSlide = m_StudioSystem->GetSlideSystem()->GetMasterSlide(theSlide); + m_StudioSystem->GetActionCore()->GetActions(masterSlide, m_DataHandle, masterActions); + theActions.insert(theActions.end(), masterActions.begin(), masterActions.end()); + } + + ITimelineItem::ActivateActions activateActions = ITimelineItem::ActivateAction::None; + for (auto theIter = theActions.begin(); theIter != theActions.end(); ++theIter) { + auto info = m_StudioSystem->GetActionCore()->GetActionInfo(*theIter); + if (info.m_Event == L"onActivate") + activateActions |= ITimelineItem::ActivateAction::Activate; + else if (info.m_Event == L"onDeactivate") + activateActions |= ITimelineItem::ActivateAction::Deactivate; + } + + return activateActions; +} + bool Qt3DSDMTimelineItemBinding::ChildrenHasAction(bool inMaster) { // Get all the instances in this slidegraph diff --git a/src/Authoring/Qt3DStudio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.h b/src/Authoring/Qt3DStudio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.h index 3980c0e1..4f7084d2 100644 --- a/src/Authoring/Qt3DStudio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.h +++ b/src/Authoring/Qt3DStudio/Palettes/Timeline/Bindings/Qt3DSDMTimelineItemBinding.h @@ -107,6 +107,7 @@ public: bool IsVisible() const override; void SetVisible(bool) override; bool HasAction(bool inMaster) override; + ITimelineItem::ActivateActions getActivateActions() override; bool IsVisibilityControlled() const override; bool ChildrenHasAction(bool inMaster) override; bool ComponentHasAction(bool inMaster) override; diff --git a/src/Authoring/Qt3DStudio/Palettes/Timeline/Bindings/TimelineTranslationManager.cpp b/src/Authoring/Qt3DStudio/Palettes/Timeline/Bindings/TimelineTranslationManager.cpp index c03867a7..2264d232 100644 --- a/src/Authoring/Qt3DStudio/Palettes/Timeline/Bindings/TimelineTranslationManager.cpp +++ b/src/Authoring/Qt3DStudio/Palettes/Timeline/Bindings/TimelineTranslationManager.cpp @@ -82,7 +82,7 @@ ITimelineItemBinding *CTimelineTranslationManager::GetOrCreate(Qt3DSDMInstanceHa theReturn = new CLayerTimelineItemBinding(this, inInstance); } else if (objType & (OBJTYPE_MODEL | OBJTYPE_TEXT | OBJTYPE_CAMERA | OBJTYPE_EFFECT | OBJTYPE_LIGHT | OBJTYPE_RENDERPLUGIN | OBJTYPE_ALIAS - | OBJTYPE_SUBPATH)) + | OBJTYPE_SUBPATH | OBJTYPE_SIGNAL)) theReturn = new Qt3DSDMTimelineItemBinding(this, inInstance); else { // Add support for additional DataModel types here. |