ColorScheme: possible fix for selecting colorscheme & dark mode toggle

This commit is contained in:
Ly-sec 2025-09-10 12:39:15 +02:00
parent d91a635781
commit 3b50efc7d0
2 changed files with 36 additions and 5 deletions

View file

@ -187,7 +187,8 @@ ColumnLayout {
color: getSchemeColor(modelData, "mSurface")
border.width: Math.max(1, Style.borderL * scaling)
border.color: (!Settings.data.colorSchemes.useWallpaperColors
&& (Settings.data.colorSchemes.predefinedScheme === modelData)) ? Color.mPrimary : Color.mOutline
&& (Settings.data.colorSchemes.predefinedScheme === modelData.split("/").pop().replace(
".json", ""))) ? Color.mPrimary : Color.mOutline
scale: root.cardScaleLow
// Mouse area for selection
@ -198,8 +199,8 @@ ColumnLayout {
Settings.data.colorSchemes.useWallpaperColors = false
Logger.log("ColorSchemeTab", "Disabled matugen setting")
Settings.data.colorSchemes.predefinedScheme = schemePath
ColorSchemeService.applyScheme(schemePath)
Settings.data.colorSchemes.predefinedScheme = schemePath.split("/").pop().replace(".json", "")
ColorSchemeService.applyScheme(Settings.data.colorSchemes.predefinedScheme)
}
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
@ -281,7 +282,8 @@ ColumnLayout {
// Selection indicator (Checkmark)
Rectangle {
visible: !Settings.data.colorSchemes.useWallpaperColors
&& (Settings.data.colorSchemes.predefinedScheme === schemePath)
&& (Settings.data.colorSchemes.predefinedScheme === schemePath.split("/").pop().replace(".json",
""))
anchors.right: parent.right
anchors.top: parent.top
anchors.margins: Style.marginS * scaling

View file

@ -48,8 +48,26 @@ Singleton {
folderModel.folder = "file://" + schemesDirectory
}
function applyScheme(filePath) {
function getBasename(path) {
if (!path)
return ""
var chunks = path.split("/")
var last = chunks[chunks.length - 1]
return last.endsWith(".json") ? last.slice(0, -5) : last
}
function resolveSchemePath(nameOrPath) {
if (!nameOrPath)
return ""
if (nameOrPath.indexOf("/") !== -1) {
return nameOrPath
}
return schemesDirectory + "/" + nameOrPath.replace(".json", "") + ".json"
}
function applyScheme(nameOrPath) {
// Force reload by bouncing the path
var filePath = resolveSchemePath(nameOrPath)
schemeReader.path = ""
schemeReader.path = filePath
}
@ -69,6 +87,17 @@ Singleton {
schemes = files
scanning = false
Logger.log("ColorScheme", "Listed", schemes.length, "schemes")
// Normalize stored scheme to basename and re-apply if necessary
var stored = Settings.data.colorSchemes.predefinedScheme
if (stored) {
var basename = getBasename(stored)
if (basename !== stored) {
Settings.data.colorSchemes.predefinedScheme = basename
}
if (!Settings.data.colorSchemes.useWallpaperColors) {
applyScheme(basename)
}
}
}
}
}