init: working version
This commit is contained in:
commit
7d8d7dacae
109 changed files with 15066 additions and 0 deletions
124
modules/dashboard/Content.qml
Normal file
124
modules/dashboard/Content.qml
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
pragma ComponentBehavior: Bound
|
||||
|
||||
import qs.modules.bar.popouts as BarPopouts
|
||||
import qs.config
|
||||
import qs.custom
|
||||
import Quickshell
|
||||
import Quickshell.Widgets
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
required property PersistentProperties uiState
|
||||
required property BarPopouts.Wrapper popouts
|
||||
|
||||
readonly property color color: tabs.color
|
||||
readonly property real nonAnimHeight: view.implicitHeight + viewWrapper.anchors.margins * 2
|
||||
implicitWidth: tabs.implicitWidth + tabs.anchors.leftMargin + view.implicitWidth + viewWrapper.anchors.margins * 2
|
||||
implicitHeight: nonAnimHeight
|
||||
|
||||
Tabs {
|
||||
id: tabs
|
||||
|
||||
anchors.left: parent.left
|
||||
anchors.top: parent.top
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.leftMargin: 10
|
||||
anchors.margins: 15
|
||||
nonAnimHeight: root.nonAnimHeight - anchors.margins * 2
|
||||
uiState: root.uiState
|
||||
}
|
||||
|
||||
CustomClippingRect {
|
||||
id: viewWrapper
|
||||
|
||||
anchors.left: tabs.right
|
||||
anchors.top: parent.top
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.margins: 15
|
||||
|
||||
radius: 17
|
||||
color: "transparent"
|
||||
|
||||
Item {
|
||||
id: view
|
||||
|
||||
readonly property int currentIndex: root.uiState.dashboardTab
|
||||
readonly property Item currentItem: column.children[currentIndex]
|
||||
|
||||
anchors.fill: parent
|
||||
|
||||
implicitWidth: currentItem.implicitWidth
|
||||
implicitHeight: currentItem.implicitHeight
|
||||
|
||||
ColumnLayout {
|
||||
id: column
|
||||
|
||||
y: -view.currentItem.y
|
||||
spacing: 8
|
||||
|
||||
Pane {
|
||||
sourceComponent: Dash {
|
||||
uiState: root.uiState
|
||||
}
|
||||
}
|
||||
|
||||
Pane {
|
||||
sourceComponent: Mixer {
|
||||
uiState: root.uiState
|
||||
index: 1
|
||||
}
|
||||
}
|
||||
|
||||
Pane {
|
||||
sourceComponent: Media {
|
||||
uiState: root.uiState
|
||||
}
|
||||
}
|
||||
|
||||
Pane {
|
||||
source: "Performance.qml"
|
||||
}
|
||||
|
||||
Pane {
|
||||
sourceComponent: Workspaces {
|
||||
uiState: root.uiState
|
||||
popouts: root.popouts
|
||||
}
|
||||
}
|
||||
|
||||
Behavior on y {
|
||||
Anim {}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Behavior on implicitWidth {
|
||||
Anim {
|
||||
duration: Config.anim.durations.large
|
||||
easing.bezierCurve: Config.anim.curves.emphasized
|
||||
}
|
||||
}
|
||||
|
||||
Behavior on implicitHeight {
|
||||
Anim {
|
||||
duration: Config.anim.durations.large
|
||||
easing.bezierCurve: Config.anim.curves.emphasized
|
||||
}
|
||||
}
|
||||
|
||||
component Pane: Loader {
|
||||
Layout.alignment: Qt.AlignLeft
|
||||
|
||||
property real bufferY: 5
|
||||
Component.onCompleted: active = Qt.binding(() => {
|
||||
const vy = Math.floor(-column.y);
|
||||
const vey = Math.floor(vy + view.height);
|
||||
return (vy >= y - bufferY && vy <= y + implicitHeight) || (vey >= y + bufferY && vey <= y + implicitHeight);
|
||||
})
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue