mirror of
https://github.com/belsabbagh/dotfiles.git
synced 2026-04-11 09:36:46 +00:00
188 lines
5.4 KiB
QML
188 lines
5.4 KiB
QML
import QtQuick
|
|
import QtQuick.Layouts
|
|
import qs.config
|
|
import qs.modules.components
|
|
import qs.modules.functions
|
|
import qs.services
|
|
import Quickshell.Bluetooth as QsBluetooth
|
|
|
|
ContentMenu {
|
|
title: "Bluetooth"
|
|
description: "Manage Bluetooth devices and connections."
|
|
|
|
ContentCard {
|
|
ContentRowCard {
|
|
cardSpacing: Metrics.spacing(0)
|
|
verticalPadding: Bluetooth.defaultAdapter.enabled ? Metrics.padding(10) : Metrics.padding(0)
|
|
cardMargin: Metrics.margin(0)
|
|
|
|
StyledText {
|
|
text: powerSwitch.checked ? "Power: On" : "Power: Off"
|
|
font.pixelSize: Metrics.fontSize(16)
|
|
font.bold: true
|
|
}
|
|
|
|
Item { Layout.fillWidth: true }
|
|
|
|
StyledSwitch {
|
|
id: powerSwitch
|
|
checked: Bluetooth.defaultAdapter?.enabled
|
|
onToggled: Bluetooth.defaultAdapter.enabled = checked
|
|
}
|
|
}
|
|
|
|
ContentRowCard {
|
|
visible: Bluetooth.defaultAdapter.enabled
|
|
cardSpacing: Metrics.spacing(0)
|
|
verticalPadding: Metrics.padding(10)
|
|
cardMargin: Metrics.margin(0)
|
|
|
|
ColumnLayout {
|
|
spacing: Metrics.spacing(2)
|
|
|
|
StyledText {
|
|
text: "Discoverable"
|
|
font.pixelSize: Metrics.fontSize(16)
|
|
}
|
|
|
|
StyledText {
|
|
text: "Allow other devices to find this computer."
|
|
font.pixelSize: Metrics.fontSize(12)
|
|
color: ColorUtils.transparentize(Appearance.m3colors.m3onSurface, 0.6)
|
|
}
|
|
}
|
|
|
|
Item { Layout.fillWidth: true }
|
|
|
|
StyledSwitch {
|
|
checked: Bluetooth.defaultAdapter?.discoverable
|
|
onToggled: Bluetooth.defaultAdapter.discoverable = checked
|
|
}
|
|
}
|
|
|
|
ContentRowCard {
|
|
visible: Bluetooth.defaultAdapter.enabled
|
|
cardSpacing: Metrics.spacing(0)
|
|
verticalPadding: Metrics.padding(0)
|
|
cardMargin: Metrics.margin(0)
|
|
|
|
ColumnLayout {
|
|
spacing: Metrics.spacing(2)
|
|
|
|
StyledText {
|
|
text: "Scanning"
|
|
font.pixelSize: Metrics.fontSize(16)
|
|
}
|
|
|
|
StyledText {
|
|
text: "Search for nearby Bluetooth devices."
|
|
font.pixelSize: Metrics.fontSize(12)
|
|
color: ColorUtils.transparentize(Appearance.m3colors.m3onSurface, 0.6)
|
|
}
|
|
}
|
|
|
|
Item { Layout.fillWidth: true }
|
|
|
|
StyledSwitch {
|
|
checked: Bluetooth.defaultAdapter?.discovering
|
|
onToggled: Bluetooth.defaultAdapter.discovering = checked
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentCard {
|
|
visible: connectedDevices.count > 0
|
|
|
|
StyledText {
|
|
text: "Connected Devices"
|
|
font.pixelSize: Metrics.fontSize(18)
|
|
font.bold: true
|
|
}
|
|
|
|
Repeater {
|
|
id: connectedDevices
|
|
model: Bluetooth.devices.filter(d => d.connected)
|
|
|
|
delegate: BluetoothDeviceCard {
|
|
device: modelData
|
|
statusText: modelData.batteryAvailable
|
|
? "Connected, " + Math.floor(modelData.battery * 100) + "% left"
|
|
: "Connected"
|
|
showDisconnect: true
|
|
showRemove: true
|
|
usePrimary: true
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentCard {
|
|
visible: Bluetooth.defaultAdapter?.enabled
|
|
|
|
StyledText {
|
|
text: "Paired Devices"
|
|
font.pixelSize: Metrics.fontSize(18)
|
|
font.bold: true
|
|
}
|
|
|
|
Item {
|
|
visible: pairedDevices.count === 0
|
|
width: parent.width
|
|
height: Metrics.spacing(40)
|
|
|
|
StyledText {
|
|
anchors.left: parent.left
|
|
text: "No paired devices"
|
|
font.pixelSize: Metrics.fontSize(14)
|
|
color: ColorUtils.transparentize(Appearance.m3colors.m3onSurface, 0.6)
|
|
}
|
|
}
|
|
|
|
Repeater {
|
|
id: pairedDevices
|
|
model: Bluetooth.devices.filter(d => !d.connected && d.paired)
|
|
|
|
delegate: BluetoothDeviceCard {
|
|
device: modelData
|
|
statusText: "Not connected"
|
|
showConnect: true
|
|
showRemove: true
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentCard {
|
|
visible: Bluetooth.defaultAdapter?.enabled
|
|
|
|
StyledText {
|
|
text: "Available Devices"
|
|
font.pixelSize: Metrics.fontSize(18)
|
|
font.bold: true
|
|
}
|
|
|
|
Item {
|
|
visible: discoveredDevices.count === 0 && !Bluetooth.defaultAdapter.discovering
|
|
width: parent.width
|
|
height: Metrics.spacing(40)
|
|
|
|
StyledText {
|
|
Layout.alignment: Qt.AlignHCenter
|
|
text: "No new devices found"
|
|
font.pixelSize: Metrics.fontSize(14)
|
|
color: ColorUtils.transparentize(Appearance.m3colors.m3onSurface, 0.6)
|
|
}
|
|
}
|
|
|
|
Repeater {
|
|
id: discoveredDevices
|
|
model: Bluetooth.devices.filter(d => !d.paired && !d.connected)
|
|
|
|
delegate: BluetoothDeviceCard {
|
|
device: modelData
|
|
statusText: "Discovered"
|
|
showConnect: true
|
|
showPair: true
|
|
}
|
|
}
|
|
}
|
|
}
|