on xenial help sign in
simplify code
a57ff95Michael Zanetti
qml/Stages/TransformedSpreadDelegate.qml+40−65
@@ -110,115 +110,90 @@ SpreadDelegate {
110 return priv.selectedXTranslate;
110 return priv.selectedXTranslate;
111 }
111 }
112
112
113− var translation = 0;
114 switch (index) {
113 switch (index) {
115 case 0:
114 case 0:
116 if (spreadView.stage == 0) {
115 if (spreadView.stage == 0) {
117− translation = linearAnimation(0, spreadView.positionMarker2, 0, -spreadView.width * .25, root.animatedProgress)
116+ return linearAnimation(0, spreadView.positionMarker2, 0, -spreadView.width * .25, root.animatedProgress)
118− break;
119 } else if (spreadView.stage == 1){
117 } else if (spreadView.stage == 1){
120− translation = linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, -spreadView.width * .25, priv.stage2startTranslate, root.progress)
118+ return linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, -spreadView.width * .25, priv.stage2startTranslate, root.progress)
121− break;
122 } else if (!priv.isSelected){ // Stage 2
119 } else if (!priv.isSelected){ // Stage 2
123− // Move the first tile a bit to the right to be aligned with the others
124− translation += spreadView.width
125− // apply the same animation as with the rest
120+ // Apply the same animation as with the rest but add spreadView.width to align it with the others.
126− translation += -easingCurve.value * spreadView.width
121+ return -easingCurve.value * spreadView.width + spreadView.width
127− break;
128 } else if (priv.isSelected) {
122 } else if (priv.isSelected) {
129− translation = linearAnimation(selectedProgress, negativeProgress, selectedXTranslate, 0, root.progress)
123+ return linearAnimation(selectedProgress, negativeProgress, selectedXTranslate, 0, root.progress)
130− break;
131 }
124 }
132
125
133 case 1:
126 case 1:
134 if (spreadView.stage == 0 && !priv.isSelected) {
127 if (spreadView.stage == 0 && !priv.isSelected) {
135− translation = linearAnimation(0, spreadView.positionMarker2, 0, -spreadView.width * spreadView.snapPosition, root.animatedProgress)
128+ return linearAnimation(0, spreadView.positionMarker2, 0, -spreadView.width * spreadView.snapPosition, root.animatedProgress)
136− break;
137 } else if (spreadView.stage == 1 && !priv.isSelected) {
129 } else if (spreadView.stage == 1 && !priv.isSelected) {
138− translation = linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4,
130+ return linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4,
139 -spreadView.width * spreadView.snapPosition, priv.stage2startTranslate, root.progress);
131 -spreadView.width * spreadView.snapPosition, priv.stage2startTranslate, root.progress);
140− break;
141 }
132 }
133+ }
142
134
143− default:
144− // Fix it at the right edge...
145− translation += -((index - 1) * root.startDistance)
146− // ...and use our easing to move them to the left. Stop a bit earlier for each tile
147− translation += -easingCurve.value * spreadView.width + (index * root.endDistance)
148− if (priv.isSelected) {
135+ if (priv.isSelected) {
149− // Distance to left edge
136+ // Distance to left edge
150− var targetTranslate = -spreadView.width - ((index - 1) * root.startDistance)
137+ var targetTranslate = -spreadView.width - ((index - 1) * root.startDistance)
151− translation = linearAnimation(selectedProgress, negativeProgress, selectedXTranslate, targetTranslate, root.progress)
138+ return linearAnimation(selectedProgress, negativeProgress, selectedXTranslate, targetTranslate, root.progress)
152− }
153 }
139 }
154− return translation;
140+
141+ // Fix it at the right edge...
142+ var rightEdgeOffset = -((index - 1) * root.startDistance)
143+ // ...and use our easing to move them to the left. Stop a bit earlier for each tile
144+ return -easingCurve.value * spreadView.width + (index * root.endDistance) + rightEdgeOffset
145+
155 }
146 }
147+
156 property real angle: {
148 property real angle: {
157 if (priv.otherSelected) {
149 if (priv.otherSelected) {
158 return priv.selectedAngle
150 return priv.selectedAngle
159 }
151 }
160−
152+ if (priv.isSelected) {
161− var newAngle = 0;
153+ return linearAnimation(selectedProgress, negativeProgress, selectedAngle, 0, root.progress)
154+ }
162 switch (index) {
155 switch (index) {
163 case 0:
156 case 0:
164 if (spreadView.stage == 0) {
157 if (spreadView.stage == 0) {
165− newAngle = linearAnimation(0, spreadView.positionMarker2, 0, root.tile0SnapAngle, root.animatedProgress)
158+ return linearAnimation(0, spreadView.positionMarker2, 0, root.tile0SnapAngle, root.animatedProgress)
166− break;
167 } else if (spreadView.stage == 1) {
159 } else if (spreadView.stage == 1) {
168− newAngle = linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, root.tile0SnapAngle, stage2startAngle, root.progress)
160+ return linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, root.tile0SnapAngle, stage2startAngle, root.progress)
169− break;
170 }
161 }
171 case 1:
162 case 1:
172− if (spreadView.stage == 0 && !priv.isSelected) {
163+ if (spreadView.stage == 0) {
173− newAngle = linearAnimation(0, spreadView.positionMarker2, root.startAngle, root.startAngle * (1-spreadView.snapPosition), root.animatedProgress)
164+ return linearAnimation(0, spreadView.positionMarker2, root.startAngle, root.startAngle * (1-spreadView.snapPosition), root.animatedProgress)
174− break;
175− } else if (spreadView.stage == 1 && !priv.isSelected) {
165+ } else if (spreadView.stage == 1) {
176− newAngle = linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, root.startAngle * (1-spreadView.snapPosition), priv.stage2startAngle, root.progress)
166+ return linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, root.startAngle * (1-spreadView.snapPosition), priv.stage2startAngle, root.progress)
177− break;
178− }
179−
180− default:
181− newAngle = root.startAngle - easingCurve.value * (root.startAngle - root.endAngle)
182− if (priv.isSelected) {
183− newAngle = linearAnimation(selectedProgress, negativeProgress, selectedAngle, 0, root.progress)
184 }
167 }
185 }
168 }
186−
169+ return root.startAngle - easingCurve.value * (root.startAngle - root.endAngle)
187− return newAngle;
188 }
170 }
171+
189 property real scale: {
172 property real scale: {
190 if (priv.otherSelected) {
173 if (priv.otherSelected) {
191 return priv.selectedScale;
174 return priv.selectedScale;
192 }
175 }
176+ if (priv.isSelected) {
177+ return linearAnimation(selectedProgress, negativeProgress, selectedScale, 1, root.progress)
178+ }
193
179
194− var newScale = 1;
195 switch (index) {
180 switch (index) {
196 case 0:
181 case 0:
197 if (spreadView.stage == 0) {
182 if (spreadView.stage == 0) {
198− newScale = 1;
183+ return 1;
199− break
200 } else if(spreadView.stage == 1) {
184 } else if(spreadView.stage == 1) {
201− newScale = linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, 1, stage2startScale, root.progress)
185+ return linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, 1, stage2startScale, root.progress)
202− break;
203 }
186 }
204 case 1:
187 case 1:
205− if (spreadView.stage == 0 && !priv.isSelected) {
188+ if (spreadView.stage == 0) {
206 var targetScale = tile1StartScale - ((tile1StartScale - 1) * spreadView.snapPosition);
189 var targetScale = tile1StartScale - ((tile1StartScale - 1) * spreadView.snapPosition);
207− newScale = linearAnimation(0, spreadView.positionMarker2, root.tile1StartScale, targetScale, root.animatedProgress)
190+ return linearAnimation(0, spreadView.positionMarker2, root.tile1StartScale, targetScale, root.animatedProgress)
208− break;
209− } else if (spreadView.stage == 1 && !priv.isSelected) {
191+ } else if (spreadView.stage == 1) {
210 var startScale = tile1StartScale - ((tile1StartScale - 1) * spreadView.snapPosition);
192 var startScale = tile1StartScale - ((tile1StartScale - 1) * spreadView.snapPosition);
211− newScale = linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, startScale, priv.stage2startScale, root.progress)
193+ return linearAnimation(spreadView.positionMarker2, spreadView.positionMarker4, startScale, priv.stage2startScale, root.progress)
212− break;
213− }
214−
215− default:
216− newScale = root.startScale - easingCurve.value * (root.startScale - root.endScale)
217− if (priv.isSelected) {
218− newScale = linearAnimation(selectedProgress, negativeProgress, selectedScale, 1, root.progress)
219 }
194 }
220 }
195 }
221− return newScale;
196+ return root.startScale - easingCurve.value * (root.startScale - root.endScale)
222 }
197 }
223
198
224 property real opacity: {
199 property real opacity: {