on xenial help sign in
Fix PinchArea and tests.
360a272Ying-Chun Liu
qml/Components/ZoomableImage.qml+15−1
@@ -113,8 +113,22 @@ Item {
113
113
114 pinch.target: image
114 pinch.target: image
115 pinch.minimumScale: minScale
115 pinch.minimumScale: minScale
116+ pinch.dragAxis: Pinch.XAndYAxis
116
117
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;
117− onPinchFinished: flickable.returnToBounds()
129+ flickable.returnToBounds();
130+ pinch.accepted = true;
131+ }
118 }
132 }
119
133
120 MouseArea {
134 MouseArea {
tests/qmltests/Components/tst_ZoomableImage.qml+45−44
@@ -82,7 +82,7 @@ Rectangle {
82 return filenameA;
82 return filenameA;
83 }
83 }
84
84
85− function test_zoomable_data() {
85+ function test_pinch_data() {
86 return [ { source:widgetData2["source"],
86 return [ { source:widgetData2["source"],
87 zoomable:false,
87 zoomable:false,
88 answer1: true,
88 answer1: true,
@@ -94,11 +94,44 @@ Rectangle {
94 answer1: false,
94 answer1: false,
95 answer2: true,
95 answer2: true,
96 answer3: false,
96 answer3: false,
97− answer4: 1.1 }
97+ answer4: 1.7740461882048026 }
98 ]
98 ]
99 }
99 }
100
100
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) {
102 var image = findChild(zoomableImage, "image");
135 var image = findChild(zoomableImage, "image");
103 var lazyImage = findChild(zoomableImage, "lazyImage");
136 var lazyImage = findChild(zoomableImage, "lazyImage");
104
137
@@ -114,8 +147,6 @@ Rectangle {
114 tryCompareFunction(function() { return get_filename(lazyImage.source.toString()) === get_filename(data.source); }, true);
147 tryCompareFunction(function() { return get_filename(lazyImage.source.toString()) === get_filename(data.source); }, true);
115 waitForRendering(image);
148 waitForRendering(image);
116
149
117− var event1 = touchEvent();
118− var event2 = touchEvent();
119 var x1Start = zoomableImage.width * 2 / 6;
150 var x1Start = zoomableImage.width * 2 / 6;
120 var y1Start = zoomableImage.height * 2 / 6;
151 var y1Start = zoomableImage.height * 2 / 6;
121 var x1End = zoomableImage.width * 1 / 6;
152 var x1End = zoomableImage.width * 1 / 6;
@@ -127,66 +158,36 @@ Rectangle {
127
158
128 var oldScale = image.scale;
159 var oldScale = image.scale;
129
160
161+ // move mouse to center
130 mouseMove(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2);
162 mouseMove(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2);
131− mouseWheel(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2, 0, 10);
132
163
164+ var event1 = touchEvent();
165+ // first finger
133 event1.press(0, x1Start, y1Start);
166 event1.press(0, x1Start, y1Start);
134 event1.commit();
167 event1.commit();
168+ // second finger
169+ event1.stationary(0);
135 event1.press(1, x2Start, y2Start);
170 event1.press(1, x2Start, y2Start);
136 event1.commit();
171 event1.commit();
137
172
173+ // pinch
138 for (var i = 0.0; i < 1.0; i += 0.02) {
174 for (var i = 0.0; i < 1.0; i += 0.02) {
139 event1.move(0, x1Start + (x1End - x1Start) * i, y1Start + (y1End - y1Start) * i);
175 event1.move(0, x1Start + (x1End - x1Start) * i, y1Start + (y1End - y1Start) * i);
140− event1.commit();
141 event1.move(1, x2Start + (x2End - x2Start) * i, y2Start + (y2End - y2Start) * i);
176 event1.move(1, x2Start + (x2End - x2Start) * i, y2Start + (y2End - y2Start) * i);
142 event1.commit();
177 event1.commit();
143 }
178 }
144
179
180+ // release
145 event1.release(0, x1End, y1End);
181 event1.release(0, x1End, y1End);
146− event1.commit();
147 event1.release(1, x2End, y2End);
182 event1.release(1, x2End, y2End);
148 event1.commit();
183 event1.commit();
149
184
185+ tryCompare(image, "scale", data.answer4);
150 var newScale = image.scale;
186 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);
153 compare(newScale > oldScale, data.answer2, "scale factor didn't changed");
188 compare(newScale > oldScale, data.answer2, "scale factor didn't changed");
154 compare(signalSpy.count == 0, data.answer3, "scale signal count error");
189 compare(signalSpy.count == 0, data.answer3, "scale signal count error");
155 compare(newScale, data.answer4, "scale factor error");
190 compare(newScale, data.answer4, "scale factor error");
156 }
191 }
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− }
191 }
192 }
192}
193}