244 q->stop(); |
244 q->stop(); |
245 } |
245 } |
246 |
246 |
247 void QParallelAnimationGroupPrivate::disconnectUncontrolledAnimations() |
247 void QParallelAnimationGroupPrivate::disconnectUncontrolledAnimations() |
248 { |
248 { |
249 Q_Q(QParallelAnimationGroup); |
|
250 |
|
251 QHash<QAbstractAnimation *, int>::iterator it = uncontrolledFinishTime.begin(); |
249 QHash<QAbstractAnimation *, int>::iterator it = uncontrolledFinishTime.begin(); |
252 while (it != uncontrolledFinishTime.end()) { |
250 while (it != uncontrolledFinishTime.end()) { |
253 QObject::disconnect(it.key(), SIGNAL(finished()), q, SLOT(_q_uncontrolledAnimationFinished())); |
251 disconnectUncontrolledAnimation(it.key()); |
254 ++it; |
252 ++it; |
255 } |
253 } |
256 |
254 |
257 uncontrolledFinishTime.clear(); |
255 uncontrolledFinishTime.clear(); |
258 } |
256 } |
259 |
257 |
260 void QParallelAnimationGroupPrivate::connectUncontrolledAnimations() |
258 void QParallelAnimationGroupPrivate::connectUncontrolledAnimations() |
261 { |
259 { |
262 Q_Q(QParallelAnimationGroup); |
|
263 |
|
264 for (int i = 0; i < animations.size(); ++i) { |
260 for (int i = 0; i < animations.size(); ++i) { |
265 QAbstractAnimation *animation = animations.at(i); |
261 QAbstractAnimation *animation = animations.at(i); |
266 if (animation->duration() == -1 || animation->loopCount() < 0) { |
262 if (animation->duration() == -1 || animation->loopCount() < 0) { |
267 uncontrolledFinishTime[animation] = -1; |
263 uncontrolledFinishTime[animation] = -1; |
268 QObject::connect(animation, SIGNAL(finished()), q, SLOT(_q_uncontrolledAnimationFinished())); |
264 connectUncontrolledAnimation(animation); |
269 } |
265 } |
270 } |
266 } |
271 } |
267 } |
272 |
268 |
273 bool QParallelAnimationGroupPrivate::shouldAnimationStart(QAbstractAnimation *animation, bool startIfAtEnd) const |
269 bool QParallelAnimationGroupPrivate::shouldAnimationStart(QAbstractAnimation *animation, bool startIfAtEnd) const |
303 bool QParallelAnimationGroupPrivate::isUncontrolledAnimationFinished(QAbstractAnimation *anim) const |
299 bool QParallelAnimationGroupPrivate::isUncontrolledAnimationFinished(QAbstractAnimation *anim) const |
304 { |
300 { |
305 return uncontrolledFinishTime.value(anim, -1) >= 0; |
301 return uncontrolledFinishTime.value(anim, -1) >= 0; |
306 } |
302 } |
307 |
303 |
|
304 void QParallelAnimationGroupPrivate::animationRemoved(int index, QAbstractAnimation *anim) |
|
305 { |
|
306 QAnimationGroupPrivate::animationRemoved(index, anim); |
|
307 disconnectUncontrolledAnimation(anim); |
|
308 uncontrolledFinishTime.remove(anim); |
|
309 } |
|
310 |
308 /*! |
311 /*! |
309 \reimp |
312 \reimp |
310 */ |
313 */ |
311 void QParallelAnimationGroup::updateDirection(QAbstractAnimation::Direction direction) |
314 void QParallelAnimationGroup::updateDirection(QAbstractAnimation::Direction direction) |
312 { |
315 { |