pragma ComponentBehavior: Bound import "root:/widgets" import "root:/services" import "root:/config" import QtQuick Item { id: root property string source: Wallpapers.current property Image current: one anchors.fill: parent onSourceChanged: { if (current === one) two.update(); else one.update(); } Img { id: one } Img { id: two } component Img: CachingImage { id: img function update(): void { if (path === root.source) root.current = this; else path = root.source; } anchors.fill: parent opacity: 0 scale: Wallpapers.showPreview ? 1 : 0.8 onStatusChanged: { if (status === Image.Ready) root.current = this; } states: State { name: "visible" when: root.current === img PropertyChanges { img.opacity: 1 img.scale: 1 } } transitions: Transition { NumberAnimation { target: img properties: "opacity,scale" duration: Appearance.anim.durations.normal easing.type: Easing.BezierSpline easing.bezierCurve: Appearance.anim.curves.standard } } } }