dashboard: persist state
This commit is contained in:
parent
53f7da32e4
commit
2fa949139a
4 changed files with 44 additions and 15 deletions
|
|
@ -1,6 +1,7 @@
|
|||
pragma ComponentBehavior: Bound
|
||||
|
||||
import qs.components
|
||||
import qs.components.filedialog
|
||||
import qs.config
|
||||
import Quickshell
|
||||
import Quickshell.Widgets
|
||||
|
|
@ -12,6 +13,7 @@ Item {
|
|||
|
||||
required property PersistentProperties visibilities
|
||||
required property PersistentProperties state
|
||||
required property FileDialog facePicker
|
||||
readonly property real nonAnimWidth: view.implicitWidth + viewWrapper.anchors.margins * 2
|
||||
|
||||
implicitWidth: nonAnimWidth
|
||||
|
|
@ -87,6 +89,7 @@ Item {
|
|||
sourceComponent: Dash {
|
||||
visibilities: root.visibilities
|
||||
state: root.state
|
||||
facePicker: root.facePicker
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import qs.components
|
||||
import qs.components.filedialog
|
||||
import qs.services
|
||||
import qs.config
|
||||
import "dash"
|
||||
|
|
@ -10,6 +11,7 @@ GridLayout {
|
|||
|
||||
required property PersistentProperties visibilities
|
||||
required property PersistentProperties state
|
||||
required property FileDialog facePicker
|
||||
|
||||
rowSpacing: Appearance.spacing.normal
|
||||
columnSpacing: Appearance.spacing.normal
|
||||
|
|
@ -25,6 +27,7 @@ GridLayout {
|
|||
|
||||
visibilities: root.visibilities
|
||||
state: root.state
|
||||
facePicker: root.facePicker
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,10 +13,12 @@ Item {
|
|||
id: root
|
||||
|
||||
required property PersistentProperties visibilities
|
||||
readonly property PersistentProperties state: PersistentProperties {
|
||||
readonly property PersistentProperties dashState: PersistentProperties {
|
||||
property int currentTab
|
||||
property date currentDate: new Date()
|
||||
|
||||
reloadableId: "dashboardState"
|
||||
}
|
||||
readonly property FileDialog facePicker: FileDialog {
|
||||
title: qsTr("Select a profile picture")
|
||||
filterLabel: qsTr("Image files")
|
||||
|
|
@ -28,12 +30,18 @@ Item {
|
|||
Quickshell.execDetached(["notify-send", "-a", "caelestia-shell", "-u", "critical", "Unable to change profile picture", `Failed to change profile picture to ${Paths.shortenHome(path)}`]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
visible: height > 0
|
||||
implicitHeight: 0
|
||||
implicitWidth: content.implicitWidth
|
||||
|
||||
onStateChanged: {
|
||||
if (state === "visible" && timer.running) {
|
||||
timer.triggered();
|
||||
timer.stop();
|
||||
}
|
||||
}
|
||||
|
||||
states: State {
|
||||
name: "visible"
|
||||
when: root.visibilities.dashboard && Config.dashboard.enabled
|
||||
|
|
@ -73,17 +81,30 @@ Item {
|
|||
onCleared: root.visibilities.dashboard = false
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: timer
|
||||
|
||||
running: true
|
||||
interval: Appearance.anim.durations.extraLarge
|
||||
onTriggered: {
|
||||
content.active = Qt.binding(() => (root.visibilities.dashboard && Config.dashboard.enabled) || root.visible);
|
||||
content.visible = true;
|
||||
}
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: content
|
||||
|
||||
Component.onCompleted: active = Qt.binding(() => (root.visibilities.dashboard && Config.dashboard.enabled) || root.visible)
|
||||
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.bottom: parent.bottom
|
||||
|
||||
visible: false
|
||||
active: true
|
||||
|
||||
sourceComponent: Content {
|
||||
visibilities: root.visibilities
|
||||
state: root.state
|
||||
state: root.dashState
|
||||
facePicker: root.facePicker
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
import qs.components
|
||||
import qs.components.effects
|
||||
import qs.components.images
|
||||
import qs.components.filedialog
|
||||
import qs.services
|
||||
import qs.config
|
||||
import qs.utils
|
||||
|
|
@ -12,6 +13,7 @@ Row {
|
|||
|
||||
required property PersistentProperties visibilities
|
||||
required property PersistentProperties state
|
||||
required property FileDialog facePicker
|
||||
|
||||
padding: Appearance.padding.large
|
||||
spacing: Appearance.spacing.normal
|
||||
|
|
@ -72,7 +74,7 @@ Row {
|
|||
|
||||
function onClicked(): void {
|
||||
root.visibilities.launcher = false;
|
||||
root.state.facePicker.open();
|
||||
root.facePicker.open();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue