diff options
Diffstat (limited to 'src/quickcontrols/windows/impl/SwitchIndicator.qml')
-rw-r--r-- | src/quickcontrols/windows/impl/SwitchIndicator.qml | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/quickcontrols/windows/impl/SwitchIndicator.qml b/src/quickcontrols/windows/impl/SwitchIndicator.qml new file mode 100644 index 0000000000..0dd80dadf7 --- /dev/null +++ b/src/quickcontrols/windows/impl/SwitchIndicator.qml @@ -0,0 +1,59 @@ +// Copyright (C) 2023 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 + +Rectangle { + id: root + x: control.text ? (control.mirrored + ? control.width - width - control.rightPadding : control.leftPadding) + : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + implicitWidth: 40 + implicitHeight: 16 + radius: 3 + color: Qt.darker(control.palette.button, control.down ? 1.2 : 1.1) + border.color: Qt.darker(control.palette.window, 1.4) + + readonly property bool __ignoreNotCustomizable: true + readonly property real __focusFrameRadius: 2 + readonly property T.AbstractButton control: parent as T.AbstractButton + + // Checked indicator. + Rectangle { + x: root.control.mirrored ? parent.children[1].x : 0 + width: root.control.mirrored + ? parent.width - parent.children[1].x : parent.children[1].x + parent.children[1].width + height: parent.height + radius: 3 + color: Qt.darker(root.control.palette.highlight, root.control.down ? 1.1 : 1) + border.color: Qt.darker(root.control.palette.highlight, 1.35) + border.width: root.control.enabled ? 1 : 0 + opacity: root.control.checked ? 1 : 0 + + Behavior on opacity { + enabled: !root.control.down + NumberAnimation { duration: 80 } + } + } + + // Handle. + Rectangle { + x: Math.max(0, Math.min(parent.width - width, + root.control.visualPosition * parent.width - (width / 2))) + y: (parent.height - height) / 2 + width: 20 + height: 16 + radius: 3 + color: Qt.lighter(root.control.palette.button, root.control.down + ? 1 : (root.control.hovered ? 1.07 : 1.045)) + border.width: 1 + border.color: Qt.darker(root.control.palette.window, 1.4) + + Behavior on x { + enabled: !root.control.down + SmoothedAnimation { velocity: 200 } + } + } +} |