Formatting

This commit is contained in:
quadbyte 2025-08-15 17:20:24 -04:00
parent 1d7d0752ad
commit c0cfdff1d9
3 changed files with 109 additions and 104 deletions

View file

@ -9,27 +9,27 @@ ColumnLayout {
id: root
spacing: 0
// Helper function to get color from scheme file
function getSchemeColor(schemePath, colorKey) {
// Extract scheme name from path
var schemeName = schemePath.split("/").pop().replace(".json", "")
// Try to get from cached data first
if (schemeColorsCache[schemeName] && schemeColorsCache[schemeName][colorKey]) {
return schemeColorsCache[schemeName][colorKey]
}
// Return a default color if not cached yet
return "#000000"
}
// Cache for scheme colors
property var schemeColorsCache: ({})
// Array to hold FileView objects
property var fileViews: []
// Load color scheme data when schemes are available
Connections {
target: ColorSchemes
@ -37,11 +37,11 @@ ColumnLayout {
loadSchemeColors()
}
}
function loadSchemeColors() {
// Clear existing cache
schemeColorsCache = {}
// Destroy existing FileViews
for (var i = 0; i < fileViews.length; i++) {
if (fileViews[i]) {
@ -49,19 +49,19 @@ ColumnLayout {
}
}
fileViews = []
// Create FileViews for each scheme
for (var i = 0; i < ColorSchemes.schemes.length; i++) {
var schemePath = ColorSchemes.schemes[i]
var schemeName = schemePath.split("/").pop().replace(".json", "")
// Create FileView component
var component = Qt.createComponent("SchemeFileView.qml")
if (component.status === Component.Ready) {
var fileView = component.createObject(root, {
"path": schemePath,
"schemeName": schemeName
})
"path": schemePath,
"schemeName": schemeName
})
fileViews.push(fileView)
} else {
// Fallback: create inline FileView
@ -69,28 +69,28 @@ ColumnLayout {
}
}
}
function createInlineFileView(schemePath, schemeName) {
var fileViewQml = `
import QtQuick
import Quickshell.Io
FileView {
property string schemeName: "${schemeName}"
path: "${schemePath}"
blockLoading: true
onLoaded: {
try {
var jsonData = JSON.parse(text())
root.schemeLoaded(schemeName, jsonData)
} catch (e) {
console.warn("Failed to parse JSON for scheme:", schemeName, e)
}
}
}
import QtQuick
import Quickshell.Io
FileView {
property string schemeName: "${schemeName}"
path: "${schemePath}"
blockLoading: true
onLoaded: {
try {
var jsonData = JSON.parse(text())
root.schemeLoaded(schemeName, jsonData)
} catch (e) {
console.warn("Failed to parse JSON for scheme:", schemeName, e)
}
}
}
`
try {
var fileView = Qt.createQmlObject(fileViewQml, root, "dynamicFileView_" + schemeName)
fileViews.push(fileView)
@ -98,12 +98,12 @@ ColumnLayout {
console.warn("Failed to create FileView for scheme:", schemeName, e)
}
}
function schemeLoaded(schemeName, jsonData) {
console.log("Loading scheme colors for:", schemeName)
var colors = {}
// Extract colors from JSON data
if (jsonData && typeof jsonData === 'object') {
colors.mPrimary = jsonData.mPrimary || jsonData.primary || "#000000"
@ -116,21 +116,21 @@ ColumnLayout {
} else {
// Default colors
colors = {
mPrimary: "#000000",
mSecondary: "#000000",
mTertiary: "#000000",
mError: "#ff0000",
mSurface: "#ffffff",
mOnSurface: "#000000",
mOutline: "#666666"
"mPrimary": "#000000",
"mSecondary": "#000000",
"mTertiary": "#000000",
"mError": "#ff0000",
"mSurface": "#ffffff",
"mOnSurface": "#000000",
"mOutline": "#666666"
}
}
// Update cache
var newCache = schemeColorsCache
newCache[schemeName] = colors
schemeColorsCache = newCache
console.log("Cached colors for", schemeName, ":", JSON.stringify(colors))
}
@ -204,7 +204,7 @@ ColumnLayout {
Repeater {
model: ColorSchemes.schemes
Rectangle {
id: schemeCard
Layout.fillWidth: true
@ -213,9 +213,9 @@ ColumnLayout {
color: getSchemeColor(modelData, "mSurface")
border.width: 2
border.color: Settings.data.colorSchemes.predefinedScheme === modelData ? Colors.mPrimary : Colors.mOutline
property string schemePath: modelData
// Mouse area for selection
MouseArea {
anchors.fill: parent
@ -227,24 +227,24 @@ ColumnLayout {
}
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onEntered: {
schemeCard.scale = 1.05
schemeCard.border.width = 3
}
onExited: {
schemeCard.scale = 1.0
schemeCard.border.width = 2
}
}
// Card content
ColumnLayout {
anchors.fill: parent
anchors.margins: 16 * scaling
spacing: 8 * scaling
// Scheme name
NText {
text: {
@ -259,13 +259,13 @@ ColumnLayout {
elide: Text.ElideRight
horizontalAlignment: Text.AlignHCenter
}
// Color swatches
RowLayout {
spacing: 8 * scaling
Layout.fillWidth: true
Layout.alignment: Qt.AlignHCenter
// Primary color swatch
Rectangle {
width: 28 * scaling
@ -273,7 +273,7 @@ ColumnLayout {
radius: 14 * scaling
color: getSchemeColor(modelData, "mPrimary")
}
// Secondary color swatch
Rectangle {
width: 28 * scaling
@ -281,7 +281,7 @@ ColumnLayout {
radius: 14 * scaling
color: getSchemeColor(modelData, "mSecondary")
}
// Tertiary color swatch
Rectangle {
width: 28 * scaling
@ -289,7 +289,7 @@ ColumnLayout {
radius: 14 * scaling
color: getSchemeColor(modelData, "mTertiary")
}
// Error color swatch
Rectangle {
width: 28 * scaling
@ -299,7 +299,7 @@ ColumnLayout {
}
}
}
// Selection indicator
Rectangle {
visible: Settings.data.colorSchemes.predefinedScheme === schemePath
@ -310,7 +310,7 @@ ColumnLayout {
height: 24 * scaling
radius: 12 * scaling
color: Colors.mPrimary
NText {
anchors.centerIn: parent
text: "✓"
@ -319,18 +319,25 @@ ColumnLayout {
color: Colors.mOnPrimary
}
}
// Smooth animations
Behavior on scale {
NumberAnimation { duration: 200; easing.type: Easing.OutCubic }
NumberAnimation {
duration: 200
easing.type: Easing.OutCubic
}
}
Behavior on border.color {
ColorAnimation { duration: 300 }
ColorAnimation {
duration: 300
}
}
Behavior on border.width {
NumberAnimation { duration: 200 }
NumberAnimation {
duration: 200
}
}
}
}
@ -339,4 +346,4 @@ ColumnLayout {
}
}
}
}
}