1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
import QtQuick 2.0
Rectangle {
property bool sectionsInvalidOnCompletion
width: 240
height: 320
color: "#ffffff"
resources: [
Component {
id: myDelegate
Item {
id: wrapper
function validateInitialSections() {
var invalid = false
if (index == 0) {
invalid |= wrapper.ListView.previousSection != ""
}
if (index == model.count - 1) {
invalid |= wrapper.ListView.nextSection != ""
}
if (index % 5 == 0 && index > 0) {
invalid |= wrapper.ListView.previousSection != Number(wrapper.ListView.section) - 1
} else if ((index + 1) % 5 == 0 && index < model.count - 1) {
invalid |= wrapper.ListView.nextSection != Number(wrapper.ListView.section) + 1
} else if (index > 0 && index < model.count - 1) {
invalid |= wrapper.ListView.previousSection != wrapper.ListView.section
invalid |= wrapper.ListView.nextSection != wrapper.ListView.section
}
sectionsInvalidOnCompletion |= invalid
}
objectName: "wrapper"
height: ListView.previousSection != ListView.section ? 40 : 20;
width: 240
Rectangle {
y: wrapper.ListView.previousSection != wrapper.ListView.section ? 20 : 0
height: 20
width: parent.width
color: wrapper.ListView.isCurrentItem ? "lightsteelblue" : "white"
Text {
text: index
}
Text {
x: 30
id: textName
objectName: "textName"
text: name
}
Text {
x: 100
id: textNumber
objectName: "textNumber"
text: number
}
Text {
objectName: "nextSection"
x: 150
text: wrapper.ListView.nextSection
}
Text {
x: 200
text: wrapper.y
}
}
Rectangle {
color: "#99bb99"
height: wrapper.ListView.previousSection != wrapper.ListView.section ? 20 : 0
width: parent.width
visible: wrapper.ListView.previousSection != wrapper.ListView.section ? true : false
Text { text: wrapper.ListView.section }
}
ListView.onPreviousSectionChanged: validateInitialSections()
ListView.onNextSectionChanged: validateInitialSections()
ListView.onSectionChanged: validateInitialSections()
Component.onCompleted: validateInitialSections()
}
}
]
ListView {
id: list
objectName: "list"
width: 240
height: 320
model: testModel
delegate: myDelegate
section.property: "number"
}
}
|