mirror of
https://github.com/belsabbagh/dotfiles.git
synced 2026-04-11 09:36:46 +00:00
92 lines
2.5 KiB
QML
92 lines
2.5 KiB
QML
import qs.config
|
|
import qs.modules.components
|
|
import qs.services
|
|
import QtQuick
|
|
import Quickshell
|
|
import QtQuick.Layouts
|
|
|
|
StyledRect {
|
|
id: root
|
|
width: 200
|
|
height: 80
|
|
radius: Metrics.radius("verylarge")
|
|
color: Appearance.m3colors.m3surfaceContainerHigh
|
|
|
|
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
|
|
|
|
readonly property bool adapterPresent: Bluetooth.defaultAdapter !== null
|
|
readonly property bool enabled: Bluetooth.defaultAdapter?.enabled ?? false
|
|
readonly property var activeDevice: Bluetooth.activeDevice
|
|
|
|
readonly property string iconName: Bluetooth.icon
|
|
|
|
readonly property string statusText: {
|
|
if (!adapterPresent)
|
|
return "No adapter";
|
|
if (!enabled)
|
|
return "Disabled";
|
|
if (activeDevice)
|
|
return activeDevice.name;
|
|
return Bluetooth.defaultAdapter.discovering
|
|
? "Scanning…"
|
|
: "Enabled";
|
|
}
|
|
|
|
StyledRect {
|
|
id: iconBg
|
|
width: 50
|
|
height: 50
|
|
radius: Metrics.radius("verylarge")
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
anchors.left: parent.left
|
|
anchors.leftMargin: Metrics.margin("small")
|
|
|
|
color: {
|
|
if (!enabled)
|
|
return Appearance.m3colors.m3surfaceContainerHigh;
|
|
if (activeDevice)
|
|
return Appearance.m3colors.m3primaryContainer;
|
|
return Appearance.m3colors.m3secondaryContainer;
|
|
}
|
|
|
|
MaterialSymbol {
|
|
anchors.centerIn: parent
|
|
iconSize: Metrics.iconSize(35)
|
|
icon: iconName
|
|
}
|
|
}
|
|
|
|
Column {
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
anchors.left: iconBg.right
|
|
anchors.leftMargin: Metrics.margin("small")
|
|
spacing: Metrics.spacing(2)
|
|
|
|
StyledText {
|
|
text: "Bluetooth"
|
|
font.pixelSize: Metrics.fontSize("large")
|
|
elide: Text.ElideRight
|
|
width: root.width - iconBg.width - 30
|
|
}
|
|
|
|
StyledText {
|
|
text: statusText
|
|
font.pixelSize: Metrics.fontSize("small")
|
|
color: Appearance.m3colors.m3onSurfaceVariant
|
|
elide: Text.ElideRight
|
|
width: root.width - iconBg.width - 30
|
|
}
|
|
}
|
|
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
onClicked: {
|
|
if (!adapterPresent)
|
|
return;
|
|
|
|
Bluetooth.defaultAdapter.enabled =
|
|
!Bluetooth.defaultAdapter.enabled;
|
|
}
|
|
}
|
|
}
|