mirror of
https://github.com/kossLAN/dots.git
synced 2025-11-05 06:59:50 -05:00
70 lines
1.5 KiB
QML
70 lines
1.5 KiB
QML
import QtQuick
|
|
|
|
Item {
|
|
id: root
|
|
visible: false
|
|
opacity: root.targetOpacity
|
|
|
|
onShowChanged: {
|
|
if (show) {
|
|
popup.setItem(this);
|
|
} else {
|
|
popup.removeItem(this);
|
|
}
|
|
}
|
|
|
|
onTargetVisibleChanged: {
|
|
if (targetVisible) {
|
|
visible = true;
|
|
targetOpacity = 1;
|
|
} else {
|
|
console.log("closed");
|
|
closed();
|
|
targetOpacity = 0;
|
|
}
|
|
}
|
|
|
|
onTargetOpacityChanged: {
|
|
if (!targetVisible && targetOpacity == 0) {
|
|
visible = false;
|
|
this.parent = null;
|
|
if (popup)
|
|
popup.onHidden(this);
|
|
}
|
|
}
|
|
|
|
readonly property alias contentItem: contentItem
|
|
default property alias data: contentItem.data
|
|
readonly property Item item: contentItem
|
|
|
|
Item {
|
|
id: contentItem
|
|
anchors.fill: parent
|
|
// anchors.margins: 5
|
|
|
|
implicitHeight: children[0].implicitHeight
|
|
implicitWidth: children[0].implicitWidth
|
|
}
|
|
|
|
required property var popup
|
|
required property var owner
|
|
property bool show: false
|
|
|
|
signal closed
|
|
|
|
property bool targetVisible: false
|
|
property real targetOpacity: 0
|
|
|
|
Behavior on targetOpacity {
|
|
id: opacityAnimation
|
|
SmoothedAnimation {
|
|
velocity: 5
|
|
}
|
|
}
|
|
|
|
function snapOpacity(opacity: real) {
|
|
opacityAnimation.enabled = false;
|
|
targetOpacity = opacity;
|
|
opacityAnimation.enabled = true;
|
|
}
|
|
}
|