import QtQuick import qs.Common import qs.Modules.ControlCenter.Details Item { id: root property string expandedSection: "" property var expandedWidgetData: null height: active ? 250 : 0 visible: active readonly property bool active: expandedSection !== "" Behavior on height { NumberAnimation { duration: Theme.mediumDuration easing.type: Easing.OutCubic } } Loader { anchors.fill: parent anchors.topMargin: Theme.spacingS sourceComponent: { if (!root.active) return null if (expandedSection.startsWith("diskUsage_")) { return diskUsageDetailComponent } switch (expandedSection) { case "wifi": return networkDetailComponent case "bluetooth": return bluetoothDetailComponent case "audioOutput": return audioOutputDetailComponent case "audioInput": return audioInputDetailComponent case "battery": return batteryDetailComponent default: return null } } } Component { id: networkDetailComponent NetworkDetail {} } Component { id: bluetoothDetailComponent BluetoothDetail {} } Component { id: audioOutputDetailComponent AudioOutputDetail {} } Component { id: audioInputDetailComponent AudioInputDetail {} } Component { id: batteryDetailComponent BatteryDetail {} } Component { id: diskUsageDetailComponent DiskUsageDetail { currentMountPath: root.expandedWidgetData?.mountPath || "/" instanceId: root.expandedWidgetData?.instanceId || "" onMountPathChanged: (newMountPath) => { if (root.expandedWidgetData && root.expandedWidgetData.id === "diskUsage") { const widgets = SettingsData.controlCenterWidgets || [] const newWidgets = widgets.map(w => { if (w.id === "diskUsage" && w.instanceId === root.expandedWidgetData.instanceId) { const updatedWidget = Object.assign({}, w) updatedWidget.mountPath = newMountPath return updatedWidget } return w }) SettingsData.setControlCenterWidgets(newWidgets) } } } } }