Line | Source Code | Coverage |
---|
1 | | - |
2 | | - |
3 | | - |
4 | | - |
5 | | - |
6 | | - |
7 | | - |
8 | | - |
9 | | - |
10 | | - |
11 | QParallelAnimationGroup::QParallelAnimationGroup(QObject *parent) | - |
12 | : QAnimationGroup(*new QParallelAnimationGroupPrivate, parent) | - |
13 | { | - |
14 | } executed: } Execution Count:81 | 81 |
15 | | - |
16 | | - |
17 | | - |
18 | | - |
19 | QParallelAnimationGroup::QParallelAnimationGroup(QParallelAnimationGroupPrivate &dd, | - |
20 | QObject *parent) | - |
21 | : QAnimationGroup(dd, parent) | - |
22 | { | - |
23 | } | 0 |
24 | | - |
25 | | - |
26 | | - |
27 | | - |
28 | QParallelAnimationGroup::~QParallelAnimationGroup() | - |
29 | { | - |
30 | } | - |
31 | | - |
32 | | - |
33 | | - |
34 | | - |
35 | int QParallelAnimationGroup::duration() const | - |
36 | { | - |
37 | const QParallelAnimationGroupPrivate * const d = d_func(); | - |
38 | int ret = 0; | - |
39 | | - |
40 | for (int i = 0; i < d->animations.size(); ++i) { evaluated: i < d->animations.size() yes Evaluation Count:1362 | yes Evaluation Count:505 |
| 505-1362 |
41 | QAbstractAnimation *animation = d->animations.at(i); | - |
42 | const int currentDuration = animation->totalDuration(); | - |
43 | if (currentDuration == -1) evaluated: currentDuration == -1 yes Evaluation Count:9 | yes Evaluation Count:1353 |
| 9-1353 |
44 | return -1; executed: return -1; Execution Count:9 | 9 |
45 | | - |
46 | ret = qMax(ret, currentDuration); | - |
47 | } executed: } Execution Count:1353 | 1353 |
48 | | - |
49 | return ret; executed: return ret; Execution Count:505 | 505 |
50 | } | - |
51 | | - |
52 | | - |
53 | | - |
54 | | - |
55 | void QParallelAnimationGroup::updateCurrentTime(int currentTime) | - |
56 | { | - |
57 | QParallelAnimationGroupPrivate * const d = d_func(); | - |
58 | if (d->animations.isEmpty()) partially evaluated: d->animations.isEmpty() no Evaluation Count:0 | yes Evaluation Count:325 |
| 0-325 |
59 | return; | 0 |
60 | | - |
61 | if (d->currentLoop > d->lastLoop) { evaluated: d->currentLoop > d->lastLoop yes Evaluation Count:45 | yes Evaluation Count:280 |
| 45-280 |
62 | | - |
63 | int dura = duration(); | - |
64 | if (dura > 0) { partially evaluated: dura > 0 yes Evaluation Count:45 | no Evaluation Count:0 |
| 0-45 |
65 | for (int i = 0; i < d->animations.size(); ++i) { evaluated: i < d->animations.size() yes Evaluation Count:136 | yes Evaluation Count:45 |
| 45-136 |
66 | QAbstractAnimation *animation = d->animations.at(i); | - |
67 | if (animation->state() != QAbstractAnimation::Stopped) evaluated: animation->state() != QAbstractAnimation::Stopped yes Evaluation Count:52 | yes Evaluation Count:84 |
| 52-84 |
68 | d->animations.at(i)->setCurrentTime(dura); executed: d->animations.at(i)->setCurrentTime(dura); Execution Count:52 | 52 |
69 | } executed: } Execution Count:136 | 136 |
70 | } executed: } Execution Count:45 | 45 |
71 | } else if (d->currentLoop < d->lastLoop) { evaluated: d->currentLoop < d->lastLoop yes Evaluation Count:28 | yes Evaluation Count:252 |
executed: } Execution Count:45 | 28-252 |
72 | | - |
73 | for (int i = 0; i < d->animations.size(); ++i) { evaluated: i < d->animations.size() yes Evaluation Count:84 | yes Evaluation Count:28 |
| 28-84 |
74 | QAbstractAnimation *animation = d->animations.at(i); | - |
75 | | - |
76 | | - |
77 | d->applyGroupState(animation); | - |
78 | animation->setCurrentTime(0); | - |
79 | animation->stop(); | - |
80 | } executed: } Execution Count:84 | 84 |
81 | } executed: } Execution Count:28 | 28 |
82 | | - |
83 | | - |
84 | | - |
85 | | - |
86 | | - |
87 | | - |
88 | for (int i = 0; i < d->animations.size(); ++i) { evaluated: i < d->animations.size() yes Evaluation Count:950 | yes Evaluation Count:325 |
| 325-950 |
89 | QAbstractAnimation *animation = d->animations.at(i); | - |
90 | const int dura = animation->totalDuration(); | - |
91 | | - |
92 | if (d->currentLoop > d->lastLoop evaluated: d->currentLoop > d->lastLoop yes Evaluation Count:136 | yes Evaluation Count:814 |
| 136-814 |
93 | | - |
94 | | - |
95 | || d->shouldAnimationStart(animation, d->lastCurrentTime > dura )) { evaluated: d->shouldAnimationStart(animation, d->lastCurrentTime > dura ) yes Evaluation Count:549 | yes Evaluation Count:265 |
| 265-549 |
96 | d->applyGroupState(animation); | - |
97 | } executed: } Execution Count:685 | 685 |
98 | | - |
99 | if (animation->state() == state()) { evaluated: animation->state() == state() yes Evaluation Count:765 | yes Evaluation Count:185 |
| 185-765 |
100 | animation->setCurrentTime(currentTime); | - |
101 | if (dura > 0 && currentTime > dura) evaluated: dura > 0 yes Evaluation Count:653 | yes Evaluation Count:112 |
evaluated: currentTime > dura yes Evaluation Count:32 | yes Evaluation Count:621 |
| 32-653 |
102 | animation->stop(); executed: animation->stop(); Execution Count:32 | 32 |
103 | } executed: } Execution Count:765 | 765 |
104 | } executed: } Execution Count:950 | 950 |
105 | d->lastLoop = d->currentLoop; | - |
106 | d->lastCurrentTime = currentTime; | - |
107 | } executed: } Execution Count:325 | 325 |
108 | | - |
109 | | - |
110 | | - |
111 | | - |
112 | void QParallelAnimationGroup::updateState(QAbstractAnimation::State newState, | - |
113 | QAbstractAnimation::State oldState) | - |
114 | { | - |
115 | QParallelAnimationGroupPrivate * const d = d_func(); | - |
116 | QAnimationGroup::updateState(newState, oldState); | - |
117 | | - |
118 | switch (newState) { | - |
119 | case Stopped: | - |
120 | for (int i = 0; i < d->animations.size(); ++i) evaluated: i < d->animations.size() yes Evaluation Count:41 | yes Evaluation Count:57 |
| 41-57 |
121 | d->animations.at(i)->stop(); executed: d->animations.at(i)->stop(); Execution Count:41 | 41 |
122 | d->disconnectUncontrolledAnimations(); | - |
123 | break; executed: break; Execution Count:57 | 57 |
124 | case Paused: | - |
125 | for (int i = 0; i < d->animations.size(); ++i) evaluated: i < d->animations.size() yes Evaluation Count:6 | yes Evaluation Count:4 |
| 4-6 |
126 | if (d->animations.at(i)->state() == Running) evaluated: d->animations.at(i)->state() == Running yes Evaluation Count:5 | yes Evaluation Count:1 |
| 1-5 |
127 | d->animations.at(i)->pause(); executed: d->animations.at(i)->pause(); Execution Count:5 | 5 |
128 | break; executed: break; Execution Count:4 | 4 |
129 | case Running: | - |
130 | d->connectUncontrolledAnimations(); | - |
131 | for (int i = 0; i < d->animations.size(); ++i) { evaluated: i < d->animations.size() yes Evaluation Count:168 | yes Evaluation Count:62 |
| 62-168 |
132 | QAbstractAnimation *animation = d->animations.at(i); | - |
133 | if (oldState == Stopped) evaluated: oldState == Stopped yes Evaluation Count:164 | yes Evaluation Count:4 |
| 4-164 |
134 | animation->stop(); executed: animation->stop(); Execution Count:164 | 164 |
135 | animation->setDirection(d->direction); | - |
136 | if (d->shouldAnimationStart(animation, oldState == Stopped)) evaluated: d->shouldAnimationStart(animation, oldState == Stopped) yes Evaluation Count:114 | yes Evaluation Count:54 |
| 54-114 |
137 | animation->start(); executed: animation->start(); Execution Count:114 | 114 |
138 | } executed: } Execution Count:168 | 168 |
139 | break; executed: break; Execution Count:62 | 62 |
140 | } | - |
141 | } executed: } Execution Count:123 | 123 |
142 | | - |
143 | void QParallelAnimationGroupPrivate::_q_uncontrolledAnimationFinished() | - |
144 | { | - |
145 | QParallelAnimationGroup * const q = q_func(); | - |
146 | | - |
147 | QAbstractAnimation *animation = qobject_cast<QAbstractAnimation *>(q->sender()); | - |
148 | qt_noop(); | - |
149 | | - |
150 | int uncontrolledRunningCount = 0; | - |
151 | if (animation->duration() == -1 || animation->loopCount() < 0) { evaluated: animation->duration() == -1 yes Evaluation Count:1 | yes Evaluation Count:1 |
partially evaluated: animation->loopCount() < 0 yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
152 | QHash<QAbstractAnimation *, int>::iterator it = uncontrolledFinishTime.begin(); | - |
153 | while (it != uncontrolledFinishTime.end()) { evaluated: it != uncontrolledFinishTime.end() yes Evaluation Count:4 | yes Evaluation Count:2 |
| 2-4 |
154 | if (it.key() == animation) { evaluated: it.key() == animation yes Evaluation Count:2 | yes Evaluation Count:2 |
| 2 |
155 | *it = animation->currentTime(); | - |
156 | } executed: } Execution Count:2 | 2 |
157 | if (it.value() == -1) evaluated: it.value() == -1 yes Evaluation Count:1 | yes Evaluation Count:3 |
| 1-3 |
158 | ++uncontrolledRunningCount; executed: ++uncontrolledRunningCount; Execution Count:1 | 1 |
159 | ++it; | - |
160 | } executed: } Execution Count:4 | 4 |
161 | } executed: } Execution Count:2 | 2 |
162 | | - |
163 | if (uncontrolledRunningCount > 0) evaluated: uncontrolledRunningCount > 0 yes Evaluation Count:1 | yes Evaluation Count:1 |
| 1 |
164 | return; executed: return; Execution Count:1 | 1 |
165 | | - |
166 | int maxDuration = 0; | - |
167 | for (int i = 0; i < animations.size(); ++i) evaluated: i < animations.size() yes Evaluation Count:3 | yes Evaluation Count:1 |
| 1-3 |
168 | maxDuration = qMax(maxDuration, animations.at(i)->totalDuration()); executed: maxDuration = qMax(maxDuration, animations.at(i)->totalDuration()); Execution Count:3 | 3 |
169 | | - |
170 | if (currentTime >= maxDuration) partially evaluated: currentTime >= maxDuration yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
171 | q->stop(); executed: q->stop(); Execution Count:1 | 1 |
172 | } executed: } Execution Count:1 | 1 |
173 | | - |
174 | void QParallelAnimationGroupPrivate::disconnectUncontrolledAnimations() | - |
175 | { | - |
176 | QHash<QAbstractAnimation *, int>::iterator it = uncontrolledFinishTime.begin(); | - |
177 | while (it != uncontrolledFinishTime.end()) { evaluated: it != uncontrolledFinishTime.end() yes Evaluation Count:3 | yes Evaluation Count:57 |
| 3-57 |
178 | disconnectUncontrolledAnimation(it.key()); | - |
179 | ++it; | - |
180 | } executed: } Execution Count:3 | 3 |
181 | | - |
182 | uncontrolledFinishTime.clear(); | - |
183 | } executed: } Execution Count:57 | 57 |
184 | | - |
185 | void QParallelAnimationGroupPrivate::connectUncontrolledAnimations() | - |
186 | { | - |
187 | for (int i = 0; i < animations.size(); ++i) { evaluated: i < animations.size() yes Evaluation Count:168 | yes Evaluation Count:62 |
| 62-168 |
188 | QAbstractAnimation *animation = animations.at(i); | - |
189 | if (animation->duration() == -1 || animation->loopCount() < 0) { evaluated: animation->duration() == -1 yes Evaluation Count:1 | yes Evaluation Count:167 |
evaluated: animation->loopCount() < 0 yes Evaluation Count:3 | yes Evaluation Count:164 |
| 1-167 |
190 | uncontrolledFinishTime[animation] = -1; | - |
191 | connectUncontrolledAnimation(animation); | - |
192 | } executed: } Execution Count:4 | 4 |
193 | } executed: } Execution Count:168 | 168 |
194 | } executed: } Execution Count:62 | 62 |
195 | | - |
196 | bool QParallelAnimationGroupPrivate::shouldAnimationStart(QAbstractAnimation *animation, bool startIfAtEnd) const | - |
197 | { | - |
198 | const int dura = animation->totalDuration(); | - |
199 | if (dura == -1) evaluated: dura == -1 yes Evaluation Count:20 | yes Evaluation Count:962 |
| 20-962 |
200 | return !isUncontrolledAnimationFinished(animation); executed: return !isUncontrolledAnimationFinished(animation); Execution Count:20 | 20 |
201 | if (startIfAtEnd) evaluated: startIfAtEnd yes Evaluation Count:335 | yes Evaluation Count:627 |
| 335-627 |
202 | return currentTime <= dura; executed: return currentTime <= dura; Execution Count:335 | 335 |
203 | if (direction == QAbstractAnimation::Forward) evaluated: direction == QAbstractAnimation::Forward yes Evaluation Count:564 | yes Evaluation Count:63 |
| 63-564 |
204 | return currentTime < dura; executed: return currentTime < dura; Execution Count:564 | 564 |
205 | else | - |
206 | return currentTime && currentTime <= dura; executed: return currentTime && currentTime <= dura; Execution Count:63 | 63 |
207 | } | - |
208 | | - |
209 | void QParallelAnimationGroupPrivate::applyGroupState(QAbstractAnimation *animation) | - |
210 | { | - |
211 | switch (state) | - |
212 | { | - |
213 | case QAbstractAnimation::Running: | - |
214 | animation->start(); | - |
215 | break; executed: break; Execution Count:632 | 632 |
216 | case QAbstractAnimation::Paused: | - |
217 | animation->pause(); | - |
218 | break; | 0 |
219 | case QAbstractAnimation::Stopped: | - |
220 | default: | - |
221 | break; executed: break; Execution Count:137 | 137 |
222 | } | - |
223 | } executed: } Execution Count:769 | 769 |
224 | | - |
225 | | - |
226 | bool QParallelAnimationGroupPrivate::isUncontrolledAnimationFinished(QAbstractAnimation *anim) const | - |
227 | { | - |
228 | return uncontrolledFinishTime.value(anim, -1) >= 0; executed: return uncontrolledFinishTime.value(anim, -1) >= 0; Execution Count:20 | 20 |
229 | } | - |
230 | | - |
231 | void QParallelAnimationGroupPrivate::animationRemoved(int index, QAbstractAnimation *anim) | - |
232 | { | - |
233 | QAnimationGroupPrivate::animationRemoved(index, anim); | - |
234 | disconnectUncontrolledAnimation(anim); | - |
235 | uncontrolledFinishTime.remove(anim); | - |
236 | } executed: } Execution Count:164 | 164 |
237 | | - |
238 | | - |
239 | | - |
240 | | - |
241 | void QParallelAnimationGroup::updateDirection(QAbstractAnimation::Direction direction) | - |
242 | { | - |
243 | QParallelAnimationGroupPrivate * const d = d_func(); | - |
244 | | - |
245 | if (state() != Stopped) { partially evaluated: state() != Stopped no Evaluation Count:0 | yes Evaluation Count:19 |
| 0-19 |
246 | for (int i = 0; i < d->animations.size(); ++i) { never evaluated: i < d->animations.size() | 0 |
247 | QAbstractAnimation *animation = d->animations.at(i); | - |
248 | animation->setDirection(direction); | - |
249 | } | 0 |
250 | } else { | 0 |
251 | if (direction == Forward) { partially evaluated: direction == Forward no Evaluation Count:0 | yes Evaluation Count:19 |
| 0-19 |
252 | d->lastLoop = 0; | - |
253 | d->lastCurrentTime = 0; | - |
254 | } else { | 0 |
255 | | - |
256 | d->lastLoop = (d->loopCount == -1 ? 0 : d->loopCount - 1); evaluated: d->loopCount == -1 yes Evaluation Count:3 | yes Evaluation Count:16 |
| 3-16 |
257 | d->lastCurrentTime = duration(); | - |
258 | } executed: } Execution Count:19 | 19 |
259 | } | - |
260 | } | - |
261 | | - |
262 | | - |
263 | | - |
264 | | - |
265 | bool QParallelAnimationGroup::event(QEvent *event) | - |
266 | { | - |
267 | return QAnimationGroup::event(event); executed: return QAnimationGroup::event(event); Execution Count:520 | 520 |
268 | } | - |
269 | | - |
270 | | - |
271 | | - |
272 | | - |
| | |