42 Accessible.ignored: true
48 property int columnWidth: 100
54 property int columns: Math.max(0, Math.floor(width / columnWidth))
63 property alias model: repeater.model
70 property alias delegate: repeater.delegate
75 property int contentHeight: 0
80 readonly property alias repeaterCompleted: __private.repeaterCompleted
84 onColumnsChanged: reEvalColumns()
85 onModelChanged: reEvalColumns()
87 onWidthChanged: updateWidths()
92 property bool repeaterCompleted: false
98 function updateWidths() {
99 if (repeaterCompleted) {
103 for (var i = 0; count < columns && i < columnFlow.children.length; i++) {
104 if (!columnFlow.children[i] || String(columnFlow.children[i]).indexOf(
"QQuickRepeater") == 0)
107 columnFlow.children[i].width = width / columns;
116 function reEvalColumns() {
117 if (!repeaterCompleted)
120 var columnHeights =
new Array(columns);
121 var lastItem =
new Array(columns);
126 for (i = 0; count < columns && i < columnFlow.children.length; i++) {
127 if (!columnFlow.children[i] || String(columnFlow.children[i]).indexOf(
"QQuickRepeater") == 0 || !columnFlow.children[i].visible)
131 columnHeights[count] = columnFlow.children[i].height;
133 columnFlow.children[i].anchors.top = columnFlow.top;
134 columnFlow.children[i].anchors.left = (lastI === -1 ? columnFlow.left : columnFlow.children[lastI].right);
135 columnFlow.children[i].anchors.right = undefined;
136 columnFlow.children[i].width = columnFlow.width / columns;
143 for (i = i; i < columnFlow.children.length; i++) {
144 var highestHeight = Number.MAX_VALUE;
147 if (!columnFlow.children[i] || !columnFlow.children[i].visible)
151 for (j = 0; j < columns; j++) {
152 if (columnHeights[j] < highestHeight) {
154 highestHeight = columnHeights[j];
159 columnFlow.children[i].anchors.top = columnFlow.children[lastItem[newColumn]].bottom;
160 columnFlow.children[i].anchors.left = columnFlow.children[lastItem[newColumn]].left;
161 columnFlow.children[i].anchors.right = columnFlow.children[lastItem[newColumn]].right;
163 lastItem[newColumn] = i;
164 columnHeights[newColumn] += columnFlow.children[i].height;
168 for (i = 0; i < columns; i++) {
169 if (!columnHeights[i])
171 cHeight = Math.max(cHeight, columnHeights[i]);
173 contentHeight = cHeight;
180 model: columnFlow.model
182 Component.onCompleted: {
183 __private.repeaterCompleted =
true;
184 columnFlow.reEvalColumns();