2019-07-07 23:52:41 -04:00
|
|
|
// Copyright 2019 miruka
|
|
|
|
// This file is part of harmonyqml, licensed under LGPLv3.
|
|
|
|
|
2019-07-13 05:39:01 -04:00
|
|
|
import QtQuick 2.12
|
|
|
|
import QtQuick.Layouts 1.12
|
2019-04-28 15:18:36 -04:00
|
|
|
import "../Base"
|
2019-03-26 03:19:55 -04:00
|
|
|
|
2019-05-11 17:51:00 -04:00
|
|
|
HRectangle {
|
2019-03-26 03:19:55 -04:00
|
|
|
id: sidePane
|
2019-07-16 08:52:26 -04:00
|
|
|
clip: true // Avoid artifacts when collapsed
|
|
|
|
visible: mainUI.accountsPresent
|
2019-04-28 11:01:38 -04:00
|
|
|
|
2019-07-16 08:52:26 -04: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-11 22:25:50 -04:00
|
|
|
|
2019-07-16 08:36:11 -04:00
|
|
|
readonly property bool reduced: width < 1
|
|
|
|
readonly property bool collapsed:
|
|
|
|
width < theme.sidePane.collapsedWidth + theme.spacing
|
|
|
|
|
2019-07-16 05:29:47 -04:00
|
|
|
property int currentSpacing: collapsed ? 0 : theme.spacing
|
2019-07-12 18:17:02 -04:00
|
|
|
Behavior on currentSpacing { HNumberAnimation {} }
|
2019-05-12 15:57:18 -04:00
|
|
|
|
2019-07-16 08:52:26 -04:00
|
|
|
|
|
|
|
// 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
|
|
|
|
|
2019-04-28 15:18:36 -04:00
|
|
|
HColumnLayout {
|
2019-03-26 03:19:55 -04:00
|
|
|
anchors.fill: parent
|
|
|
|
|
|
|
|
AccountList {
|
|
|
|
Layout.fillWidth: true
|
|
|
|
Layout.fillHeight: true
|
2019-05-02 14:20:21 -04:00
|
|
|
|
2019-07-12 17:06:37 -04:00
|
|
|
spacing: currentSpacing
|
|
|
|
bottomMargin: currentSpacing
|
2019-03-26 03:19:55 -04:00
|
|
|
}
|
|
|
|
|
2019-07-02 13:59:52 -04:00
|
|
|
PaneToolBar {
|
|
|
|
id: paneToolBar
|
|
|
|
}
|
2019-03-26 03:19:55 -04:00
|
|
|
}
|
|
|
|
}
|