mirror of
https://github.com/arthur-pbty/arthur-os.git
synced 2026-08-06 12:39:35 +02:00
- Scan and Manage are now small icon-only buttons in the header beside the On/Off pill, with hover tooltips via the new PillButton.tooltipText prop (backed by QtQuick.Controls ToolTip). - New discoveredDevices list pulls everything in Bluetooth.devices that isn't paired/connected/bonded/trusted. While scanning, those appear under a 'Discovered' header. Click pairs and connects. - Empty-state text only shows when there are no known and no discovered devices, otherwise it would push down real entries.
73 lines
2.0 KiB
QML
73 lines
2.0 KiB
QML
import QtQuick
|
|
import QtQuick.Controls
|
|
|
|
Rectangle {
|
|
id: root
|
|
|
|
property string text: ""
|
|
property string iconText: ""
|
|
property string tooltipText: ""
|
|
property color foreground: "#cacccc"
|
|
property color background: "transparent"
|
|
property color hoverBackground: Qt.rgba(foreground.r, foreground.g, foreground.b, 0.12)
|
|
property color pressedBackground: Qt.rgba(foreground.r, foreground.g, foreground.b, 0.22)
|
|
property string fontFamily: "JetBrainsMono Nerd Font"
|
|
property real fontSize: 12
|
|
property real iconSize: 14
|
|
property real horizontalPadding: 10
|
|
property real verticalPadding: 6
|
|
property bool active: false
|
|
property color activeBackground: Qt.rgba(foreground.r, foreground.g, foreground.b, 0.18)
|
|
|
|
ToolTip.visible: tooltipText !== "" && mouseArea.containsMouse
|
|
ToolTip.text: tooltipText
|
|
ToolTip.delay: 400
|
|
|
|
signal clicked()
|
|
signal rightClicked()
|
|
|
|
implicitWidth: row.implicitWidth + horizontalPadding * 2
|
|
implicitHeight: row.implicitHeight + verticalPadding * 2
|
|
radius: 4
|
|
color: mouseArea.pressed ? pressedBackground : (mouseArea.containsMouse ? hoverBackground : (active ? activeBackground : background))
|
|
|
|
Behavior on color {
|
|
ColorAnimation { duration: 120 }
|
|
}
|
|
|
|
Row {
|
|
id: row
|
|
anchors.centerIn: parent
|
|
spacing: 8
|
|
|
|
Text {
|
|
visible: root.iconText !== ""
|
|
text: root.iconText
|
|
color: root.foreground
|
|
font.family: root.fontFamily
|
|
font.pixelSize: root.iconSize
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
}
|
|
|
|
Text {
|
|
visible: root.text !== ""
|
|
text: root.text
|
|
color: root.foreground
|
|
font.family: root.fontFamily
|
|
font.pixelSize: root.fontSize
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
}
|
|
}
|
|
|
|
MouseArea {
|
|
id: mouseArea
|
|
anchors.fill: parent
|
|
hoverEnabled: true
|
|
acceptedButtons: Qt.LeftButton | Qt.RightButton
|
|
onClicked: function(mouse) {
|
|
if (mouse.button === Qt.RightButton) root.rightClicked()
|
|
else root.clicked()
|
|
}
|
|
}
|
|
}
|