Emit a notifications when targetState and targetStates are changed.
In order to properly use QAbstractTransition object in QML we need to know when these properties are changed. Change-Id: I5449ecf3fce33e164f645d7263f21b20abfcd026 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>bb10
parent
dd1598e1aa
commit
28e5158026
|
|
@ -201,10 +201,15 @@ QAbstractState *QAbstractTransition::targetState() const
|
|||
void QAbstractTransition::setTargetState(QAbstractState* target)
|
||||
{
|
||||
Q_D(QAbstractTransition);
|
||||
if ((d->targetStates.size() == 1 && target == d->targetStates.at(0).data()) ||
|
||||
(d->targetStates.isEmpty() && target == 0)) {
|
||||
return;
|
||||
}
|
||||
if (!target)
|
||||
d->targetStates.clear();
|
||||
else
|
||||
setTargetStates(QList<QAbstractState*>() << target);
|
||||
emit targetStateChanged(QPrivateSignal());
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -229,18 +234,26 @@ QList<QAbstractState*> QAbstractTransition::targetStates() const
|
|||
void QAbstractTransition::setTargetStates(const QList<QAbstractState*> &targets)
|
||||
{
|
||||
Q_D(QAbstractTransition);
|
||||
|
||||
QList<QPointer<QAbstractState> > copy(d->targetStates);
|
||||
bool sameList = true;
|
||||
for (int i = 0; i < targets.size(); ++i) {
|
||||
QAbstractState *target = targets.at(i);
|
||||
if (!target) {
|
||||
qWarning("QAbstractTransition::setTargetStates: target state(s) cannot be null");
|
||||
return;
|
||||
} else {
|
||||
sameList &= copy.removeOne(target);
|
||||
}
|
||||
}
|
||||
|
||||
sameList &= copy.isEmpty();
|
||||
|
||||
d->targetStates.clear();
|
||||
for (int i = 0; i < targets.size(); ++i)
|
||||
d->targetStates.append(targets.at(i));
|
||||
|
||||
if (!sameList)
|
||||
emit targetStatesChanged(QPrivateSignal());
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -323,6 +336,24 @@ QList<QAbstractAnimation*> QAbstractTransition::animations() const
|
|||
onTransition() has been called).
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QAbstractTransition::targetStateChanged()
|
||||
\since 5.4
|
||||
|
||||
This signal is emitted when the targetState property is changed.
|
||||
|
||||
\sa QAbstractTransition::targetState
|
||||
*/
|
||||
|
||||
/*!
|
||||
\fn QAbstractTransition::targetStatesChanged()
|
||||
\since 5.4
|
||||
|
||||
This signal is emitted when the targetStates property is changed.
|
||||
|
||||
\sa QAbstractTransition::targetStates
|
||||
*/
|
||||
|
||||
/*!
|
||||
\reimp
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -65,8 +65,8 @@ class Q_CORE_EXPORT QAbstractTransition : public QObject
|
|||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(QState* sourceState READ sourceState)
|
||||
Q_PROPERTY(QAbstractState* targetState READ targetState WRITE setTargetState)
|
||||
Q_PROPERTY(QList<QAbstractState*> targetStates READ targetStates WRITE setTargetStates)
|
||||
Q_PROPERTY(QAbstractState* targetState READ targetState WRITE setTargetState NOTIFY targetStateChanged)
|
||||
Q_PROPERTY(QList<QAbstractState*> targetStates READ targetStates WRITE setTargetStates NOTIFY targetStatesChanged)
|
||||
public:
|
||||
QAbstractTransition(QState *sourceState = 0);
|
||||
virtual ~QAbstractTransition();
|
||||
|
|
@ -89,6 +89,16 @@ Q_SIGNALS:
|
|||
void triggered(
|
||||
#if !defined(Q_QDOC)
|
||||
QPrivateSignal
|
||||
#endif
|
||||
);
|
||||
void targetStateChanged(
|
||||
#if !defined(Q_QDOC)
|
||||
QPrivateSignal
|
||||
#endif
|
||||
);
|
||||
void targetStatesChanged(
|
||||
#if !defined(Q_QDOC)
|
||||
QPrivateSignal
|
||||
#endif
|
||||
);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue