mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-09 08:36:26 +02:00
Add optional footer to "form editor" dialogs
This commit is contained in:
parent
4cc36d1df0
commit
023c04d2fe
1 changed files with 43 additions and 0 deletions
|
@ -58,6 +58,8 @@ Fadable {
|
||||||
// The content to place inside the window, determined by the client
|
// The content to place inside the window, determined by the client
|
||||||
default property var content
|
default property var content
|
||||||
|
|
||||||
|
property var footer: Item { } // Optional static footer at the bottom of the dialog.
|
||||||
|
|
||||||
function setDefaultFocus() {} // Default function; can be overridden by dialogs.
|
function setDefaultFocus() {} // Default function; can be overridden by dialogs.
|
||||||
|
|
||||||
property var rectifier: Timer {
|
property var rectifier: Timer {
|
||||||
|
@ -126,6 +128,7 @@ Fadable {
|
||||||
property var pane: Item {
|
property var pane: Item {
|
||||||
property bool isScrolling: scrollView.height < scrollView.contentItem.height
|
property bool isScrolling: scrollView.height < scrollView.contentItem.height
|
||||||
property int contentWidth: scrollView.width - (isScrolling ? 11 : 0)
|
property int contentWidth: scrollView.width - (isScrolling ? 11 : 0)
|
||||||
|
property int scrollHeight: scrollView.height
|
||||||
|
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
anchors.rightMargin: isScrolling ? 11 : 0
|
anchors.rightMargin: isScrolling ? 11 : 0
|
||||||
|
@ -162,6 +165,7 @@ Fadable {
|
||||||
verticalScrollBarPolicy: Qt.ScrollBarAsNeeded
|
verticalScrollBarPolicy: Qt.ScrollBarAsNeeded
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
anchors.rightMargin: parent.isScrolling ? 1 : 0
|
anchors.rightMargin: parent.isScrolling ? 1 : 0
|
||||||
|
anchors.bottomMargin: footer.height > 0 ? footerPane.height : 0
|
||||||
|
|
||||||
style: ScrollViewStyle {
|
style: ScrollViewStyle {
|
||||||
|
|
||||||
|
@ -203,7 +207,46 @@ Fadable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
// Optional non-scrolling footer.
|
||||||
|
id: footerPane
|
||||||
|
anchors {
|
||||||
|
left: parent.left
|
||||||
|
bottom: parent.bottom
|
||||||
|
}
|
||||||
|
width: parent.contentWidth
|
||||||
|
height: footer.height + 2 * hifi.dimensions.contentSpacing.y
|
||||||
|
color: hifi.colors.baseGray
|
||||||
|
visible: footer.height > 0
|
||||||
|
|
||||||
|
Item {
|
||||||
|
// Horizontal rule.
|
||||||
|
anchors.fill: parent
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
width: parent.width
|
||||||
|
height: 1
|
||||||
|
y: 1 // Stop displaying content just above horizontal rule/=.
|
||||||
|
color: hifi.colors.baseGrayShadow
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
width: parent.width
|
||||||
|
height: 1
|
||||||
|
y: 2
|
||||||
|
color: hifi.colors.baseGrayHighlight
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Item {
|
||||||
|
anchors.fill: parent
|
||||||
|
anchors.topMargin: 3 // Horizontal rule.
|
||||||
|
children: [ footer ]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
children: [ swallower, frame, pane, activator ]
|
children: [ swallower, frame, pane, activator ]
|
||||||
|
|
||||||
Component.onCompleted: { raise(); setDefaultFocus(); }
|
Component.onCompleted: { raise(); setDefaultFocus(); }
|
||||||
|
|
Loading…
Reference in a new issue