diff options
| -rw-r--r-- | modules/dashboard/Content.qml | 3 | ||||
| -rw-r--r-- | modules/dashboard/Dash.qml | 3 | ||||
| -rw-r--r-- | modules/dashboard/Wrapper.qml | 49 | ||||
| -rw-r--r-- | modules/dashboard/dash/User.qml | 4 |
4 files changed, 44 insertions, 15 deletions
diff --git a/modules/dashboard/Content.qml b/modules/dashboard/Content.qml index 05003b5..fcf58e1 100644 --- a/modules/dashboard/Content.qml +++ b/modules/dashboard/Content.qml @@ -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 } } diff --git a/modules/dashboard/Dash.qml b/modules/dashboard/Dash.qml index 43ee538..81cb1fb 100644 --- a/modules/dashboard/Dash.qml +++ b/modules/dashboard/Dash.qml @@ -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 } } diff --git a/modules/dashboard/Wrapper.qml b/modules/dashboard/Wrapper.qml index 95c57b8..2dcd5c9 100644 --- a/modules/dashboard/Wrapper.qml +++ b/modules/dashboard/Wrapper.qml @@ -13,20 +13,21 @@ 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() - readonly property FileDialog facePicker: FileDialog { - title: qsTr("Select a profile picture") - filterLabel: qsTr("Image files") - filters: Images.validImageExtensions - onAccepted: path => { - if (CUtils.copyFile(Qt.resolvedUrl(path), Qt.resolvedUrl(`${Paths.home}/.face`))) - Quickshell.execDetached(["notify-send", "-a", "caelestia-shell", "-u", "low", "-h", `STRING:image-path:${path}`, "Profile picture changed", `Profile picture changed to ${Paths.shortenHome(path)}`]); - else - Quickshell.execDetached(["notify-send", "-a", "caelestia-shell", "-u", "critical", "Unable to change profile picture", `Failed to change profile picture to ${Paths.shortenHome(path)}`]); - } + reloadableId: "dashboardState" + } + readonly property FileDialog facePicker: FileDialog { + title: qsTr("Select a profile picture") + filterLabel: qsTr("Image files") + filters: Images.validImageExtensions + onAccepted: path => { + if (CUtils.copyFile(Qt.resolvedUrl(path), Qt.resolvedUrl(`${Paths.home}/.face`))) + Quickshell.execDetached(["notify-send", "-a", "caelestia-shell", "-u", "low", "-h", `STRING:image-path:${path}`, "Profile picture changed", `Profile picture changed to ${Paths.shortenHome(path)}`]); + else + Quickshell.execDetached(["notify-send", "-a", "caelestia-shell", "-u", "critical", "Unable to change profile picture", `Failed to change profile picture to ${Paths.shortenHome(path)}`]); } } @@ -34,6 +35,13 @@ Item { 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 } } } diff --git a/modules/dashboard/dash/User.qml b/modules/dashboard/dash/User.qml index db12d01..b66b1f9 100644 --- a/modules/dashboard/dash/User.qml +++ b/modules/dashboard/dash/User.qml @@ -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(); } } |