Split display layout into its own widget and fix installer early exit
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
import QtQuick
|
||||
import qs.Commons
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
|
||||
property var monitor: null
|
||||
property bool selected: false
|
||||
property real canvasScale: 1
|
||||
property real originX: 0
|
||||
property real originY: 0
|
||||
|
||||
signal picked()
|
||||
signal moved(int x, int y)
|
||||
signal dropped()
|
||||
|
||||
readonly property string name: monitor ? monitor.name : ""
|
||||
readonly property bool disabled: monitor ? monitor.disabled === true : false
|
||||
|
||||
visible: !!monitor && !disabled
|
||||
width: monitor ? Math.max(Style.spaceReal(24), monitor.width * canvasScale) : 0
|
||||
height: monitor ? Math.max(Style.spaceReal(18), monitor.height * canvasScale) : 0
|
||||
x: monitor ? (monitor.x - originX) * canvasScale : 0
|
||||
y: monitor ? (monitor.y - originY) * canvasScale : 0
|
||||
|
||||
radius: Style.cardRadius
|
||||
color: root.selected
|
||||
? Util.alpha(Color.accent, 0.35)
|
||||
: Util.alpha(Color.background, Style.cardFillAlpha)
|
||||
border.width: Style.cardBorderWidth
|
||||
border.color: root.selected ? Color.accent : Util.alpha(Color.blue, Style.cardBorderAlpha)
|
||||
|
||||
Column {
|
||||
anchors.centerIn: parent
|
||||
spacing: Style.spaceReal(2)
|
||||
|
||||
Text {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
text: root.name
|
||||
textFormat: Text.PlainText
|
||||
color: Color.foreground
|
||||
font.family: Style.font.family
|
||||
font.pixelSize: Style.font.bodySmall
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Text {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
visible: root.height > Style.spaceReal(44)
|
||||
text: root.monitor ? root.monitor.width + "x" + root.monitor.height : ""
|
||||
textFormat: Text.PlainText
|
||||
color: Util.alpha(Color.foreground, 0.7)
|
||||
font.family: Style.font.family
|
||||
font.pixelSize: Style.font.bodySmall
|
||||
}
|
||||
|
||||
Text {
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
visible: root.monitor && root.monitor.focused && root.height > Style.spaceReal(58)
|
||||
text: "focused"
|
||||
textFormat: Text.PlainText
|
||||
color: Color.blue
|
||||
font.family: Style.font.family
|
||||
font.pixelSize: Style.font.bodySmall
|
||||
}
|
||||
}
|
||||
|
||||
TapHandler {
|
||||
onTapped: root.picked()
|
||||
}
|
||||
|
||||
property int dragOriginX: 0
|
||||
property int dragOriginY: 0
|
||||
|
||||
DragHandler {
|
||||
id: drag
|
||||
target: null
|
||||
onActiveChanged: {
|
||||
if (active) {
|
||||
root.picked()
|
||||
root.dragOriginX = root.monitor ? root.monitor.x : 0
|
||||
root.dragOriginY = root.monitor ? root.monitor.y : 0
|
||||
return
|
||||
}
|
||||
root.dropped()
|
||||
}
|
||||
onTranslationChanged: {
|
||||
if (!active || !root.monitor) return
|
||||
root.moved(
|
||||
Math.round(root.dragOriginX + translation.x / root.canvasScale),
|
||||
Math.round(root.dragOriginY + translation.y / root.canvasScale))
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user