add bluetooth menu (its fucked my lsp is dying
This commit is contained in:
parent
c0125912b1
commit
45646b6b5e
4 changed files with 122 additions and 10 deletions
|
|
@ -6,6 +6,7 @@ Singleton {
|
||||||
property string bell: "\u{E05d}"
|
property string bell: "\u{E05d}"
|
||||||
property string bellRing: "\u{E224}"
|
property string bellRing: "\u{E224}"
|
||||||
property string bluetooth: "\u{E060}"
|
property string bluetooth: "\u{E060}"
|
||||||
|
property string bluetoothConnected: "\u{E1b8}"
|
||||||
property string brickWall: "\u{E586}"
|
property string brickWall: "\u{E586}"
|
||||||
property string coffee: "\u{E09a}"
|
property string coffee: "\u{E09a}"
|
||||||
property string cpu: "\u{E0ad}"
|
property string cpu: "\u{E0ad}"
|
||||||
|
|
|
||||||
|
|
@ -1,29 +1,73 @@
|
||||||
|
pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
import qs.config
|
import qs.config
|
||||||
|
import qs.constants
|
||||||
|
import qs.services
|
||||||
import qs.styled
|
import qs.styled
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
import Quickshell.Bluetooth
|
import Quickshell.Widgets
|
||||||
|
|
||||||
StyledPopupWindow {
|
StyledPopupWindow {
|
||||||
id: root
|
id: root
|
||||||
|
|
||||||
backgroundColor: Theme.palette.base300
|
backgroundColor: Theme.palette.base300
|
||||||
margins: 8
|
margins: 16
|
||||||
radius: 8
|
radius: 8
|
||||||
|
|
||||||
property BluetoothAdapter defaultAdapter: Bluetooth.defaultAdapter
|
|
||||||
|
|
||||||
content: ColumnLayout {
|
content: ColumnLayout {
|
||||||
|
spacing: 8
|
||||||
|
WrapperRectangle {
|
||||||
|
margin: 16
|
||||||
|
color: Theme.palette.base200
|
||||||
|
radius: 8
|
||||||
|
Layout.fillWidth: true
|
||||||
RowLayout {
|
RowLayout {
|
||||||
StyledText {
|
StyledText {
|
||||||
text: root.defaultAdapter.name
|
text: "Bluetooth"
|
||||||
}
|
}
|
||||||
|
|
||||||
Switch {
|
Switch {
|
||||||
checked: root.defaultAdapter.enabled
|
checked: Bluetooth.defaultAdapter.enabled
|
||||||
onClicked: root.defaultAdapter.enabled = checked
|
onClicked: Bluetooth.defaultAdapter.enabled = checked
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WrapperRectangle {
|
||||||
|
margin: 16
|
||||||
|
color: Theme.palette.base200
|
||||||
|
radius: 8
|
||||||
|
ColumnLayout {
|
||||||
|
spacing: 8
|
||||||
|
|
||||||
|
StyledText {
|
||||||
|
font.bold: true
|
||||||
|
text: "Connected Devices"
|
||||||
|
}
|
||||||
|
|
||||||
|
DeviceList {
|
||||||
|
devices: Bluetooth.connectedDevices
|
||||||
|
}
|
||||||
|
|
||||||
|
StyledText {
|
||||||
|
font.bold: true
|
||||||
|
text: "Paired Devices"
|
||||||
|
}
|
||||||
|
|
||||||
|
DeviceList {
|
||||||
|
devices: Bluetooth.pairedDevices
|
||||||
|
}
|
||||||
|
|
||||||
|
StyledText {
|
||||||
|
font.bold: true
|
||||||
|
text: "Available Devices"
|
||||||
|
}
|
||||||
|
|
||||||
|
DeviceList {
|
||||||
|
devices: Bluetooth.availableDevices
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
46
modules/bar/components/bluetooth/DeviceList.qml
Normal file
46
modules/bar/components/bluetooth/DeviceList.qml
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
import qs.config
|
||||||
|
import qs.constants
|
||||||
|
import qs.services
|
||||||
|
import qs.styled
|
||||||
|
import QtQuick
|
||||||
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
id: root
|
||||||
|
required property var devices
|
||||||
|
|
||||||
|
Repeater {
|
||||||
|
model: devices
|
||||||
|
delegate: Clickable {
|
||||||
|
id: device
|
||||||
|
required property var modelData
|
||||||
|
|
||||||
|
implicitWidth: row.width
|
||||||
|
implicitHeight: row.height
|
||||||
|
Layout.fillWidth: true
|
||||||
|
|
||||||
|
RowLayout {
|
||||||
|
id: row
|
||||||
|
|
||||||
|
StyledText {
|
||||||
|
topPadding: 8
|
||||||
|
bottomPadding: 8
|
||||||
|
leftPadding: 8
|
||||||
|
text: device.modelData.deviceName
|
||||||
|
}
|
||||||
|
StyledText {
|
||||||
|
font.family: Theme.lucide.font.family
|
||||||
|
font.pixelSize: 10
|
||||||
|
font.bold: true
|
||||||
|
text: device.modelData.connected ? Icons.bluetoothConnected : Icons.bluetooth
|
||||||
|
|
||||||
|
topPadding: 8
|
||||||
|
bottomPadding: 8
|
||||||
|
rightPadding: 8
|
||||||
|
|
||||||
|
color: device.containsMouse ? Theme.palette.base300 : Theme.palette.basecontent
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
21
services/Bluetooth.qml
Normal file
21
services/Bluetooth.qml
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
pragma Singleton
|
||||||
|
|
||||||
|
import Quickshell
|
||||||
|
import Quickshell.Bluetooth
|
||||||
|
|
||||||
|
Singleton {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
property BluetoothAdapter defaultAdapter: Bluetooth.defaultAdapter
|
||||||
|
property list<BluetoothDevice> connectedDevices: defaultAdapter.devices.values.filter(device => device.connected)
|
||||||
|
property list<BluetoothDevice> pairedDevices: defaultAdapter.devices.values.filter(device => device.paired)
|
||||||
|
property list<BluetoothDevice> availableDevices: defaultAdapter.devices.values.filter(device => !device.paired)
|
||||||
|
|
||||||
|
function isConnected(BluetoothDevice: device) {
|
||||||
|
return device.state == BluetoothDeviceState.Connected;
|
||||||
|
}
|
||||||
|
|
||||||
|
function isConnecting(BluetoothDevice: device) {
|
||||||
|
return device.state == BluetoothDeviceState.Connecting;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Reference in a new issue