dcontent: fix bt fab menu

Fix changing state making animation fail
This commit is contained in:
2 * r + 2 * t 2025-08-03 19:21:44 +10:00
parent fe4e72eab3
commit d21d80de9a

View file

@ -8,7 +8,6 @@ import qs.utils
import Quickshell.Bluetooth import Quickshell.Bluetooth
import QtQuick import QtQuick
import QtQuick.Layouts import QtQuick.Layouts
import QtQuick.Effects
Item { Item {
id: root id: root
@ -107,33 +106,24 @@ Item {
Repeater { Repeater {
id: fabMenu id: fabMenu
model: [ model: ListModel {
{ ListElement {
icon: "handshake", name: "trust"
label: root.device.trusted ? qsTr("Untrust") : qsTr("Trust"), icon: "handshake"
onClicked: () => root.device.trusted = !root.device.trusted }
}, ListElement {
{ name: "block"
icon: "block", icon: "block"
label: root.device.blocked ? qsTr("Unblock") : qsTr("Block"), }
onClicked: () => root.device.blocked = !root.device.blocked ListElement {
}, name: "pair"
{ icon: "missing_controller"
icon: "missing_controller", }
label: root.device.paired ? qsTr("Unpair") : qsTr("Pair"), ListElement {
onClicked: () => { name: "connect"
if (root.device.paired) icon: "bluetooth_connected"
root.device.forget();
else
root.device.pair();
} }
},
{
icon: "bluetooth_connected",
label: root.device.connected ? qsTr("Disconnect") : qsTr("Connect"),
onClicked: () => root.device.connected = !root.device.connected
} }
]
StyledClippingRect { StyledClippingRect {
id: fabMenuItem id: fabMenuItem
@ -207,7 +197,14 @@ Item {
StateLayer { StateLayer {
function onClicked(): void { function onClicked(): void {
root.session.bt.fabMenuOpen = false; root.session.bt.fabMenuOpen = false;
fabMenuItem.modelData.onClicked();
const name = fabMenuItem.modelData.name;
if (fabMenuItem.modelData.name !== "pair")
root.device[`${name}ed`] = !root.device[`${name}ed`];
else if (root.device.paired)
root.device.forget();
else
root.device.pair();
} }
} }
@ -225,8 +222,17 @@ Item {
} }
StyledText { StyledText {
text: fabMenuItem.modelData.label animate: true
text: (root.device[`${fabMenuItem.modelData.name}ed`] ? fabMenuItem.modelData.name === "connect" ? "dis" : "un" : "") + fabMenuItem.modelData.name
color: Colours.palette.m3onPrimaryContainer color: Colours.palette.m3onPrimaryContainer
font.capitalization: Font.Capitalize
Layout.preferredWidth: implicitWidth
Behavior on Layout.preferredWidth {
Anim {
duration: Appearance.anim.durations.small
}
}
} }
} }
} }