summaryrefslogtreecommitdiff
path: root/modules/bar
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-06-05 22:13:27 +1000
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-06-05 22:13:27 +1000
commitded156f58d0a23b3926e9dbbbc5ed2a7d1d4c0c7 (patch)
tree0b8c91faf8079382ab37e7c07680bc77efbdb4f1 /modules/bar
parentfeat: network popout (diff)
downloadcaelestia-shell-ded156f58d0a23b3926e9dbbbc5ed2a7d1d4c0c7.tar.gz
caelestia-shell-ded156f58d0a23b3926e9dbbbc5ed2a7d1d4c0c7.tar.bz2
caelestia-shell-ded156f58d0a23b3926e9dbbbc5ed2a7d1d4c0c7.zip
feat: bluetooth popout
Diffstat (limited to 'modules/bar')
-rw-r--r--modules/bar/Content.qml15
-rw-r--r--modules/bar/components/StatusIcons.qml2
-rw-r--r--modules/bar/popouts/Bluetooth.qml18
-rw-r--r--modules/bar/popouts/Content.qml9
4 files changed, 38 insertions, 6 deletions
diff --git a/modules/bar/Content.qml b/modules/bar/Content.qml
index 2531f4d..ebd19cc 100644
--- a/modules/bar/Content.qml
+++ b/modules/bar/Content.qml
@@ -12,21 +12,28 @@ StyledRect {
required property ShellScreen screen
function checkPopout(y: real): var {
+ const spacing = Appearance.spacing.small;
const aw = activeWindow.child;
const awy = activeWindow.y + aw.y;
const n = statusIconsInner.network;
- const ny = statusIcons.y + statusIconsInner.y + n.y;
+ const ny = statusIcons.y + statusIconsInner.y + n.y - spacing / 2;
+ const bls = statusIcons.y + statusIconsInner.y + statusIconsInner.bs - spacing / 2;
+ const ble = statusIcons.y + statusIconsInner.y + statusIconsInner.be + spacing / 2;
const b = statusIconsInner.battery;
- const by = statusIcons.y + statusIconsInner.y + b.y;
+ const by = statusIcons.y + statusIconsInner.y + b.y - spacing / 2;
if (y >= awy && y <= awy + aw.implicitHeight) {
Popouts.currentName = "activewindow";
Popouts.currentCenter = Qt.binding(() => activeWindow.y + aw.y + aw.implicitHeight / 2);
Popouts.hasCurrent = true;
- } else if (y >= ny && y <= ny + n.implicitHeight) {
+ } else if (y >= ny && y <= ny + n.implicitHeight + spacing) {
Popouts.currentName = "network";
Popouts.currentCenter = Qt.binding(() => statusIcons.y + statusIconsInner.y + n.y + n.implicitHeight / 2);
Popouts.hasCurrent = true;
- } else if (y >= by && y <= by + b.implicitHeight) {
+ } else if (y >= bls && y <= ble) {
+ Popouts.currentName = "bluetooth";
+ Popouts.currentCenter = Qt.binding(() => statusIcons.y + statusIconsInner.y + statusIconsInner.bs + (statusIconsInner.be - statusIconsInner.bs) / 2);
+ Popouts.hasCurrent = true;
+ } else if (y >= by && y <= by + b.implicitHeight + spacing) {
Popouts.currentName = "battery";
Popouts.currentCenter = Qt.binding(() => statusIcons.y + statusIconsInner.y + b.y + b.implicitHeight / 2);
Popouts.hasCurrent = true;
diff --git a/modules/bar/components/StatusIcons.qml b/modules/bar/components/StatusIcons.qml
index d4dba6c..f92159b 100644
--- a/modules/bar/components/StatusIcons.qml
+++ b/modules/bar/components/StatusIcons.qml
@@ -12,6 +12,8 @@ Item {
property color colour: Colours.palette.m3secondary
readonly property Item network: network
+ readonly property real bs: bluetooth.y
+ readonly property real be: repeater.count > 0 ? devices.y + devices.implicitHeight : bluetooth.y + bluetooth.implicitHeight
readonly property Item battery: battery
clip: true
diff --git a/modules/bar/popouts/Bluetooth.qml b/modules/bar/popouts/Bluetooth.qml
new file mode 100644
index 0000000..ad7d087
--- /dev/null
+++ b/modules/bar/popouts/Bluetooth.qml
@@ -0,0 +1,18 @@
+import "root:/widgets"
+import "root:/services"
+import "root:/config"
+import QtQuick
+
+Column {
+ id: root
+
+ spacing: Appearance.spacing.normal
+
+ StyledText {
+ text: qsTr("Bluetooth %1").arg(Bluetooth.powered ? "enabled" : "disabled")
+ }
+
+ StyledText {
+ text: Bluetooth.devices.some(d => d.connected) ? qsTr("Connected to: %1").arg(Bluetooth.devices.filter(d => d.connected).map(d => d.alias).join(", ")) : qsTr("No devices connected")
+ }
+}
diff --git a/modules/bar/popouts/Content.qml b/modules/bar/popouts/Content.qml
index 43f2c8e..a8051f8 100644
--- a/modules/bar/popouts/Content.qml
+++ b/modules/bar/popouts/Content.qml
@@ -10,8 +10,8 @@ Item {
anchors.centerIn: parent
- implicitWidth: Popouts.hasCurrent ? content.children.find(c => c.shouldBeActive).implicitWidth + Appearance.padding.large * 2 : 0
- implicitHeight: Popouts.hasCurrent ? content.children.find(c => c.shouldBeActive).implicitHeight + Appearance.padding.large * 2 : 0
+ implicitWidth: Popouts.hasCurrent ? (content.children.find(c => c.shouldBeActive)?.implicitWidth ?? 0) + Appearance.padding.large * 2 : 0
+ implicitHeight: Popouts.hasCurrent ? (content.children.find(c => c.shouldBeActive)?.implicitHeight ?? 0) + Appearance.padding.large * 2 : 0
Item {
id: content
@@ -32,6 +32,11 @@ Item {
}
Popout {
+ name: "bluetooth"
+ source: "Bluetooth.qml"
+ }
+
+ Popout {
name: "battery"
source: "Battery.qml"
}