56 lines
1.6 KiB
QML
56 lines
1.6 KiB
QML
import QtQuick
|
|
import qs.Modules.Bar as Bar
|
|
|
|
QtObject {
|
|
id: root
|
|
|
|
required property Bar.BarLoader bar
|
|
readonly property real barClamped: bar.clampedExtent
|
|
readonly property real barExtent: bar.extent
|
|
readonly property bool barOnBottom: position === "bottom"
|
|
readonly property bool barOnLeft: position === "left"
|
|
readonly property bool barOnTop: position === "top"
|
|
required property string configPosition
|
|
readonly property bool horizontal: position !== "left"
|
|
readonly property string position: configPosition === "top" || configPosition === "bottom" ? configPosition : "left"
|
|
required property var win
|
|
|
|
function axisPos(x: real, y: real): real {
|
|
return horizontal ? x : y;
|
|
}
|
|
|
|
function barContains(x: real, y: real, clamped = false): bool {
|
|
const extent = clamped ? barClamped : barExtent;
|
|
if (barOnTop)
|
|
return y < extent;
|
|
if (barOnBottom)
|
|
return y > win.height - extent;
|
|
return x < extent;
|
|
}
|
|
|
|
function insetBottom(border: real, clamped = false): real {
|
|
return barOnBottom ? (clamped ? barClamped : barExtent) : border;
|
|
}
|
|
|
|
function insetLeft(border: real, clamped = false): real {
|
|
return barOnLeft ? (clamped ? barClamped : barExtent) : border;
|
|
}
|
|
|
|
function insetTop(border: real, clamped = false): real {
|
|
return barOnTop ? (clamped ? barClamped : barExtent) : border;
|
|
}
|
|
|
|
function inwardDrag(dragX: real, dragY: real): real {
|
|
if (barOnTop)
|
|
return dragY;
|
|
if (barOnBottom)
|
|
return -dragY;
|
|
return dragX;
|
|
}
|
|
|
|
onConfigPositionChanged: {
|
|
if (!["left", "top", "bottom"].includes(configPosition))
|
|
console.warn(`Invalid bar position '${configPosition}', falling back to left`);
|
|
}
|
|
}
|