on xenial help sign in
Use LazyImage instead of AnimatedImage
3b37881Ying-Chun Liu
qml/Dash/Previews/PreviewZoomableImage.qml+8−7
@@ -44,7 +44,7 @@ PreviewWidget {
44 width: Math.max(image.width * image.scale, flickable.width)
44 width: Math.max(image.width * image.scale, flickable.width)
45 height: Math.max(image.height * image.scale, flickable.height)
45 height: Math.max(image.height * image.scale, flickable.height)
46
46
47− AnimatedImage {
47+ LazyImage {
48 id: image
48 id: image
49 objectName: "image"
49 objectName: "image"
50 property real prevScale
50 property real prevScale
@@ -54,9 +54,9 @@ PreviewWidget {
54 source: widgetData["source"]
54 source: widgetData["source"]
55
55
56 function calculateSize() {
56 function calculateSize() {
57− scale = Math.min(flickable.width / width, flickable.height / height) * 0.98;
57+ image.scale = Math.min(flickable.width / image.width, flickable.height / image.height) * 0.98;
58− pinchArea.minScale = scale;
58+ pinchArea.minScale = image.scale;
59− prevScale = Math.min(scale, 1);
59+ prevScale = Math.min(image.scale, 1);
60 }
60 }
61
61
62 onScaleChanged: {
62 onScaleChanged: {
@@ -72,10 +72,11 @@ PreviewWidget {
72 prevScale = scale;
72 prevScale = scale;
73 }
73 }
74
74
75− onStatusChanged: {
75+ onStateChanged: {
76− if (status == Image.Ready) {
76+ if (state == "ready") {
77+ image.width = flickable.width;
78+ image.height = flickable.height;
77 calculateSize();
79 calculateSize();
78− playing = true;
79 }
80 }
80 }
81 }
81 }
82 }
tests/qmltests/Dash/Previews/tst_PreviewZoomableImage.qml+12−4
@@ -54,10 +54,14 @@ Rectangle {
54 var image = findChild(zoomableImage, "image");
54 var image = findChild(zoomableImage, "image");
55
55
56 zoomableImage.widgetData = widgetData0;
56 zoomableImage.widgetData = widgetData0;
57+ waitForRendering(zoomableImage);
57− tryCompare(image.state, "default");
58+ tryCompare(image, "state", "default");
59+
60+ wait(3000);
58
61
59 zoomableImage.widgetData = widgetData1;
62 zoomableImage.widgetData = widgetData1;
63+ waitForRendering(zoomableImage);
60− tryCompare(image.state, "ready");
64+ tryCompare(image, "state", "ready");
61 }
65 }
62
66
63 function test_zoomable() {
67 function test_zoomable() {
@@ -65,11 +69,10 @@ Rectangle {
65
69
66 zoomableImage.widgetData = widgetData2;
70 zoomableImage.widgetData = widgetData2;
67 waitForRendering(zoomableImage);
71 waitForRendering(zoomableImage);
68− tryCompare(image.state, "ready");
69
72
73+ tryCompare(image, "state", "ready");
70 waitForRendering(image);
74 waitForRendering(image);
71
75
72− var oldScale = image.scale;
73 var event1 = touchEvent();
76 var event1 = touchEvent();
74 var event2 = touchEvent();
77 var event2 = touchEvent();
75 var x1Start = zoomableImage.width * 2 / 6;
78 var x1Start = zoomableImage.width * 2 / 6;
@@ -81,9 +84,13 @@ Rectangle {
81 var x2End = zoomableImage.width * 5 / 6;
84 var x2End = zoomableImage.width * 5 / 6;
82 var y2End = zoomableImage.height * 5 / 6;
85 var y2End = zoomableImage.height * 5 / 6;
83
86
87+ var oldScale = image.scale;
88+
84 mouseMove(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2);
89 mouseMove(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2);
85 mouseWheel(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2, 0, 10);
90 mouseWheel(zoomableImage, zoomableImage.width / 2, zoomableImage.height / 2, 0, 10);
86
91
92+ wait(300);
93+
87 event1.press(0, x1Start, y1Start);
94 event1.press(0, x1Start, y1Start);
88 event1.commit();
95 event1.commit();
89 event1.press(1, x2Start, y2Start);
96 event1.press(1, x2Start, y2Start);
@@ -102,6 +109,7 @@ Rectangle {
102 event1.commit();
109 event1.commit();
103
110
104 var newScale = image.scale;
111 var newScale = image.scale;
112+
105 compare(newScale > oldScale, true, "the image should be larger than before");
113 compare(newScale > oldScale, true, "the image should be larger than before");
106
114
107 }
115 }