76 lines
2.1 KiB
QML
76 lines
2.1 KiB
QML
import QtQuick
|
|
import qs.config
|
|
|
|
Item {
|
|
id: root
|
|
|
|
required property var entity
|
|
signal addRequested(string id)
|
|
|
|
width: parent ? parent.width : 620
|
|
implicitHeight: 62
|
|
|
|
Column {
|
|
anchors.left: parent.left
|
|
anchors.right: stateCopy.left
|
|
anchors.rightMargin: 16
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
spacing: 3
|
|
|
|
Text {
|
|
width: parent.width
|
|
text: root.entity.sourceName
|
|
color: Theme.fg
|
|
font.family: Theme.fontFamily
|
|
font.pixelSize: Theme.fontSize
|
|
font.weight: Font.Medium
|
|
elide: Text.ElideRight
|
|
}
|
|
|
|
Text {
|
|
width: parent.width
|
|
text: root.entity.id
|
|
color: Theme.fgDim
|
|
font.family: Theme.fontFamily
|
|
font.pixelSize: Theme.fontSizeSmall
|
|
elide: Text.ElideMiddle
|
|
}
|
|
}
|
|
|
|
Text {
|
|
id: stateCopy
|
|
anchors.right: addButton.left
|
|
anchors.rightMargin: 14
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
width: 92
|
|
text: root.entity.available === false ? "Unavailable" : String(root.entity.state || "Unknown")
|
|
color: root.entity.available === false ? Theme.fgMuted : Theme.fgDim
|
|
font.family: Theme.fontFamily
|
|
font.pixelSize: Theme.fontSizeSmall
|
|
horizontalAlignment: Text.AlignRight
|
|
elide: Text.ElideRight
|
|
}
|
|
|
|
SettingsButton {
|
|
id: addButton
|
|
anchors.right: parent.right
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
text: "Add"
|
|
tone: "accent"
|
|
activeFocusOnTab: true
|
|
border.width: activeFocus ? 2 : 0
|
|
border.color: activeFocus ? Theme.fg : Theme.alpha(Theme.fg, 0)
|
|
onClicked: root.addRequested(root.entity.id)
|
|
Keys.onReturnPressed: root.addRequested(root.entity.id)
|
|
Keys.onSpacePressed: root.addRequested(root.entity.id)
|
|
}
|
|
|
|
Rectangle {
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
anchors.bottom: parent.bottom
|
|
height: 1
|
|
color: Theme.alpha(Theme.fg, 0.06)
|
|
}
|
|
}
|