aboutsummaryrefslogtreecommitdiffstats
path: root/examples/quick/views/listview/content/PressAndHoldButton.qml
blob: 51ab9435d20e06873f2c27042f84fc5f7e59fa74 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// Copyright (C) 2017 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

import QtQuick

Image {
    id: container

    property int repeatDelay: 300
    property int repeatDuration: 75
    property bool pressed

    signal clicked

    scale: pressed ? 0.9 : 1

    function release() {
        autoRepeatClicks.stop()
        container.pressed = false
    }

    SequentialAnimation on pressed {
        id: autoRepeatClicks
        running: false

        PropertyAction { target: container; property: "pressed"; value: true }
        ScriptAction { script: container.clicked() }
        PauseAnimation { duration: container.repeatDelay }

        SequentialAnimation {
            loops: Animation.Infinite
            ScriptAction { script: container.clicked() }
            PauseAnimation { duration: container.repeatDuration }
        }
    }

    MouseArea {
        anchors.fill: parent

        onPressed: autoRepeatClicks.start()
        onReleased: container.release()
        onCanceled: container.release()
    }
}