52 lines
1.5 KiB
QML
52 lines
1.5 KiB
QML
import "root:/config"
|
|
import QtQuick
|
|
|
|
StyledRect {
|
|
id: root
|
|
|
|
property var padding: 0
|
|
|
|
readonly property int paddingTop: getRealPadding().top
|
|
readonly property int paddingRight: getRealPadding().right
|
|
readonly property int paddingBottom: getRealPadding().bottom
|
|
readonly property int paddingLeft: getRealPadding().left
|
|
readonly property int paddingX: getRealPadding().x
|
|
readonly property int paddingY: getRealPadding().y
|
|
|
|
function getRealPadding() {
|
|
const pad = {};
|
|
|
|
if (Array.isArray(padding)) {
|
|
if (padding.length === 2) {
|
|
pad.top = pad.bottom = padding[0];
|
|
pad.left = pad.right = padding[1];
|
|
} else if (padding.length === 3) {
|
|
pad.top = padding[0];
|
|
pad.left = pad.right = padding[1];
|
|
pad.bottom = padding[2];
|
|
} else if (padding.length === 4) {
|
|
pad.top = padding[0];
|
|
pad.right = padding[1];
|
|
pad.bottom = padding[2];
|
|
pad.left = padding[3];
|
|
}
|
|
} else {
|
|
pad.top = pad.bottom = pad.left = pad.right = padding;
|
|
}
|
|
|
|
pad.x = pad.left + pad.right;
|
|
pad.y = pad.top + pad.bottom;
|
|
|
|
return pad;
|
|
}
|
|
|
|
implicitWidth: childrenRect.width + paddingX
|
|
implicitHeight: childrenRect.height + paddingY
|
|
|
|
onChildrenChanged: {
|
|
for (const child of children) {
|
|
child.x = Qt.binding(() => paddingLeft);
|
|
child.y = Qt.binding(() => paddingTop);
|
|
}
|
|
}
|
|
}
|