import QtQuick 2.0 Rectangle { id: root width: 240 height: 320 color: "#ffffff" property int count: list.count property bool showHeader: false property bool showFooter: false property bool enforceRange: false property real hr: list.visibleArea.heightRatio function heightRatio() { return list.visibleArea.heightRatio } function checkProperties() { testObject.error = false; if (list.model != testModel) { console.log("model property incorrect"); testObject.error = true; } if (!testObject.animate && list.delegate != myDelegate) { console.log("delegate property incorrect - expected myDelegate"); testObject.error = true; } if (testObject.animate && list.delegate != animatedDelegate) { console.log("delegate property incorrect - expected animatedDelegate"); testObject.error = true; } if (testObject.invalidHighlight && list.highlight != invalidHl) { console.log("highlight property incorrect - expected invalidHl"); testObject.error = true; } if (!testObject.invalidHighlight && list.highlight != myHighlight) { console.log("highlight property incorrect - expected myHighlight"); testObject.error = true; } } resources: [ Component { id: myDelegate Rectangle { id: wrapper objectName: "wrapper" height: 20 width: 240 Text { text: index } Text { x: 30 id: textName objectName: "textName" text: name } Text { x: 120 id: textNumber objectName: "textNumber" text: number } Text { x: 200 text: wrapper.y } color: ListView.isCurrentItem ? "lightsteelblue" : "#EEEEEE" } }, Component { id: animatedDelegate Rectangle { id: wrapper objectName: "wrapper" height: 20 width: 240 Text { text: index } Text { x: 30 id: textName objectName: "textName" text: name } Text { x: 120 id: textNumber objectName: "textNumber" text: number } Text { x: 200 text: wrapper.y } color: ListView.isCurrentItem ? "lightsteelblue" : "white" ListView.onRemove: SequentialAnimation { PropertyAction { target: wrapper; property: "ListView.delayRemove"; value: true } NumberAnimation { target: wrapper; property: "scale"; to: 0; duration: 250; easing.type: "InOutQuad" } PropertyAction { target: wrapper; property: "ListView.delayRemove"; value: false } } } }, Component { id: myHighlight Rectangle { color: "green" } }, Component { id: invalidHl SmoothedAnimation {} }, Component { id: headerFooter Rectangle { height: 30; width: 240; color: "blue" } } ] ListView { id: list objectName: "list" focus: true width: 240 height: 320 model: testModel delegate: testObject.animate ? animatedDelegate : myDelegate highlight: testObject.invalidHighlight ? invalidHl : myHighlight highlightMoveVelocity: 100000 highlightResizeVelocity: 1000 preferredHighlightBegin: enforceRange ? 120 : 0 preferredHighlightEnd: enforceRange ? 120 : 0 highlightRangeMode: enforceRange ? ListView.StrictlyEnforceRange : ListView.NoHighlightRange cacheBuffer: testObject.cacheBuffer header: root.showHeader ? headerFooter : null footer: root.showFooter ? headerFooter : null } }