diff options
Diffstat (limited to 'src/quickcontrols/material/impl/RadioIndicator.qml')
-rw-r--r-- | src/quickcontrols/material/impl/RadioIndicator.qml | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/quickcontrols/material/impl/RadioIndicator.qml b/src/quickcontrols/material/impl/RadioIndicator.qml new file mode 100644 index 0000000000..2cf46a69cb --- /dev/null +++ b/src/quickcontrols/material/impl/RadioIndicator.qml @@ -0,0 +1,53 @@ +// Copyright (C) 2017 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +import QtQuick +import QtQuick.Templates as T +import QtQuick.Controls.Material +import QtQuick.Controls.Material.impl + +Rectangle { + id: indicator + implicitWidth: 20 + implicitHeight: 20 + radius: width / 2 + border.width: 2 + border.color: targetColor + color: "transparent" + + // Store the target color in a separate property, because there are two animations that depend on it. + readonly property color targetColor: !control.enabled ? control.Material.hintTextColor + : control.checked || control.down ? control.Material.accentColor : control.Material.secondaryTextColor + + property T.AbstractButton control + + Behavior on border.color { + ColorAnimation { + duration: 100 + easing.type: Easing.OutCubic + } + } + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: 10 + height: 10 + radius: width / 2 + color: indicator.targetColor + scale: indicator.control.checked || indicator.control.down ? 1 : 0 + + Behavior on color { + ColorAnimation { + duration: 100 + easing.type: Easing.OutCubic + } + } + + Behavior on scale { + NumberAnimation { + duration: 100 + } + } + } +} |