diff --git a/modules/bar/components/bluetooth/AvailableDevice.qml b/modules/bar/components/bluetooth/AvailableDevice.qml index 51a54f4..df0c85f 100644 --- a/modules/bar/components/bluetooth/AvailableDevice.qml +++ b/modules/bar/components/bluetooth/AvailableDevice.qml @@ -10,7 +10,7 @@ import Quickshell.Widgets StyledLabel { id: root - property BluetoothDevice device + required property BluetoothDevice modelData RowLayout { id: row @@ -18,20 +18,20 @@ StyledLabel { spacing: 8 Loader { - active: root.device?.icon != undefined + active: root.modelData?.icon != undefined sourceComponent: IconImage { implicitSize: 22 - source: Quickshell.iconPath(root.device.icon, "device-support-unknown-symbolic") + source: Quickshell.iconPath(root.modelData.icon, "device-support-unknown-symbolic") } } StyledText { - text: root.device.deviceName + text: root.modelData.deviceName } StyledButton { Layout.alignment: Qt.AlignRight - hoverEnabled: !root.device.pairing + hoverEnabled: !root.modelData.pairing color: containsMouse ? Theme.palette.primary : Theme.palette.base200 content: StyledText { text: 'Pair' @@ -41,8 +41,8 @@ StyledLabel { if (!hoverEnabled) { return; } - root.device.trusted = true; - root.device.pair(); + root.modelData.trusted = true; + root.modelData.pair(); } } } diff --git a/modules/bar/components/bluetooth/BluetoothMenu.qml b/modules/bar/components/bluetooth/BluetoothMenu.qml index 90186c8..1e6aad4 100644 --- a/modules/bar/components/bluetooth/BluetoothMenu.qml +++ b/modules/bar/components/bluetooth/BluetoothMenu.qml @@ -42,7 +42,8 @@ StyledPopupWindow { Switch { checked: Bluetooth.defaultAdapter.discovering - onClicked: Bluetooth.defaultAdapter.discovering = checked + onClicked: Bluetooth.defaultAdapter.discovering = true; + } } } @@ -56,89 +57,44 @@ StyledPopupWindow { spacing: 8 StyledText { - Layout.topMargin: 8 Layout.minimumWidth: 320 font.bold: true - font.pixelSize: 14 text: "Connected Devices" } ColumnLayout { - Loader { - active: Bluetooth.connectedDevices.length == 0 - sourceComponent: StyledText { - font.italic: true - text: "No devices connected..." - } - } Repeater { model: Bluetooth.connectedDevices - delegate: Loader { - id: connectedDeviceLoader - required property var modelData + delegate: ConnectedDevice { Layout.fillWidth: true - active: modelData != null - sourceComponent: ConnectedDevice { - device: connectedDeviceLoader.modelData - } } } } StyledText { - Layout.topMargin: 8 font.bold: true - font.pixelSize: 14 text: "Paired Devices" } ColumnLayout { - Loader { - active: Bluetooth.availableDevices.length == 0 - sourceComponent: StyledText { - font.italic: true - text: "No paired devices..." - } - } Repeater { model: Bluetooth.pairedDevices - delegate: Loader { - id: pairedDeviceLoader - required property var modelData + delegate: PairedDevice { Layout.fillWidth: true - active: modelData != null - sourceComponent: PairedDevice { - device: pairedDeviceLoader.modelData - } } } } StyledText { - Layout.topMargin: 8 font.bold: true - font.pixelSize: 14 text: "Available Devices" } ColumnLayout { - Loader { - active: Bluetooth.availableDevices.length == 0 - sourceComponent: StyledText { - font.italic: true - text: Bluetooth.defaultAdapter.discovering ? "No devices found..." : "Scan to find devices..." - } - } Repeater { model: Bluetooth.availableDevices - delegate: Loader { - id: availableDeviceLoader - required property var modelData + delegate: AvailableDevice { Layout.fillWidth: true - active: modelData != null - sourceComponent: AvailableDevice { - device: availableDeviceLoader.modelData - } } } } diff --git a/modules/bar/components/bluetooth/ConnectedDevice.qml b/modules/bar/components/bluetooth/ConnectedDevice.qml index 0c46886..ed23fd6 100644 --- a/modules/bar/components/bluetooth/ConnectedDevice.qml +++ b/modules/bar/components/bluetooth/ConnectedDevice.qml @@ -11,7 +11,7 @@ import Quickshell.Widgets StyledLabel { id: root - required property BluetoothDevice device + required property BluetoothDevice modelData RowLayout { id: row @@ -19,19 +19,19 @@ StyledLabel { spacing: 8 Loader { - active: root.device?.icon != undefined + active: root.modelData?.icon != undefined sourceComponent: IconImage { implicitSize: 22 - source: Quickshell.iconPath(root.device.icon, "device-support-unknown-symbolic") + source: Quickshell.iconPath(root.modelData.icon, "device-support-unknown-symbolic") } } StyledText { - text: root.device.deviceName + text: root.modelData.deviceName } Loader { - active: root.device.batteryAvailable + active: root.modelData.batteryAvailable sourceComponent: RowLayout { StyledText { id: icon @@ -42,11 +42,11 @@ StyledLabel { states: [ State { name: "full" - when: root.device.battery > 0.66 + when: root.modelData.battery > 0.66 }, State { name: "medium" - when: root.device.battery > 0.33 + when: root.modelData.battery > 0.33 PropertyChanges { icon { text: Icons.batteryFull @@ -55,7 +55,7 @@ StyledLabel { }, State { name: "low" - when: root.device.battery > 0.10 + when: root.modelData.battery > 0.10 PropertyChanges { icon { text: Icons.batteryFull @@ -64,7 +64,7 @@ StyledLabel { }, State { name: "critical" - when: root.device.battery > 0.10 + when: root.modelData.battery > 0.10 PropertyChanges { icon { text: Icons.batteryWarning @@ -85,10 +85,10 @@ StyledLabel { font.pixelSize: 12 } onClicked: { - if (root.device.state != BluetoothDeviceState.Connected) { + if (root.modelData.state != BluetoothDeviceState.Connected) { return; } - root.device.connected = false; + root.modelData.connected = false; } } } diff --git a/modules/bar/components/bluetooth/PairedDevice.qml b/modules/bar/components/bluetooth/PairedDevice.qml index b2979ee..aa479b3 100644 --- a/modules/bar/components/bluetooth/PairedDevice.qml +++ b/modules/bar/components/bluetooth/PairedDevice.qml @@ -10,7 +10,7 @@ import Quickshell.Widgets StyledLabel { id: root - required property BluetoothDevice device + required property BluetoothDevice modelData RowLayout { id: row @@ -18,21 +18,21 @@ StyledLabel { spacing: 8 Loader { - active: root.device?.icon != undefined + active: root.modelData?.icon != undefined sourceComponent: IconImage { implicitSize: 22 - source: Quickshell.iconPath(root.device.icon, "device-support-unknown-symbolic") + source: Quickshell.iconPath(root.modelData.icon, "device-support-unknown-symbolic") } } StyledText { - text: root.device.deviceName + text: root.modelData.deviceName } RowLayout { Layout.alignment: Qt.AlignRight StyledButton { - hoverEnabled: root.device.state == BluetoothDeviceState.Disconnected + hoverEnabled: root.modelData.state == BluetoothDeviceState.Disconnected color: containsMouse ? Theme.palette.primary : Theme.palette.base200 content: StyledText { text: 'Connect' @@ -42,12 +42,12 @@ StyledLabel { if (!hoverEnabled) { return; } - root.device.connect(); + root.modelData.connect(); } } StyledButton { - hoverEnabled: root.device.state == BluetoothDeviceState.Disconnected + hoverEnabled: root.modelData.state == BluetoothDeviceState.Disconnected color: containsMouse ? Theme.palette.error : Theme.palette.base200 content: StyledText { text: 'Unpair' @@ -57,7 +57,7 @@ StyledLabel { if (!hoverEnabled) { return; } - root.device.forget(); + root.modelData.forget(); } } } diff --git a/widgets/StyledPopupWindow.qml b/widgets/StyledPopupWindow.qml index 924001a..f409be8 100644 --- a/widgets/StyledPopupWindow.qml +++ b/widgets/StyledPopupWindow.qml @@ -14,17 +14,7 @@ PopupWindow { color: "transparent" implicitWidth: background.width - Behavior on implicitWidth { - NumberAnimation { - duration: 100 - } - } implicitHeight: background.height - Behavior on implicitHeight { - NumberAnimation { - duration: 100 - } - } WrapperRectangle { id: background