summaryrefslogtreecommitdiff
path: root/modules/controlcenter/NavRail.qml
diff options
context:
space:
mode:
Diffstat (limited to 'modules/controlcenter/NavRail.qml')
-rw-r--r--modules/controlcenter/NavRail.qml72
1 files changed, 16 insertions, 56 deletions
diff --git a/modules/controlcenter/NavRail.qml b/modules/controlcenter/NavRail.qml
index 22c13a3..ef338b2 100644
--- a/modules/controlcenter/NavRail.qml
+++ b/modules/controlcenter/NavRail.qml
@@ -3,6 +3,7 @@ pragma ComponentBehavior: Bound
import qs.components
import qs.services
import qs.config
+import qs.modules.controlcenter
import Quickshell
import QtQuick
import QtQuick.Layouts
@@ -12,6 +13,7 @@ Item {
required property ShellScreen screen
required property Session session
+ required property bool initialOpeningComplete
implicitWidth: layout.implicitWidth + Appearance.padding.larger * 4
implicitHeight: layout.implicitHeight + Appearance.padding.large * 2
@@ -30,57 +32,17 @@ Item {
PropertyChanges {
layout.spacing: Appearance.spacing.small
- menuIcon.opacity: 0
- menuIconExpanded.opacity: 1
- menuIcon.rotation: 180
- menuIconExpanded.rotation: 0
}
}
transitions: Transition {
Anim {
- properties: "spacing,opacity,rotation"
- }
- }
-
- Item {
- id: menuBtn
-
- Layout.topMargin: Appearance.spacing.large
- implicitWidth: menuIcon.implicitWidth + menuIcon.anchors.leftMargin * 2
- implicitHeight: menuIcon.implicitHeight + Appearance.padding.normal * 2
-
- StateLayer {
- radius: Appearance.rounding.small
-
- function onClicked(): void {
- root.session.navExpanded = !root.session.navExpanded;
- }
- }
-
- MaterialIcon {
- id: menuIcon
-
- anchors.left: parent.left
- anchors.verticalCenter: parent.verticalCenter
- anchors.leftMargin: Appearance.padding.large
-
- text: "menu"
- font.pointSize: Appearance.font.size.large
- }
-
- MaterialIcon {
- id: menuIconExpanded
-
- anchors.fill: menuIcon
- text: "menu_open"
- font.pointSize: menuIcon.font.pointSize
- opacity: 0
- rotation: -180
+ properties: "spacing"
}
}
Loader {
+ Layout.topMargin: Appearance.spacing.large
asynchronous: true
active: !root.session.floating
visible: active
@@ -102,7 +64,6 @@ Item {
function onClicked(): void {
root.session.root.close();
WindowFactory.create(null, {
- screen: root.screen,
active: root.session.active,
navExpanded: root.session.navExpanded
});
@@ -156,20 +117,15 @@ Item {
}
}
- NavItem {
- Layout.topMargin: Appearance.spacing.large * 2
- icon: "network_manage"
- label: "network"
- }
+ Repeater {
+ model: PaneRegistry.count
- NavItem {
- icon: "settings_bluetooth"
- label: "bluetooth"
- }
-
- NavItem {
- icon: "tune"
- label: "audio"
+ NavItem {
+ required property int index
+ Layout.topMargin: index === 0 ? Appearance.spacing.large * 2 : 0
+ icon: PaneRegistry.getByIndex(index).icon
+ label: PaneRegistry.getByIndex(index).label
+ }
}
}
@@ -222,6 +178,10 @@ Item {
color: item.active ? Colours.palette.m3onSecondaryContainer : Colours.palette.m3onSurface
function onClicked(): void {
+ // Prevent tab switching during initial opening animation to avoid blank pages
+ if (!root.initialOpeningComplete) {
+ return;
+ }
root.session.active = item.label;
}
}