136 lines
3 KiB
QML
136 lines
3 KiB
QML
import QtQuick 2.15
|
|
import QtQuick.Controls 2.15
|
|
import QtQuick.Controls.Material 2.3
|
|
|
|
Dialog {
|
|
id: control
|
|
|
|
property var dataObj
|
|
property string subTitle: ""
|
|
|
|
signal selectionFinished(int index, var data)
|
|
signal linkActivated(string link)
|
|
|
|
parent: Overlay.overlay
|
|
|
|
x: 0
|
|
y: parent.height - implicitHeight
|
|
|
|
opacity: 1
|
|
|
|
width: parent.width
|
|
implicitWidth: width
|
|
contentHeight: Math.min(parent.height * 0.7, implicitContentHeight)
|
|
implicitHeight: contentHeight + topPadding + bottomPadding + header.height
|
|
padding: 30
|
|
|
|
modal: true
|
|
focus: true
|
|
|
|
title: ""
|
|
|
|
header: Column {
|
|
id: selectorPuHeaderCol
|
|
|
|
width: control.width
|
|
height: headerLa.height + headerTopSpacerItm.height + (control.subTitle ? headerSubLa.height:0)
|
|
|
|
Item {
|
|
id: headerTopSpacerItm
|
|
height: control.padding
|
|
width: parent.width
|
|
}
|
|
|
|
MovingLabel {
|
|
id: headerLa
|
|
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
width: selectorPuHeaderCol.width - control.padding * 2
|
|
|
|
font.bold: true
|
|
font.pixelSize: 16
|
|
|
|
text: control.title
|
|
|
|
onLinkActivated: control.linkActivated(link)
|
|
}
|
|
|
|
Label {
|
|
id: headerSubLa
|
|
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
width: selectorPuHeaderCol.width - control.padding * 2
|
|
|
|
wrapMode: Text.Wrap
|
|
topPadding: 5
|
|
bottomPadding: 0
|
|
font.bold: true
|
|
font.pixelSize: 16
|
|
|
|
text: control.subTitle
|
|
|
|
onLinkActivated: {
|
|
control.linkActivated(link)
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
background: Item {
|
|
Rectangle {
|
|
id: backgroundRect
|
|
|
|
anchors {
|
|
fill: parent
|
|
bottomMargin: -radius
|
|
}
|
|
|
|
radius: control.leftPadding
|
|
|
|
color: control.Material.dialogColor
|
|
}
|
|
}
|
|
|
|
function appear(dataObj, title, subTitle) {
|
|
|
|
if(dataObj.length > 0){
|
|
control.dataObj = dataObj
|
|
}
|
|
else {
|
|
control.dataObj = undefined
|
|
}
|
|
|
|
control.title = title
|
|
control.subTitle = subTitle === undefined ? "":subTitle
|
|
control.open()
|
|
}
|
|
|
|
enter: Transition {
|
|
NumberAnimation {
|
|
property: "opacity";
|
|
from: 0
|
|
to: 1.0
|
|
easing.type: Easing.Linear
|
|
}
|
|
|
|
NumberAnimation {
|
|
property: "y"
|
|
from: control.parent.height - control.implicitHeight * 0.7
|
|
to: control.parent.height - control.implicitHeight
|
|
}
|
|
}
|
|
|
|
exit: Transition {
|
|
NumberAnimation {
|
|
property: "opacity";
|
|
from: 1
|
|
to: 0
|
|
}
|
|
|
|
NumberAnimation {
|
|
property: "y"
|
|
from: control.parent.height - control.implicitHeight
|
|
to: control.parent.height - control.implicitHeight * 0.7
|
|
}
|
|
}
|
|
}
|