moment/src/qml/SidePane/SidePane.qml

70 lines
1.7 KiB
QML
Raw Normal View History

2019-07-08 13:52:41 +10:00
// Copyright 2019 miruka
// This file is part of harmonyqml, licensed under LGPLv3.
import QtQuick 2.12
import QtQuick.Layouts 1.12
import "../Base"
HRectangle {
id: sidePane
clip: true // Avoid artifacts when collapsed
visible: mainUI.accountsPresent
2019-04-29 01:01:38 +10:00
// Properties that may be set externally
property int parentWidth: parent.width
onParentWidthChanged: if (canAutoSize) { width = getWidth() }
property bool canAutoSize: true
// Pane state properties - should not be modified
2019-07-12 12:25:50 +10:00
2019-07-16 22:36:11 +10:00
readonly property bool reduced: width < 1
readonly property bool collapsed:
width < theme.sidePane.collapsedWidth + theme.spacing
2019-07-16 19:29:47 +10:00
property int currentSpacing: collapsed ? 0 : theme.spacing
2019-07-13 08:17:02 +10:00
Behavior on currentSpacing { HNumberAnimation {} }
// Width functions and animations
function getWidth() {
var ts = theme.sidePane
return parentWidth * ts.autoWidthRatio < ts.autoCollapseBelowWidth ?
ts.collapsedWidth :
Math.min(parentWidth * ts.autoWidthRatio, ts.maximumAutoWidth)
}
Behavior on width {
HNumberAnimation {
// Don't slow down the user manually resizing
duration: (
canAutoSize &&
parentWidth * 0.3 < theme.sidePane.autoReduceBelowWidth * 1.2
) ? theme.animationDuration : 0
}
}
// Pane content
HColumnLayout {
anchors.fill: parent
AccountList {
Layout.fillWidth: true
Layout.fillHeight: true
2019-07-13 07:06:37 +10:00
spacing: currentSpacing
bottomMargin: currentSpacing
}
PaneToolBar {
id: paneToolBar
}
}
}