diff options
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/dashboard/Content.qml | 16 | ||||
| -rw-r--r-- | modules/dashboard/Tabs.qml | 14 | ||||
| -rw-r--r-- | modules/dashboard/Wrapper.qml | 17 |
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 + } } } |