src/corelib/animation/qparallelanimationgroup.cpp
changeset 19 fcece45ef507
parent 18 2f34d5167611
equal deleted inserted replaced
18:2f34d5167611 19:fcece45ef507
   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 {