summaryrefslogtreecommitdiff
path: root/modules/bar/components/Tray.qml
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-09-25 16:14:24 +1000
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-09-25 16:14:24 +1000
commitd191ac44b566f452757289b59704b64ad4dc10bb (patch)
treed6f23f2394fab47c84ab5999ce60011ece661c2b /modules/bar/components/Tray.qml
parentreadme: update example config (#693) (diff)
downloadcaelestia-shell-d191ac44b566f452757289b59704b64ad4dc10bb.tar.gz
caelestia-shell-d191ac44b566f452757289b59704b64ad4dc10bb.tar.bz2
caelestia-shell-d191ac44b566f452757289b59704b64ad4dc10bb.zip
bar: add compact tray option
Closes #659
Diffstat (limited to 'modules/bar/components/Tray.qml')
-rw-r--r--modules/bar/components/Tray.qml61
1 files changed, 54 insertions, 7 deletions
diff --git a/modules/bar/components/Tray.qml b/modules/bar/components/Tray.qml
index 0477256..cf865fe 100644
--- a/modules/bar/components/Tray.qml
+++ b/modules/bar/components/Tray.qml
@@ -1,3 +1,5 @@
+pragma ComponentBehavior: Bound
+
import qs.components
import qs.services
import qs.config
@@ -7,13 +9,22 @@ import QtQuick
StyledRect {
id: root
+ readonly property alias layout: layout
readonly property alias items: items
+ readonly property alias expandIcon: expandIcon
+ readonly property int padding: Config.bar.tray.background ? Appearance.padding.normal : Appearance.padding.small
+ readonly property int spacing: Config.bar.tray.background ? Appearance.spacing.small : 0
+ property bool expanded
clip: true
- visible: width > 0 && height > 0 // To avoid warnings about being visible with no size
+ visible: height > 0
implicitWidth: Config.bar.sizes.innerWidth
- implicitHeight: layout.implicitHeight + (Config.bar.tray.background ? Appearance.padding.normal : Appearance.padding.small) * 2
+ implicitHeight: {
+ if (!Config.bar.tray.compact)
+ return layout.implicitHeight + padding * 2;
+ return (expanded ? expandIcon.implicitHeight + layout.implicitHeight + spacing : expandIcon.implicitHeight) + padding * 2;
+ }
color: Qt.alpha(Colours.tPalette.m3surfaceContainer, Config.bar.tray.background ? Colours.tPalette.m3surfaceContainer.a : 0)
radius: Appearance.rounding.full
@@ -21,9 +32,13 @@ StyledRect {
Column {
id: layout
- anchors.centerIn: parent
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: parent.top
+ anchors.topMargin: root.padding
spacing: Appearance.spacing.small
+ opacity: root.expanded || !Config.bar.tray.compact ? 1 : 0
+
add: Transition {
Anim {
properties: "scale"
@@ -51,17 +66,49 @@ StyledRect {
TrayItem {}
}
+
+ Behavior on opacity {
+ Anim {}
+ }
}
- Behavior on implicitWidth {
- Anim {
- easing.bezierCurve: Appearance.anim.curves.emphasized
+ Loader {
+ id: expandIcon
+
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+
+ active: Config.bar.tray.compact
+
+ sourceComponent: Item {
+ implicitWidth: expandIconInner.implicitWidth
+ implicitHeight: expandIconInner.implicitHeight - Appearance.padding.small * 2
+
+ MaterialIcon {
+ id: expandIconInner
+
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: Config.bar.tray.background ? Appearance.padding.small : -Appearance.padding.small
+ text: "expand_less"
+ font.pointSize: Appearance.font.size.large
+ rotation: root.expanded ? 180 : 0
+
+ Behavior on rotation {
+ Anim {}
+ }
+
+ Behavior on anchors.bottomMargin {
+ Anim {}
+ }
+ }
}
}
Behavior on implicitHeight {
Anim {
- easing.bezierCurve: Appearance.anim.curves.emphasized
+ duration: Appearance.anim.durations.expressiveDefaultSpatial
+ easing.bezierCurve: Appearance.anim.curves.expressiveDefaultSpatial
}
}
}