Builtin ability to remember size for HDrawer

This commit is contained in:
miruka
2019-12-10 14:46:05 -04:00
parent 8c8ba221d3
commit f65425957b
5 changed files with 31 additions and 18 deletions

View File

@@ -24,20 +24,25 @@ Drawer {
background: Rectangle { id: bg; color: theme.colors.strongBackground }
signal userResized(int newWidth)
property alias color: bg.color
property Item referenceSizeParent: parent
property int defaultSize: 300
property int preferredSize:
horizontal ? referenceSizeParent.width : referenceSizeParent.height
window.uiState[objectName] ?
(window.uiState[objectName].size || defaultSize) :
defaultSize
property int minimumSize: resizeAreaSize
property int maximumSize:
horizontal ?
referenceSizeParent.width - theme.minimumSupportedWidth :
referenceSizeParent.height - theme.minimumSupportedHeight
//
property Item referenceSizeParent: parent
property bool collapse:
(horizontal ? window.width : window.height) < 400
property int peekSizeWhileCollapsed:
@@ -50,6 +55,8 @@ Drawer {
peekSizeWhileCollapsed :
Math.max(minimumSize, Math.min(preferredSize, maximumSize))
//
readonly property int visibleSize: visible ? width * position : 0
readonly property bool horizontal:
@@ -101,7 +108,17 @@ Drawer {
(drawer.edge === Qt.BottomEdge ? -mouseY : mouseY)
}
onReleased: userResized(drawer.preferredSize)
onReleased: {
if (! drawer.objectName) {
console.warn("Can't save pane size, no objectName set")
return
}
window.uiState[drawer.objectName] = {
size: drawer.preferredSize,
}
window.uiStateChanged()
}
}
}
}