5pragma ComponentBehavior: Bound
19 Accessible.ignored: true
24 property bool open: false
34 property real initialX
39 property real initialY
44 property real abstractWidth: parent.width
49 property real abstractHeight: parent.height
54 property real diameter: 2 * Math.sqrt(Math.pow(Math.max(initialX, abstractWidth - initialX), 2) + Math.pow(Math.max(initialY, abstractHeight - initialY), 2))
60 signal finished(bool open)
65 function openWave(x, y) {
66 wave.initialX = x || parent.width / 2;
67 wave.initialY = y || parent.height / 2;
74 function closeWave(x, y) {
75 wave.initialX = x || parent.width / 2;
76 wave.initialY = y || parent.height / 2;
82 layer.effect: MultiEffect {
84 maskSource: ShaderEffectSource {
89 x: wave.initialX - wave.size / 2
90 y: wave.initialY - wave.size / 2
104 wave.size: wave.diameter
108 transitions: Transition {
113 SequentialAnimation {
115 script: wave.visible = wave.open
119 easing.type: Easing.OutCubic
122 script: wave.finished(wave.open)