43 lines
1.5 KiB
JavaScript
43 lines
1.5 KiB
JavaScript
.pragma library
|
|
|
|
|
|
function buildLayout(layoutData, parentItem) {
|
|
let layout = null
|
|
switch (layoutData.type) {
|
|
case "GridLayout":
|
|
case "RowLayout":
|
|
case "ColumnLayout":
|
|
layout = Qt.createQmlObject("import QtQuick.Layouts\n" +
|
|
layoutData.type + " {}", parentItem)
|
|
break
|
|
default:
|
|
console.log("data.layout.type not recognized(" + layoutdata.type + ")")
|
|
}
|
|
if (layout) {
|
|
for (let name in layoutData) {
|
|
let val = layoutData[name]
|
|
switch (name) {
|
|
case "items":
|
|
let arrLayoutData = layoutData.items
|
|
for (let i = 0; i < arrLayoutData.length; i++) {
|
|
let layoutItemDesc = arrLayoutData[i]
|
|
let strProps = ""
|
|
for (let keyName in layoutItemDesc) {
|
|
strProps += "Layout." + keyName + ": " + layoutItemDesc[keyName] + ";"
|
|
}
|
|
// For some reason we cannot assign the "Layout." attached properties from
|
|
// here, so for now we have to serialize them as strings.
|
|
let rect = Qt.createQmlObject("import QtQuick\nimport QtQuick.Layouts\n\nRectangle { implicitWidth: 20; implicitHeight: 20; " + strProps + "}", layout)
|
|
}
|
|
break;
|
|
case "type":
|
|
break;
|
|
default:
|
|
layout[name] = val
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return layout
|
|
}
|