diff --git a/modules/controlcenter/Session.qml b/modules/controlcenter/Session.qml index 6f560f5e..5d7b0942 100644 --- a/modules/controlcenter/Session.qml +++ b/modules/controlcenter/Session.qml @@ -1,5 +1,5 @@ -import Quickshell.Bluetooth import QtQuick +import "./state" QtObject { readonly property list panes: ["network", "bluetooth", "audio", "appearance", "taskbar", "launcher"] @@ -10,33 +10,12 @@ QtObject { property int activeIndex: 0 property bool navExpanded: false - readonly property Bt bt: Bt {} - readonly property Network network: Network {} - readonly property Ethernet ethernet: Ethernet {} - readonly property Launcher launcher: Launcher {} + // Pane-specific state objects + readonly property BluetoothState bt: BluetoothState {} + readonly property NetworkState network: NetworkState {} + readonly property EthernetState ethernet: EthernetState {} + readonly property LauncherState launcher: LauncherState {} onActiveChanged: activeIndex = panes.indexOf(active) onActiveIndexChanged: active = panes[activeIndex] - - component Bt: QtObject { - property BluetoothDevice active - property BluetoothAdapter currentAdapter: Bluetooth.defaultAdapter - property bool editingAdapterName - property bool fabMenuOpen - property bool editingDeviceName - } - - component Network: QtObject { - property var active - property bool showPasswordDialog: false - property var pendingNetwork - } - - component Ethernet: QtObject { - property var active - } - - component Launcher: QtObject { - property var active - } } diff --git a/modules/controlcenter/state/BluetoothState.qml b/modules/controlcenter/state/BluetoothState.qml new file mode 100644 index 00000000..db8c7e12 --- /dev/null +++ b/modules/controlcenter/state/BluetoothState.qml @@ -0,0 +1,18 @@ +import Quickshell.Bluetooth +import QtQuick + +QtObject { + id: root + + // Active selected device + property BluetoothDevice active: null + + // Current adapter being used + property BluetoothAdapter currentAdapter: Bluetooth.defaultAdapter + + // UI state flags + property bool editingAdapterName: false + property bool fabMenuOpen: false + property bool editingDeviceName: false +} + diff --git a/modules/controlcenter/state/EthernetState.qml b/modules/controlcenter/state/EthernetState.qml new file mode 100644 index 00000000..25b243a1 --- /dev/null +++ b/modules/controlcenter/state/EthernetState.qml @@ -0,0 +1,9 @@ +import QtQuick + +QtObject { + id: root + + // Active selected ethernet interface + property var active: null +} + diff --git a/modules/controlcenter/state/LauncherState.qml b/modules/controlcenter/state/LauncherState.qml new file mode 100644 index 00000000..cd9eeb6a --- /dev/null +++ b/modules/controlcenter/state/LauncherState.qml @@ -0,0 +1,9 @@ +import QtQuick + +QtObject { + id: root + + // Active selected application + property var active: null +} + diff --git a/modules/controlcenter/state/NetworkState.qml b/modules/controlcenter/state/NetworkState.qml new file mode 100644 index 00000000..651a35cd --- /dev/null +++ b/modules/controlcenter/state/NetworkState.qml @@ -0,0 +1,13 @@ +import QtQuick + +QtObject { + id: root + + // Active selected wireless network + property var active: null + + // Password dialog state + property bool showPasswordDialog: false + property var pendingNetwork: null +} +