diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2016-05-27 09:51:35 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2016-06-06 18:16:46 +0000 |
commit | 3ec6f508aa485b1162d7d8f7bc57401b43ded470 (patch) | |
tree | 924fe6c0da4951dd92459e2becfc8da9c4d66110 /src/quicktemplates2 | |
parent | 51c181776f2c389d6b12d78514008d3208841192 (diff) |
StackView: add attached activated() etc. signals
For initializing and cleaning up item-specific resources, these are
much more convenient than a StackView.onStatusChanged handler.
[ChangeLog][StackView] Added attached activated(), deactivated(),
activating(), and deactivating() signals that are convenient for
initializing and cleaning up item-specific resources.
Change-Id: If8df45b31a14cd2491db2c87eeb1c071af4e695f
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/quicktemplates2')
-rw-r--r-- | src/quicktemplates2/qquickstackview.cpp | 38 | ||||
-rw-r--r-- | src/quicktemplates2/qquickstackview_p.cpp | 24 | ||||
-rw-r--r-- | src/quicktemplates2/qquickstackview_p.h | 4 |
3 files changed, 64 insertions, 2 deletions
diff --git a/src/quicktemplates2/qquickstackview.cpp b/src/quicktemplates2/qquickstackview.cpp index 9c9cd5c2..d75dfc23 100644 --- a/src/quicktemplates2/qquickstackview.cpp +++ b/src/quicktemplates2/qquickstackview.cpp @@ -988,4 +988,42 @@ QQuickStackView::Status QQuickStackAttached::status() const return d->element ? d->element->status : QQuickStackView::Inactive; } +/*! + \qmlattachedsignal QtQuick.Controls::StackView::activated() + \since QtQuick.Controls 2.1 + + This attached signal is emitted when the item it's attached to is activated in the stack. + + \sa status +*/ + +/*! + \qmlattachedsignal QtQuick.Controls::StackView::deactivated() + \since QtQuick.Controls 2.1 + + This attached signal is emitted when the item it's attached to is deactivated in the stack. + + \sa status +*/ + +/*! + \qmlattachedsignal QtQuick.Controls::StackView::activating() + \since QtQuick.Controls 2.1 + + This attached signal is emitted when the item it's attached to is in the process of being + activated in the stack. + + \sa status +*/ + +/*! + \qmlattachedsignal QtQuick.Controls::StackView::deactivating() + \since QtQuick.Controls 2.1 + + This attached signal is emitted when the item it's attached to is in the process of being + dectivated in the stack. + + \sa status +*/ + QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickstackview_p.cpp b/src/quicktemplates2/qquickstackview_p.cpp index 809f7386..5a83f5e5 100644 --- a/src/quicktemplates2/qquickstackview_p.cpp +++ b/src/quicktemplates2/qquickstackview_p.cpp @@ -221,8 +221,28 @@ void QQuickStackElement::setStatus(QQuickStackView::Status value) status = value; QQuickStackAttached *attached = attachedStackObject(this); - if (attached) - emit attached->statusChanged(); + if (!attached) + return; + + switch (value) { + case QQuickStackView::Inactive: + emit attached->deactivated(); + break; + case QQuickStackView::Deactivating: + emit attached->deactivating(); + break; + case QQuickStackView::Activating: + emit attached->activating(); + break; + case QQuickStackView::Active: + emit attached->activated(); + break; + default: + Q_UNREACHABLE(); + break; + } + + emit attached->statusChanged(); } void QQuickStackElement::transitionNextReposition(QQuickItemViewTransitioner *transitioner, QQuickItemViewTransitioner::TransitionType type, bool asTarget) diff --git a/src/quicktemplates2/qquickstackview_p.h b/src/quicktemplates2/qquickstackview_p.h index 5c119627..790ac4c5 100644 --- a/src/quicktemplates2/qquickstackview_p.h +++ b/src/quicktemplates2/qquickstackview_p.h @@ -175,6 +175,10 @@ Q_SIGNALS: void indexChanged(); void viewChanged(); void statusChanged(); + Q_REVISION(1) void activated(); + Q_REVISION(1) void activating(); + Q_REVISION(1) void deactivated(); + Q_REVISION(1) void deactivating(); private: Q_DISABLE_COPY(QQuickStackAttached) |