summaryrefslogtreecommitdiff
path: root/modules/bar/Pills.qml
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-04-29 10:29:30 +1000
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-04-29 10:29:30 +1000
commit5fd8d0f6da23030cbe043c5fd59284393781e23a (patch)
tree718c188d60eeb2de460d6fd7d15e17814d67014b /modules/bar/Pills.qml
parentrefactor: move bar components into folder (diff)
downloadcaelestia-shell-5fd8d0f6da23030cbe043c5fd59284393781e23a.tar.gz
caelestia-shell-5fd8d0f6da23030cbe043c5fd59284393781e23a.tar.bz2
caelestia-shell-5fd8d0f6da23030cbe043c5fd59284393781e23a.zip
refactor: use anchors instead of layouts
Diffstat (limited to 'modules/bar/Pills.qml')
-rw-r--r--modules/bar/Pills.qml105
1 files changed, 105 insertions, 0 deletions
diff --git a/modules/bar/Pills.qml b/modules/bar/Pills.qml
new file mode 100644
index 0000000..5337221
--- /dev/null
+++ b/modules/bar/Pills.qml
@@ -0,0 +1,105 @@
+pragma ComponentBehavior: Bound
+
+import "root:/widgets"
+import "root:/config"
+import "components"
+import "components/workspaces"
+import Quickshell
+import Quickshell.Wayland
+import QtQuick
+import QtQuick.Controls
+
+Item {
+ id: root
+
+ function get(horiz, vert) {
+ return BarConfig.vertical ? vert : horiz;
+ }
+
+ anchors.fill: parent
+ anchors.leftMargin: get(BarConfig.sizes.floatingGapLarge, BarConfig.sizes.floatingGap)
+ anchors.topMargin: get(BarConfig.sizes.floatingGap, BarConfig.sizes.floatingGapLarge)
+ anchors.rightMargin: get(BarConfig.sizes.floatingGapLarge, 0)
+ anchors.bottomMargin: get(0, BarConfig.sizes.floatingGapLarge)
+
+ width: get(-1, BarConfig.sizes.height + BarConfig.sizes.floatingGap)
+ height: get(BarConfig.sizes.height + BarConfig.sizes.floatingGap, -1)
+
+ Pill {
+ anchors.left: parent.left
+
+ OsIcon {
+ id: osIcon
+
+ anchors.horizontalCenter: root.get(undefined, parent.horizontalCenter)
+ anchors.verticalCenter: root.get(parent.verticalCenter, undefined)
+ }
+
+ Workspaces {
+ vertical: BarConfig.vertical
+
+ anchors.left: root.get(osIcon.right, undefined)
+ anchors.leftMargin: root.get(Appearance.padding.smaller, 0)
+ anchors.top: root.get(undefined, osIcon.bottom)
+ anchors.topMargin: root.get(0, Appearance.padding.smaller)
+
+ anchors.horizontalCenter: root.get(undefined, parent.horizontalCenter)
+ anchors.verticalCenter: root.get(parent.verticalCenter, undefined)
+ }
+ }
+
+ Pill {
+ anchors.horizontalCenter: root.get(parent.horizontalCenter, undefined)
+ anchors.verticalCenter: root.get(undefined, parent.verticalCenter)
+
+ ActiveWindow {
+ vertical: BarConfig.vertical
+
+ anchors.horizontalCenter: root.get(undefined, parent.horizontalCenter)
+ anchors.verticalCenter: root.get(parent.verticalCenter, undefined)
+ }
+ }
+
+ Pill {
+ anchors.right: parent.right
+
+ Clock {
+ vertical: BarConfig.vertical
+
+ anchors.horizontalCenter: root.get(undefined, parent.horizontalCenter)
+ anchors.verticalCenter: root.get(parent.verticalCenter, undefined)
+ }
+ }
+
+ component Pill: Box {
+ id: pill
+
+ color: Appearance.alpha(Appearance.colours.base, false)
+ radius: Appearance.rounding.full
+ padding: BarConfig.vertical ? [Appearance.padding.large, 0] : [0, Appearance.padding.large]
+
+ anchors.top: parent.top
+ anchors.bottom: parent.bottom
+
+ state: BarConfig.vertical ? "vertical" : ""
+ states: State {
+ name: "vertical"
+
+ AnchorChanges {
+ target: pill
+ anchors.top: undefined
+ anchors.bottom: undefined
+ anchors.left: parent.left
+ anchors.right: parent.right
+ }
+ }
+
+ transitions: Transition {
+ AnchorAnimation {
+ duration: Appearance.anim.durations.normal
+ easing.type: Easing.BezierSpline
+ easing.bezierCurve: Appearance.anim.curves.emphasized
+ }
+ }
+ }
+}