mirror of
https://github.com/belsabbagh/dotfiles.git
synced 2026-04-11 17:47:09 +00:00
143 lines
3.6 KiB
QML
143 lines
3.6 KiB
QML
import Qt5Compat.GraphicalEffects
|
|
import QtQuick
|
|
import QtQuick.Controls
|
|
import QtQuick.Layouts
|
|
import Quickshell
|
|
import Quickshell.Io
|
|
import Quickshell.Wayland
|
|
import qs.config
|
|
import qs.modules.functions
|
|
import qs.modules.components
|
|
import qs.services
|
|
|
|
Item {
|
|
anchors.fill: parent
|
|
|
|
SwipeView {
|
|
id: view
|
|
|
|
anchors.fill: parent
|
|
|
|
// IntelligencePanel {}
|
|
SystemOverview {}
|
|
// WallpapersPage {}
|
|
|
|
}
|
|
|
|
Rectangle {
|
|
height: 2
|
|
width: parent.width - Metrics.margin("verylarge")
|
|
color: Appearance.m3colors.m3outlineVariant
|
|
opacity: 0.6
|
|
|
|
anchors {
|
|
top: view.top
|
|
topMargin: segmentedIndicator.height + Metrics.margin("verysmall")
|
|
horizontalCenter: view.horizontalCenter
|
|
}
|
|
|
|
}
|
|
|
|
Rectangle {
|
|
id: activeTabIndicator
|
|
|
|
height: 2
|
|
width: 96
|
|
radius: Metrics.radius(1)
|
|
color: Appearance.m3colors.m3primary
|
|
x: (segmentedIndicator.width / view.count) * view.currentIndex + (segmentedIndicator.width / view.count - width) / 2
|
|
|
|
anchors {
|
|
top: segmentedIndicator.bottom
|
|
topMargin: Metrics.margin(8)
|
|
}
|
|
|
|
Behavior on x {
|
|
NumberAnimation {
|
|
duration: Metrics.chronoDuration(220)
|
|
easing.type: Easing.OutCubic
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Item {
|
|
id: segmentedIndicator
|
|
|
|
height: 56
|
|
width: parent.width
|
|
|
|
anchors {
|
|
top: parent.top
|
|
horizontalCenter: parent.horizontalCenter
|
|
}
|
|
|
|
Row {
|
|
anchors.fill: parent
|
|
spacing: 0
|
|
|
|
Repeater {
|
|
model: [
|
|
// {
|
|
// "icon": "neurology",
|
|
// "text": "Intelligence"
|
|
// },
|
|
{
|
|
"icon": "overview",
|
|
"text": "Overview"
|
|
},
|
|
// {
|
|
// "icon": "wallpaper",
|
|
// "text": "Wallpapers"
|
|
// }
|
|
]
|
|
|
|
Item {
|
|
width: segmentedIndicator.width / view.count
|
|
height: parent.height
|
|
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
onClicked: view.currentIndex = index
|
|
}
|
|
|
|
// Icon (true center)
|
|
MaterialSymbol {
|
|
icon: modelData.icon
|
|
iconSize: Metrics.iconSize("huge")
|
|
color: view.currentIndex === index ? Appearance.m3colors.m3primary : Appearance.m3colors.m3onSurfaceVariant
|
|
|
|
anchors {
|
|
horizontalCenter: parent.horizontalCenter
|
|
top: parent.top
|
|
topMargin: Metrics.margin(12)
|
|
}
|
|
|
|
}
|
|
|
|
// Label (independent centering)
|
|
StyledText {
|
|
text: modelData.text
|
|
font.pixelSize: Metrics.fontSize("large")
|
|
font.weight: Font.Medium
|
|
color: view.currentIndex === index ? Appearance.m3colors.m3primary : Appearance.m3colors.m3onSurfaceVariant
|
|
|
|
anchors {
|
|
horizontalCenter: parent.horizontalCenter
|
|
bottom: parent.bottom
|
|
bottomMargin: 0
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|