dashboard: design layout

Also use clippingrect to round swipeview
This commit is contained in:
2 * r + 2 * t 2025-05-17 23:02:38 +08:00
parent 6e82fbc8b9
commit 6de0288b70
2 changed files with 104 additions and 6 deletions

View file

@ -2,6 +2,7 @@ import "root:/widgets"
import "root:/services"
import "root:/config"
import Quickshell
import Quickshell.Widgets
import QtQuick
import QtQuick.Controls
@ -13,22 +14,41 @@ Item {
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
implicitWidth: 800
implicitHeight: 300
implicitWidth: view.implicitWidth + viewWrapper.anchors.margins * 2
implicitHeight: tabs.implicitHeight + tabs.anchors.topMargin + view.implicitHeight + viewWrapper.anchors.margins * 2
Tabs {
id: tabs
anchors.fill: parent
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
anchors.topMargin: Appearance.padding.normal
anchors.margins: Appearance.padding.large
currentIndex: view.currentIndex
}
SwipeView {
id: view
ClippingRectangle {
id: viewWrapper
currentIndex: tabs.currentIndex
anchors.top: tabs.bottom
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
anchors.margins: Appearance.padding.large
radius: Appearance.rounding.normal
color: "transparent"
SwipeView {
id: view
anchors.fill: parent
currentIndex: tabs.currentIndex
Dash {}
}
}
}

View file

@ -0,0 +1,78 @@
import "root:/widgets"
import "root:/services"
import "root:/config"
import Quickshell
import QtQuick.Layouts
GridLayout {
id: root
rowSpacing: Appearance.spacing.small
columnSpacing: Appearance.spacing.small
Rect {
text: "user"
Layout.columnSpan: 3
Layout.preferredWidth: 300
Layout.preferredHeight: 150
}
Rect {
text: "toggles"
Layout.column: 3
Layout.columnSpan: 2
Layout.preferredWidth: 250
Layout.fillHeight: true
}
Rect {
text: "time"
Layout.row: 1
Layout.preferredWidth: 100
Layout.fillHeight: true
}
Rect {
text: "calendar"
Layout.row: 1
Layout.column: 1
Layout.columnSpan: 3
Layout.fillWidth: true
Layout.preferredHeight: 200
}
Rect {
text: "perf"
Layout.row: 1
Layout.column: 4
Layout.preferredWidth: 120
Layout.fillHeight: true
}
Rect {
text: "media"
Layout.row: 0
Layout.column: 5
Layout.rowSpan: 2
Layout.preferredWidth: 250
Layout.fillHeight: true
}
component Rect: StyledRect {
required property string text
radius: Appearance.rounding.small
color: Colours.palette.m3surfaceContainer
StyledText {
anchors.centerIn: parent
text: parent.text
}
}
}