SetupWizard: ensure setuoCompleted is always being saved

This commit is contained in:
Ly-sec
2025-11-22 12:46:22 +01:00
parent 823042b245
commit 48c5435cef
2 changed files with 54 additions and 14 deletions
+53 -14
View File
@@ -24,11 +24,24 @@ SmartPanel {
property int currentStep: 0
property int totalSteps: 5
property bool isCompleting: false
onOpened: function () {
selectedScaleRatio = Settings.data.general.scaleRatio;
selectedBarPosition = Settings.data.bar.position;
selectedWallpaperDirectory = Settings.data.wallpaper.directory || Settings.defaultWallpapersDirectory;
isCompleting = false;
}
Connections {
target: Settings
function onSettingsSaved() {
if (isCompleting) {
Logger.i("SetupWizard", "Settings saved, closing panel");
isCompleting = false;
root.close();
}
}
}
// Setup wizard data
@@ -366,24 +379,50 @@ SmartPanel {
}
function completeSetup() {
Logger.i("SetupWizard", "Completing setup with selected options");
if (selectedWallpaperDirectory !== Settings.data.wallpaper.directory) {
Settings.data.wallpaper.directory = selectedWallpaperDirectory;
WallpaperService.refreshWallpapersList();
if (isCompleting) {
Logger.w("SetupWizard", "completeSetup() called while already completing, ignoring");
return;
}
if (selectedWallpaper !== "") {
WallpaperService.changeWallpaper(selectedWallpaper, undefined);
try {
Logger.i("SetupWizard", "Completing setup with selected options");
isCompleting = true;
if (selectedWallpaperDirectory !== Settings.data.wallpaper.directory) {
Settings.data.wallpaper.directory = selectedWallpaperDirectory;
WallpaperService.refreshWallpapersList();
}
if (selectedWallpaper !== "") {
WallpaperService.changeWallpaper(selectedWallpaper, undefined);
}
Settings.data.general.scaleRatio = selectedScaleRatio;
Settings.data.bar.position = selectedBarPosition;
Settings.data.setupCompleted = true;
// Save settings immediately and wait for settingsSaved signal before closing
Settings.saveImmediate();
Logger.i("SetupWizard", "Setup completed successfully, waiting for settings save confirmation");
// Fallback: if settingsSaved signal doesn't fire within 2 seconds, close anyway
closeTimer.start();
} catch (error) {
Logger.e("SetupWizard", "Error completing setup:", error);
isCompleting = false;
}
}
Settings.data.general.scaleRatio = selectedScaleRatio;
Settings.data.bar.position = selectedBarPosition;
Settings.data.setupCompleted = true;
Settings.saveImmediate();
Logger.i("SetupWizard", "Setup completed successfully");
root.close();
Timer {
id: closeTimer
interval: 2000
onTriggered: {
if (isCompleting) {
Logger.w("SetupWizard", "Settings save timeout, closing panel anyway");
isCompleting = false;
root.close();
}
}
}
function applyWallpaperSettings() {
+1
View File
@@ -134,6 +134,7 @@ ShellRoot {
setupWizardTimer.start();
} else {
Settings.data.setupCompleted = true;
Settings.saveImmediate();
}
}