RoundButton.qml 1.8 KB
Newer Older
1 2 3 4 5
import QtQuick                  2.4
import QtQuick.Controls         1.2
import QtQuick.Controls.Styles  1.2

import QGroundControl.ScreenTools   1.0
6
import QGroundControl.Palette       1.0
7 8 9 10 11 12

Item {
    id: _root

    signal          clicked()
    property alias  buttonImage:        button.source
dogmaphobic's avatar
dogmaphobic committed
13
    property real   radius:             ScreenTools.defaultFontPixelHeight * 1.5
14
    property bool   rotateImage:        false
15 16 17 18

    width:  radius * 2
    height: radius * 2

19 20 21
    property bool checked: false
    property ExclusiveGroup exclusiveGroup: null

22 23
    QGCPalette { id: qgcPal }

24 25 26 27 28 29
    onExclusiveGroupChanged: {
        if (exclusiveGroup) {
            exclusiveGroup.bindCheckable(_root)
        }
    }

30 31 32 33 34 35 36 37 38
    onRotateImageChanged: {
        if (rotateImage) {
            imageRotation.running = true
        } else {
            imageRotation.running = false
            button.rotation = 0
        }
    }

39 40 41
    Rectangle {
        anchors.fill:   parent
        radius:         width / 2
dogmaphobic's avatar
dogmaphobic committed
42
        border.width:   ScreenTools.defaultFontPixelHeight * 0.0625
43
        border.color:   "white"
44
        color:          checked ? qgcPal.mapButtonHighlight : qgcPal.mapButton
45

46 47 48 49 50 51
        Image {
            id:             button
            anchors.fill:   parent
            fillMode:       Image.PreserveAspectFit
            mipmap:         true
            smooth:         true
52 53 54 55 56 57 58 59
            RotationAnimation on rotation {
                id: imageRotation
                loops: Animation.Infinite
                from: 0
                to: 360
                duration: 500
                running: false
            }
60

61 62
            MouseArea {
                anchors.fill:   parent
63 64 65 66
                onClicked: {
                    checked = !checked
                    _root.clicked()
                }
67 68 69 70
            }
        }
    }
}