summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/dashboard/Content.qml16
-rw-r--r--modules/dashboard/Tabs.qml14
-rw-r--r--modules/dashboard/Wrapper.qml17
3 files changed, 31 insertions, 16 deletions
diff --git a/modules/dashboard/Content.qml b/modules/dashboard/Content.qml
index d16d374..5c90a17 100644
--- a/modules/dashboard/Content.qml
+++ b/modules/dashboard/Content.qml
@@ -9,11 +9,9 @@ Item {
id: root
required property PersistentProperties visibilities
+ required property PersistentProperties state
readonly property real nonAnimWidth: view.implicitWidth + viewWrapper.anchors.margins * 2
- anchors.horizontalCenter: parent.horizontalCenter
- anchors.bottom: parent.bottom
-
implicitWidth: nonAnimWidth
implicitHeight: tabs.implicitHeight + tabs.anchors.topMargin + view.implicitHeight + viewWrapper.anchors.margins * 2
@@ -27,7 +25,7 @@ Item {
anchors.margins: Appearance.padding.large
nonAnimWidth: root.nonAnimWidth - anchors.margins * 2
- currentIndex: view.currentIndex
+ state: root.state
}
ClippingRectangle {
@@ -45,7 +43,7 @@ Item {
Flickable {
id: view
- readonly property int currentIndex: tabs.currentIndex
+ readonly property int currentIndex: root.state.currentTab
readonly property Item currentItem: row.children[currentIndex]
anchors.fill: parent
@@ -65,17 +63,17 @@ Item {
const x = contentX - currentItem.x;
if (x > currentItem.implicitWidth / 2)
- tabs.bar.incrementCurrentIndex();
+ root.state.currentTab = Math.min(root.state.currentTab + 1, tabs.count - 1);
else if (x < -currentItem.implicitWidth / 2)
- tabs.bar.decrementCurrentIndex();
+ root.state.currentTab = Math.max(root.state.currentTab - 1, 0);
}
onDragEnded: {
const x = contentX - currentItem.x;
if (x > currentItem.implicitWidth / 10)
- tabs.bar.incrementCurrentIndex();
+ root.state.currentTab = Math.min(root.state.currentTab + 1, tabs.count - 1);
else if (x < -currentItem.implicitWidth / 10)
- tabs.bar.decrementCurrentIndex();
+ root.state.currentTab = Math.max(root.state.currentTab - 1, 0);
else
contentX = Qt.binding(() => currentItem.x);
}
diff --git a/modules/dashboard/Tabs.qml b/modules/dashboard/Tabs.qml
index e6b59e7..b7aca5f 100644
--- a/modules/dashboard/Tabs.qml
+++ b/modules/dashboard/Tabs.qml
@@ -1,6 +1,9 @@
+pragma ComponentBehavior: Bound
+
import "root:/widgets"
import "root:/services"
import "root:/config"
+import Quickshell
import Quickshell.Widgets
import QtQuick
import QtQuick.Controls
@@ -9,8 +12,8 @@ Item {
id: root
required property real nonAnimWidth
- property alias currentIndex: bar.currentIndex
- readonly property TabBar bar: bar
+ required property PersistentProperties state
+ readonly property alias count: bar.count
implicitHeight: bar.implicitHeight + indicator.implicitHeight + indicator.anchors.topMargin + separator.implicitHeight
@@ -21,6 +24,7 @@ Item {
anchors.right: parent.right
anchors.top: parent.top
+ currentIndex: root.state.currentTab
background: null
Tab {
@@ -108,7 +112,7 @@ Item {
cursorShape: Qt.PointingHandCursor
onPressed: event => {
- tab.TabBar.tabBar.setCurrentIndex(tab.TabBar.index);
+ root.state.currentTab = tab.TabBar.index;
const stateY = stateWrapper.y;
rippleAnim.x = event.x;
@@ -122,9 +126,9 @@ Item {
}
onWheel: event => {
if (event.angleDelta.y < 0)
- tab.TabBar.tabBar.incrementCurrentIndex();
+ root.state.currentTab = Math.min(root.state.currentTab + 1, bar.count - 1);
else if (event.angleDelta.y > 0)
- tab.TabBar.tabBar.decrementCurrentIndex();
+ root.state.currentTab = Math.max(root.state.currentTab - 1, 0);
}
SequentialAnimation {
diff --git a/modules/dashboard/Wrapper.qml b/modules/dashboard/Wrapper.qml
index e043904..26f6d5b 100644
--- a/modules/dashboard/Wrapper.qml
+++ b/modules/dashboard/Wrapper.qml
@@ -1,3 +1,5 @@
+pragma ComponentBehavior: Bound
+
import QtQuick
import Quickshell
import "root:/config"
@@ -6,6 +8,9 @@ Item {
id: root
required property PersistentProperties visibilities
+ readonly property PersistentProperties state: PersistentProperties {
+ property int currentTab
+ }
visible: height > 0
implicitHeight: 0
@@ -47,9 +52,17 @@ Item {
}
]
- Content {
+ Loader {
id: content
- visibilities: root.visibilities
+ Component.onCompleted: active = Qt.binding(() => root.visibilities.dashboard || root.visible)
+
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+
+ sourceComponent: Content {
+ visibilities: root.visibilities
+ state: root.state
+ }
}
}