add theme switcher

This commit is contained in:
lucy 2026-09-10 21:37:33 +02:00
commit d69ec48728
9 changed files with 126 additions and 68 deletions

View file

@ -9,14 +9,14 @@ import qs
import qs.settings
import qs.widgets
Rectangle {
id: root
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.AllButtons
}
clip: true
FloatingWindow {
id: child
implicitWidth: 800
implicitHeight: 600
visible: Config.cfg.themeSwitcherVisible
color: Colors.base00
title: "qs-themepicker"
onClosed: Config.cfg.themeSwitcherVisible = false
Process {
id: getSchemes
property list<string> schemes
@ -28,20 +28,62 @@ Rectangle {
}
}
}
ListView {
id: schemeList
orientation: ListView.Horizontal
anchors.fill: root
model: getSchemes.schemes
delegate: Rectangle {
id: container
required property string modelData
color: Colors.base01
height: 30
implicitWidth: schemeName.width + 16
Rectangle {
anchors.fill: child.contentItem
anchors.centerIn: child.contentItem
anchors.margins: 10
radius: Config.cfg.appearance.rounding / 1.5
color: Colors.base01
clip: true
RowLayout {
id: contentLayout
anchors.fill: parent
ListView {
id: schemeList
spacing: 5
Layout.fillHeight: true
model: getSchemes.schemes
implicitWidth: 300
delegate: Rectangle {
id: container
required property string modelData
color: Colors.base02
height: 30
radius: Config.cfg.appearance.rounding
implicitWidth: 300
StyledText {
id: schemeName
anchors.centerIn: parent
text: container.modelData
}
MouseArea {
id: schemeSetter
anchors.fill: container
acceptedButtons: Qt.LeftButton
cursorShape: Qt.PointingHandCursor
onClicked: {
setTheme.themeName = modelData;
setTheme.running = true;
}
Process {
id: setTheme
property string themeName
command: ["tinty", "apply", themeName]
}
}
}
}
StyledText {
id: schemeName
text: container.modelData
id: currentScheme
text: ""
Process {
id: getCurrentScheme
command: ["tinty", "current"]
running: true
stdout: StdioCollector {
onStreamFinished: currentScheme.text = text
}
}
}
}
}