implement theme file storage
This commit is contained in:
parent
c53f0c2c41
commit
a44b6f5e44
2 changed files with 41 additions and 8 deletions
|
|
@ -14,13 +14,8 @@ Singleton {
|
||||||
property string fontFamily: "JetBrainsMono Nerd Font"
|
property string fontFamily: "JetBrainsMono Nerd Font"
|
||||||
property var palette: theme.palette
|
property var palette: theme.palette
|
||||||
|
|
||||||
property list<string> themes: []
|
property alias themes: cache.themes
|
||||||
onThemesChanged: {
|
property alias currentTheme: cache.current
|
||||||
if (!themes.includes(currentTheme)) {
|
|
||||||
currentTheme = "dark";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
property string currentTheme: "dark"
|
|
||||||
|
|
||||||
Process {
|
Process {
|
||||||
running: true
|
running: true
|
||||||
|
|
@ -41,7 +36,28 @@ Singleton {
|
||||||
}
|
}
|
||||||
|
|
||||||
FileView {
|
FileView {
|
||||||
id: jsonFile
|
path: `${Paths.cache}/theme.json`
|
||||||
|
|
||||||
|
watchChanges: true
|
||||||
|
onFileChanged: reload()
|
||||||
|
|
||||||
|
// when changes are made to properties in the adapter, save them
|
||||||
|
onAdapterUpdated: writeAdapter()
|
||||||
|
|
||||||
|
JsonAdapter {
|
||||||
|
id: cache
|
||||||
|
|
||||||
|
property string current: "dark"
|
||||||
|
property list<string> themes: ["dark"]
|
||||||
|
onThemesChanged: {
|
||||||
|
if (!themes.includes(current)) {
|
||||||
|
current = themes[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FileView {
|
||||||
path: `${Paths.config}/themes/${root.currentTheme}.json`
|
path: `${Paths.config}/themes/${root.currentTheme}.json`
|
||||||
watchChanges: true
|
watchChanges: true
|
||||||
onFileChanged: reload()
|
onFileChanged: reload()
|
||||||
|
|
|
||||||
|
|
@ -61,6 +61,23 @@ StyledWindow {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
StyledText {
|
||||||
|
text: "Theme Selector"
|
||||||
|
font.pixelSize: 18
|
||||||
|
}
|
||||||
|
RowLayout {
|
||||||
|
Repeater {
|
||||||
|
model: Theme.themes
|
||||||
|
delegate: StyledButton {
|
||||||
|
required property var modelData
|
||||||
|
text: modelData
|
||||||
|
onClicked: Theme.currentTheme = modelData
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
StyledText {
|
StyledText {
|
||||||
text: "Switch"
|
text: "Switch"
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue