From 3271fa1d23710c8a45cea3ebdc54c88f1e96b081 Mon Sep 17 00:00:00 2001 From: LemmyCook Date: Mon, 8 Sep 2025 08:39:56 -0400 Subject: [PATCH] Init: better widget upgrading process + less warnings when starting up without config or cache --- Commons/Color.qml | 5 ++-- Commons/Settings.qml | 49 ++++++++++++++++--------------- Modules/Background/Background.qml | 2 -- Services/LocationService.qml | 1 + Services/NetworkService.qml | 1 + Services/NotificationService.qml | 1 + 6 files changed, 32 insertions(+), 27 deletions(-) diff --git a/Commons/Color.qml b/Commons/Color.qml index 7abc21f..7d1dc68 100644 --- a/Commons/Color.qml +++ b/Commons/Color.qml @@ -102,7 +102,8 @@ Singleton { // FileView to load custom colors data from colors.json FileView { id: customColorsFile - path: Settings.directoriesCreated ? (Settings.configDir + "colors.json") : "" + path: Settings.directoriesCreated ? (Settings.configDir + "colors.json") : undefined + printErrors: false watchChanges: true onFileChanged: { Logger.log("Color", "Reloading colors from disk") @@ -115,7 +116,7 @@ Singleton { // Trigger initial load when path changes from empty to actual path onPathChanged: { - if (path === Settings.configDir + "colors.json") { + if (path !== undefined) { reload() } } diff --git a/Commons/Settings.qml b/Commons/Settings.qml index c6dbe3c..ba90c45 100644 --- a/Commons/Settings.qml +++ b/Commons/Settings.qml @@ -105,22 +105,19 @@ Singleton { continue } - // Check that the widget was not previously migrated and skip if necessary - const keys = Object.keys(widget) - if (keys.length > 1) { - continue + if (upgradeWidget(widget)) { + Logger.log("Settings", `Upgraded ${widget.id} widget:`, JSON.stringify(widget)) } - - migrateWidget(widget) - Logger.log("Settings", JSON.stringify(widget)) } } } // ----------------------------------------------------- - function migrateWidget(widget) { - Logger.log("Settings", `Migrating '${widget.id}' widget`) + function upgradeWidget(widget) { + // Backup the widget definition before altering + const widgetBefore = JSON.stringify(widget) + // Migrate old bar settings to proper per widget settings switch (widget.id) { case "ActiveWindow": widget.showIcon = adapter.bar.showActiveWindowIcon @@ -128,23 +125,14 @@ Singleton { case "Battery": widget.alwaysShowPercentage = adapter.bar.alwaysShowBatteryPercentage break - case "Brightness": - widget.alwaysShowPercentage = BarWidgetRegistry.widgetMetadata[widget.id].alwaysShowPercentage - break case "Clock": widget.showDate = adapter.location.showDateWithClock widget.use12HourClock = adapter.location.use12HourClock widget.reverseDayMonth = adapter.location.reverseDayMonth - widget.showSeconds = BarWidgetRegistry.widgetMetadata[widget.id].showSeconds break case "MediaMini": widget.showAlbumArt = adapter.audio.showMiniplayerAlbumArt widget.showVisualizer = adapter.audio.showMiniplayerCava - widget.visualizerType = BarWidgetRegistry.widgetMetadata[widget.id].visualizerType - break - case "NotificationHistory": - widget.showUnreadBadge = BarWidgetRegistry.widgetMetadata[widget.id].showUnreadBadge - widget.hideWhenZero = BarWidgetRegistry.widgetMetadata[widget.id].hideWhenZero break case "SidePanelToggle": widget.useDistroLogo = adapter.bar.useDistroLogo @@ -152,13 +140,27 @@ Singleton { case "SystemMonitor": widget.showNetworkStats = adapter.bar.showNetworkStats break - case "Volume": - widget.alwaysShowPercentage = BarWidgetRegistry.widgetMetadata[widget.id].alwaysShowPercentage - break case "Workspace": widget.labelMode = adapter.bar.showWorkspaceLabel break } + + // Inject missing default setting (metaData) from BarWidgetRegistry + const keys = Object.keys(BarWidgetRegistry.widgetMetadata[widget.id]) + for (let i=0; i