on xenial help sign in
Fix PinchArea and tests.
commit360a272bca9f99fc5685f677c4dc8efc98bdeca3 authorYing-Chun Liu <paul.liu@canonical.com> dateTue 8 Apr 2014, 17:13 (13 years ago) parent7d71672
2 files changed+60−45
qml/Components/ZoomableImage.qml+15−1 tests/qmltests/Components/tst_ZoomableImage.qml+45−44
qml/Components/ZoomableImage.qml+15−1
@@ -113,8 +113,22 @@ Item {
113113
114114 pinch.target: image
115115 pinch.minimumScale: minScale
116+ pinch.dragAxis: Pinch.XAndYAxis
116117
117− onPinchFinished: flickable.returnToBounds()
118+ onPinchStarted: {
119+ pinch.accepted = true;
120+ }
121+
122+ onPinchUpdated: {
123+ image.scale = pinch.scale;
124+ pinch.accepted = true;
125+ }
126+
127+ onPinchFinished: {
128+ image.scale = pinch.scale;
129+ flickable.returnToBounds();
130+ pinch.accepted = true;
131+ }
118132 }
119133
120134 MouseArea {
tests/qmltests/Components/tst_ZoomableImage.qml+45−44
@@ -82,7 +82,7 @@ Rectangle {
8282 return filenameA;
8383 }
8484
85− function test_zoomable_data() {
85+ function test_pinch_data() {
8686 return [ { source:widgetData2["source"],
8787 zoomable:false,
8888 answer1: true,
@@ -94,11 +94,44 @@ Rectangle {
9494 answer1: false,
9595 answer2: true,
9696 answer3: false,
97− answer4: 1.1 }
97+ answer4: 1.7740461882048026 }
9898 ]
9999 }
100100
101− function test_zoomable(data) {
101+ function test_mousewheel() {
102+ var image = findChild(zoomableImage, "image");
103+ var lazyImage = findChild(zoomableImage, "lazyImage");
104+ var flickable = findChild(zoomableImage, "flickable");
105+
106+ zoomableImage.source = widgetData2["source"];
107+ zoomableImage.zoomable = true;
108+ waitForRendering(zoomableImage);
109+
110+ tryCompare(zoomableImage, "imageState", "ready");
111+ tryCompareFunction(function() { return get_filename(lazyImage.source.toString()) === get_filename(widgetData2["source"]); }, true);
112+ waitForRendering(image);
113+
114+ // move mouse to center
115+ mouseMove(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2);
116+
117+ // zoom in
118+ for (var i=0; i<10; i++) {
119+ mouseWheel(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2, 0, 10);
120+ tryCompare(image, "scale", 1.0 + (i + 1) * 0.1);
121+ compare(flickable.contentWidth, lazyImage.width * image.scale);
122+ compare(flickable.contentHeight, lazyImage.height * image.scale);
123+ }
124+
125+ // zoom out
126+ for (var i=0; i<10; i++) {
127+ mouseWheel(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2, 0, -10);
128+ tryCompare(image, "scale", 2.0 - (i + 1) * 0.1);
129+ compare(flickable.contentWidth, lazyImage.width * image.scale);
130+ compare(flickable.contentHeight, lazyImage.height * image.scale);
131+ }
132+ }
133+
134+ function test_pinch(data) {
102135 var image = findChild(zoomableImage, "image");
103136 var lazyImage = findChild(zoomableImage, "lazyImage");
104137
@@ -114,8 +147,6 @@ Rectangle {
114147 tryCompareFunction(function() { return get_filename(lazyImage.source.toString()) === get_filename(data.source); }, true);
115148 waitForRendering(image);
116149
117− var event1 = touchEvent();
118− var event2 = touchEvent();
119150 var x1Start = zoomableImage.width * 2 / 6;
120151 var y1Start = zoomableImage.height * 2 / 6;
121152 var x1End = zoomableImage.width * 1 / 6;
@@ -127,66 +158,36 @@ Rectangle {
127158
128159 var oldScale = image.scale;
129160
161+ // move mouse to center
130162 mouseMove(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2);
131− mouseWheel(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2, 0, 10);
132163
164+ var event1 = touchEvent();
165+ // first finger
133166 event1.press(0, x1Start, y1Start);
134167 event1.commit();
168+ // second finger
169+ event1.stationary(0);
135170 event1.press(1, x2Start, y2Start);
136171 event1.commit();
137172
173+ // pinch
138174 for (var i = 0.0; i < 1.0; i += 0.02) {
139175 event1.move(0, x1Start + (x1End - x1Start) * i, y1Start + (y1End - y1Start) * i);
140− event1.commit();
141176 event1.move(1, x2Start + (x2End - x2Start) * i, y2Start + (y2End - y2Start) * i);
142177 event1.commit();
143178 }
144179
180+ // release
145181 event1.release(0, x1End, y1End);
146− event1.commit();
147182 event1.release(1, x2End, y2End);
148183 event1.commit();
149184
185+ tryCompare(image, "scale", data.answer4);
150186 var newScale = image.scale;
151−
152− compare(newScale == oldScale, data.answer1, "scale factor not equal");
187+ compare(newScale == oldScale, data.answer1, "scale factor not equal: "+ oldScale + "=?" + newScale);
153188 compare(newScale > oldScale, data.answer2, "scale factor didn't changed");
154189 compare(signalSpy.count == 0, data.answer3, "scale signal count error");
155190 compare(newScale, data.answer4, "scale factor error");
156191 }
157−
158− function test_mousewheel() {
159− var image = findChild(zoomableImage, "image");
160− var lazyImage = findChild(zoomableImage, "lazyImage");
161− var flickable = findChild(zoomableImage, "flickable");
162−
163− zoomableImage.source = "";
164− zoomableImage.source = widgetData2["source"];
165− zoomableImage.zoomable = true;
166− waitForRendering(zoomableImage);
167−
168− tryCompare(zoomableImage, "imageState", "ready");
169− tryCompareFunction(function() { return get_filename(lazyImage.source.toString()) === get_filename(widgetData2["source"]); }, true);
170− waitForRendering(image);
171−
172− // move to center
173− mouseMove(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2);
174−
175− // zoom in
176− for (var i=0; i<10; i++) {
177− mouseWheel(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2, 0, 10);
178− tryCompare(image, "scale", 1.0 + (i + 1) * 0.1);
179− compare(flickable.contentWidth, lazyImage.width * image.scale);
180− compare(flickable.contentHeight, lazyImage.height * image.scale);
181− }
182−
183− // zoom out
184− for (var i=0; i<10; i++) {
185− mouseWheel(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2, 0, -10);
186− tryCompare(image, "scale", 2.0 - (i + 1) * 0.1);
187− compare(flickable.contentWidth, lazyImage.width * image.scale);
188− compare(flickable.contentHeight, lazyImage.height * image.scale);
189− }
190− }
191192 }
192193}