nosignal-shell/modules/dashboard/Wrapper.qml
M Matthew Hydock 6e775a1a0e
dashboard: add month/year and paging to calendar (#499)
* add month/year and paging to calendar

also, removed day/month from time panel, and  highlighting weekends
(need to figure out why the weekday enum is incorrect. locale issue?)

* removing dayOfWeek offset hack

this is clearly a me problem. my locale appears to be set to dz, but
only for caelestia shell. not sure why.

* aesthetic and localization improvements

* ensure all localized dates use UTC

issues i was having wrt localized date and day-of-week being off by one
appear to have been due to my timezone. forcing UTC seems to fix this.

* fixes

* anim today indicator

* keep state across open/close

* fix

---------

Co-authored-by: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
2025-09-03 21:49:41 +10:00

89 lines
2.7 KiB
QML

pragma ComponentBehavior: Bound
import qs.components
import qs.components.filedialog
import qs.config
import qs.utils
import Caelestia
import Quickshell
import Quickshell.Hyprland
import QtQuick
Item {
id: root
required property PersistentProperties visibilities
readonly property PersistentProperties state: 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(`file://${path}`, `${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)}`]);
}
}
}
visible: height > 0
implicitHeight: 0
implicitWidth: content.implicitWidth
states: State {
name: "visible"
when: root.visibilities.dashboard && Config.dashboard.enabled
PropertyChanges {
root.implicitHeight: content.implicitHeight
}
}
transitions: [
Transition {
from: ""
to: "visible"
Anim {
target: root
property: "implicitHeight"
duration: Appearance.anim.durations.expressiveDefaultSpatial
easing.bezierCurve: Appearance.anim.curves.expressiveDefaultSpatial
}
},
Transition {
from: "visible"
to: ""
Anim {
target: root
property: "implicitHeight"
easing.bezierCurve: Appearance.anim.curves.emphasized
}
}
]
HyprlandFocusGrab {
active: !Config.dashboard.showOnHover && root.visibilities.dashboard && Config.dashboard.enabled
windows: [QsWindow.window]
onCleared: root.visibilities.dashboard = false
}
Loader {
id: content
Component.onCompleted: active = Qt.binding(() => (root.visibilities.dashboard && Config.dashboard.enabled) || root.visible)
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
sourceComponent: Content {
visibilities: root.visibilities
state: root.state
}
}
}