diff options
author | Kaj Grönholm <kaj.gronholm@qt.io> | 2020-09-18 14:40:33 +0300 |
---|---|---|
committer | Kaj Grönholm <kaj.gronholm@qt.io> | 2020-09-25 11:04:22 +0300 |
commit | 98d888b6beeda9e301625ecba8e377cf552e7231 (patch) | |
tree | 2201c7ee29accc46d78816c2f047b1e784a73df0 /src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView | |
parent | 3bcbc804004d293eba409b5e65ff5c5e38c572fe (diff) |
Improve timeline signal actionsv2.8.0-beta1
- Support new signal type object with icons. Bump generated UIP
version to 7.
- When creating a signal, also create initial onActivate action.
- Don't show basic node properties for signals, only the name.
- When adding new action to signal, default to onActivate and
emit signal.
- Show small ticks on timeline bar if onActivate or onDeactivate
actions have been set to the object.
Task-number: QT3DS-4165
Change-Id: I16d1129536ac4d22c23c27bbc95741aa66adf597
Reviewed-by: Antti Määttä <antti.maatta@qt.io>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Diffstat (limited to 'src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView')
6 files changed, 46 insertions, 0 deletions
diff --git a/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/TimelineConstants.h b/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/TimelineConstants.h index 02d08141..365bb88b 100644 --- a/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/TimelineConstants.h +++ b/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/TimelineConstants.h @@ -62,6 +62,7 @@ namespace TimelineConstants const int DURATION_HANDLE_W = 14; // width of duration end handles in a timeline row const int NAVIGATION_BAR_H = 30; // height of navigation/breadcrumb bar const int TIMEBAR_TOOLTIP_OFFSET_V = 10; + const int ACTION_W = 4; // Other const int EXPAND_ANIMATION_DURATION = 200; diff --git a/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/TimelineWidget.cpp b/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/TimelineWidget.cpp index d05fe12d..4b599cbf 100644 --- a/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/TimelineWidget.cpp +++ b/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/TimelineWidget.cpp @@ -385,6 +385,9 @@ void TimelineWidget::OnNewPresentation() m_connections.push_back(theSignalProvider->ConnectActionDeleted( std::bind(&TimelineWidget::onActionEvent, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3))); + m_connections.push_back(theSignalProvider->ConnectEventSet( + std::bind(&TimelineWidget::onActionModifiedEvent, this, + std::placeholders::_1))); // connect property linked/unlinked m_connections.push_back(theSignalProvider->ConnectPropertyLinked( @@ -741,6 +744,7 @@ void TimelineWidget::updateActionStates(const QSet<RowTree *> &rows) states |= RowTree::ActionState::ComponentAction; } row->setActionStates(states); + row->setActivateActions(binding->getActivateActions()); } } @@ -994,6 +998,15 @@ void TimelineWidget::onAsyncUpdate() m_graphicsScene->rowManager()->finalizeRowDeletions(); } +void TimelineWidget::onActionModifiedEvent(qt3dsdm::Qt3DSDMActionHandle inAction) +{ + // We don't have action owner here, so just do full reconstruct as action + // event types are anyway rarely changed. + m_fullReconstruct = true; + if (!m_asyncUpdateTimer.isActive()) + m_asyncUpdateTimer.start(); +} + void TimelineWidget::onActionEvent(qt3dsdm::Qt3DSDMActionHandle inAction, qt3dsdm::Qt3DSDMSlideHandle inSlide, qt3dsdm::Qt3DSDMInstanceHandle inOwner) diff --git a/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/TimelineWidget.h b/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/TimelineWidget.h index ed27f924..9804a03e 100644 --- a/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/TimelineWidget.h +++ b/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/TimelineWidget.h @@ -117,6 +117,7 @@ protected: qt3dsdm::Qt3DSDMPropertyHandle property); void onActionEvent(qt3dsdm::Qt3DSDMActionHandle inAction, qt3dsdm::Qt3DSDMSlideHandle inSlide, qt3dsdm::Qt3DSDMInstanceHandle inOwner); + void onActionModifiedEvent(qt3dsdm::Qt3DSDMActionHandle inAction); void onPropertyLinked(qt3dsdm::Qt3DSDMInstanceHandle inInstance, qt3dsdm::Qt3DSDMPropertyHandle inProperty); void onPropertyUnlinked(qt3dsdm::Qt3DSDMInstanceHandle inInstance, diff --git a/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/ui/RowTimeline.cpp b/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/ui/RowTimeline.cpp index 2d7cf19d..b2a8f6dc 100644 --- a/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/ui/RowTimeline.cpp +++ b/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/ui/RowTimeline.cpp @@ -219,6 +219,18 @@ void RowTimeline::paint(QPainter *painter, const QStyleOptionGraphicsItem *optio painter->drawLine(startXActual, 0, startXActual, currHeight); painter->drawLine(edgeOffset + m_endX, 0, edgeOffset + m_endX, currHeight); } + + // Paint possible timeline actions + auto actions = m_rowTree->m_activateActions; + bool paintActivate = actions.testFlag(ITimelineItem::ActivateAction::Activate); + bool paintDeactivate = actions.testFlag(ITimelineItem::ActivateAction::Deactivate); + int aw = TimelineConstants::ACTION_W; + QColor aColor = CStudioPreferences::timelineActionColor(); + if (paintActivate) + painter->fillRect(QRect(x - aw/2, 0, aw, currHeight), aColor); + if (paintDeactivate) + painter->fillRect(QRect(x + w - aw/2, 0, aw, currHeight), aColor); + } painter->restore(); diff --git a/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/ui/RowTree.cpp b/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/ui/RowTree.cpp index bc9f7a63..aca0ef3c 100644 --- a/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/ui/RowTree.cpp +++ b/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/ui/RowTree.cpp @@ -424,6 +424,7 @@ void RowTree::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, Q static const QPixmap pixTextNormal(":/images/Objects-Text-Normal.png"); static const QPixmap pixAliasNormal(":/images/Objects-Alias-Normal.png"); static const QPixmap pixGroupNormal(":/images/Objects-Group-Normal.png"); + static const QPixmap pixSignalNormal(":/images/Objects-Signal-Normal.png"); static const QPixmap pixComponentNormal(":/images/Objects-Component-Normal.png"); static const QPixmap pixMaterialNormal(":/images/Objects-Material-Normal.png"); static const QPixmap pixPropertyNormal(":/images/Objects-Property-Normal.png"); @@ -438,6 +439,7 @@ void RowTree::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, Q static const QPixmap pixTextNormal2x(":/images/Objects-Text-Normal@2x.png"); static const QPixmap pixAliasNormal2x(":/images/Objects-Alias-Normal@2x.png"); static const QPixmap pixGroupNormal2x(":/images/Objects-Group-Normal@2x.png"); + static const QPixmap pixSignalNormal2x(":/images/Objects-Signal-Normal@2x.png"); static const QPixmap pixComponentNormal2x(":/images/Objects-Component-Normal@2x.png"); static const QPixmap pixMaterialNormal2x(":/images/Objects-Material-Normal@2x.png"); static const QPixmap pixPropertyNormal2x(":/images/Objects-Property-Normal@2x.png"); @@ -453,6 +455,7 @@ void RowTree::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, Q static const QPixmap pixTextDisabled(":/images/Objects-Text-Disabled.png"); static const QPixmap pixAliasDisabled(":/images/Objects-Alias-Disabled.png"); static const QPixmap pixGroupDisabled(":/images/Objects-Group-Disabled.png"); + static const QPixmap pixSignalDisabled(":/images/Objects-Signal-Disabled.png"); static const QPixmap pixComponentDisabled(":/images/Objects-Component-Disabled.png"); static const QPixmap pixMaterialDisabled(":/images/Objects-Material-Disabled.png"); static const QPixmap pixPropertyDisabled(":/images/Objects-Property-Disabled.png"); @@ -467,6 +470,7 @@ void RowTree::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, Q static const QPixmap pixTextDisabled2x(":/images/Objects-Text-Disabled@2x.png"); static const QPixmap pixAliasDisabled2x(":/images/Objects-Alias-Disabled@2x.png"); static const QPixmap pixGroupDisabled2x(":/images/Objects-Group-Disabled@2x.png"); + static const QPixmap pixSignalDisabled2x(":/images/Objects-Signal-Disabled@2x.png"); static const QPixmap pixComponentDisabled2x(":/images/Objects-Component-Disabled@2x.png"); static const QPixmap pixMaterialDisabled2x(":/images/Objects-Material-Disabled@2x.png"); static const QPixmap pixPropertyDisabled2x(":/images/Objects-Property-Disabled@2x.png"); @@ -512,6 +516,10 @@ void RowTree::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, Q pixRowType = hiResIcons ? (m_locked ? pixGroupDisabled2x : pixGroupNormal2x) : (m_locked ? pixGroupDisabled : pixGroupNormal); break; + case OBJTYPE_SIGNAL: + pixRowType = hiResIcons ? (m_locked ? pixSignalDisabled2x : pixSignalNormal2x) + : (m_locked ? pixSignalDisabled : pixSignalNormal); + break; case OBJTYPE_COMPONENT: pixRowType = hiResIcons ? (m_locked ? pixComponentDisabled2x : pixComponentNormal2x) : (m_locked ? pixComponentDisabled : pixComponentNormal); @@ -1336,6 +1344,14 @@ void RowTree::setActionStates(ActionStates states) } } +void RowTree::setActivateActions(ITimelineItem::ActivateActions activateActions) +{ + if (activateActions != m_activateActions) { + m_activateActions = activateActions; + update(); + } +} + bool RowTree::isContainer() const { return !m_isProperty && m_objectType & OBJTYPE_IS_CONTAINER; diff --git a/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/ui/RowTree.h b/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/ui/RowTree.h index 34a851b7..179292c9 100644 --- a/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/ui/RowTree.h +++ b/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/ui/RowTree.h @@ -35,6 +35,7 @@ #include "StudioObjectTypes.h" #include "RowTreeLabel.h" #include "Qt3DSDMHandles.h" +#include "Bindings/ITimelineItem.h" #include <QtCore/qpropertyanimation.h> #include <QtCore/qparallelanimationgroup.h> @@ -93,6 +94,7 @@ public: void removeChild(RowTree *child); void setDnDState(DnDState state, DnDState onlyIfState = DnDState::Any, bool recursive = false); void setActionStates(ActionStates states); + void setActivateActions(ITimelineItem::ActivateActions activateActions); void setTreeWidth(double w); void setBinding(ITimelineItemBinding *binding); void setPropBinding(ITimelineItemProperty *binding); // for property rows @@ -196,6 +198,7 @@ private: bool m_onMasterSlide = false; DnDState m_dndState = DnDState::None; ActionStates m_actionStates = ActionState::None; + ITimelineItem::ActivateActions m_activateActions = ITimelineItem::ActivateAction::None; bool m_hasSubpresentation = false; int m_numDescendantSubpresentations = 0; ExpandState m_expandState = ExpandState::HiddenCollapsed; |