diff options
Diffstat (limited to 'src/quickcontrols/fluentwinui3/RadioButton.qml')
-rw-r--r-- | src/quickcontrols/fluentwinui3/RadioButton.qml | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/quickcontrols/fluentwinui3/RadioButton.qml b/src/quickcontrols/fluentwinui3/RadioButton.qml new file mode 100644 index 0000000000..ee1ed8d4ad --- /dev/null +++ b/src/quickcontrols/fluentwinui3/RadioButton.qml @@ -0,0 +1,59 @@ +// Copyright (C) 2024 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.Controls.impl +import QtQuick.Templates as T + +T.RadioButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + spacing: config.spacing || 0 + + topPadding: config.topPadding || 0 + bottomPadding: config.bottomPadding || 0 + leftPadding: config.leftPadding || 0 + rightPadding: config.rightPadding || 0 + + topInset: -config.topInset || 0 + bottomInset: -config.bottomInset || 0 + leftInset: -config.leftInset || 0 + rightInset: -config.rightInset || 0 + + readonly property string __currentState: [ + control.checked && "checked", + !control.enabled && "disabled", + control.enabled && !control.down && control.hovered && "hovered", + control.down && "pressed" + ].filter(Boolean).join("_") || "normal" + readonly property var config: Config.controls.radiobutton[__currentState] || {} + readonly property bool mirroredIndicator: control.mirrored !== (config.mirrored || false) + + indicator: Image { + x: control.text ? (control.mirroredIndicator ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + source: Qt.resolvedUrl(control.config.indicator.filePath) + } + + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.palette.text + elide: Text.ElideRight + horizontalAlignment: Text.AlignLeft + verticalAlignment: Text.AlignVCenter + } + + background: StyleImage { + imageConfig: control.config.background + } +} |