Widget Settings: load settings before triggering the loader to avoid async loading.
This commit is contained in:
parent
74ec5ea606
commit
4d7bc811c4
1 changed files with 35 additions and 27 deletions
|
|
@ -32,6 +32,40 @@ Popup {
|
||||||
border.width: Style.borderM * scaling
|
border.width: Style.borderM * scaling
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Load settings when popup opens with data
|
||||||
|
onOpened: {
|
||||||
|
if (widgetData && widgetId) {
|
||||||
|
loadWidgetSettings()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadWidgetSettings() {
|
||||||
|
const widgetSettingsMap = {
|
||||||
|
"ActiveWindow": "WidgetSettings/ActiveWindowSettings.qml",
|
||||||
|
"Battery": "WidgetSettings/BatterySettings.qml",
|
||||||
|
"Brightness": "WidgetSettings/BrightnessSettings.qml",
|
||||||
|
"Clock": "WidgetSettings/ClockSettings.qml",
|
||||||
|
"CustomButton": "WidgetSettings/CustomButtonSettings.qml",
|
||||||
|
"MediaMini": "WidgetSettings/MediaMiniSettings.qml",
|
||||||
|
"Microphone": "WidgetSettings/MicrophoneSettings.qml",
|
||||||
|
"NotificationHistory": "WidgetSettings/NotificationHistorySettings.qml",
|
||||||
|
"Workspace": "WidgetSettings/WorkspaceSettings.qml",
|
||||||
|
"SidePanelToggle": "WidgetSettings/SidePanelToggleSettings.qml",
|
||||||
|
"Spacer": "WidgetSettings/SpacerSettings.qml",
|
||||||
|
"SystemMonitor": "WidgetSettings/SystemMonitorSettings.qml",
|
||||||
|
"Volume": "WidgetSettings/VolumeSettings.qml"
|
||||||
|
}
|
||||||
|
|
||||||
|
const source = widgetSettingsMap[widgetId]
|
||||||
|
if (source) {
|
||||||
|
// Use setSource to pass properties at creation time
|
||||||
|
settingsLoader.setSource(source, {
|
||||||
|
"widgetData": widgetData,
|
||||||
|
"widgetMetadata": BarWidgetRegistry.widgetMetadata[widgetId]
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
id: content
|
id: content
|
||||||
width: parent.width
|
width: parent.width
|
||||||
|
|
@ -63,36 +97,10 @@ Popup {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Settings based on widget type
|
// Settings based on widget type
|
||||||
|
// Will be triggered via settingsLoader.setSource()
|
||||||
Loader {
|
Loader {
|
||||||
id: settingsLoader
|
id: settingsLoader
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
source: {
|
|
||||||
const widgetSettingsMap = {
|
|
||||||
"ActiveWindow": "WidgetSettings/ActiveWindowSettings.qml",
|
|
||||||
"Battery": "WidgetSettings/BatterySettings.qml",
|
|
||||||
"Brightness": "WidgetSettings/BrightnessSettings.qml",
|
|
||||||
"Clock": "WidgetSettings/ClockSettings.qml",
|
|
||||||
"CustomButton": "WidgetSettings/CustomButtonSettings.qml",
|
|
||||||
"MediaMini": "WidgetSettings/MediaMiniSettings.qml",
|
|
||||||
"Microphone": "WidgetSettings/MicrophoneSettings.qml",
|
|
||||||
"NotificationHistory": "WidgetSettings/NotificationHistorySettings.qml",
|
|
||||||
"Workspace": "WidgetSettings/WorkspaceSettings.qml",
|
|
||||||
"SidePanelToggle": "WidgetSettings/SidePanelToggleSettings.qml",
|
|
||||||
"Spacer": "WidgetSettings/SpacerSettings.qml",
|
|
||||||
"SystemMonitor": "WidgetSettings/SystemMonitorSettings.qml",
|
|
||||||
"Volume": "WidgetSettings/VolumeSettings.qml"
|
|
||||||
}
|
|
||||||
return widgetSettingsMap[settingsPopup.widgetId] || ""
|
|
||||||
}
|
|
||||||
|
|
||||||
onLoaded: {
|
|
||||||
if (item) {
|
|
||||||
// Pass data to the loaded component
|
|
||||||
item.widgetData = settingsPopup.widgetData
|
|
||||||
item.widgetMetadata = BarWidgetRegistry.widgetMetadata[settingsPopup.widgetId]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Action buttons
|
// Action buttons
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue