68 lines
1.5 KiB
QML
68 lines
1.5 KiB
QML
import QtQuick 2.15
|
|
import QtQuick.Controls 2.15
|
|
import QtQuick.Layouts 1.15
|
|
|
|
import utils 1.0
|
|
import shared 1.0
|
|
import shared.panels 1.0
|
|
|
|
import StatusQ.Core.Theme 0.1
|
|
import StatusQ.Controls 0.1
|
|
|
|
Rectangle {
|
|
id: root
|
|
|
|
property var buttonGroup
|
|
property string btnText: qsTr("TODO")
|
|
property bool checkedByDefault: false
|
|
|
|
signal checked()
|
|
signal toggled(bool checked)
|
|
|
|
function toggle() {
|
|
radioBtn.toggle()
|
|
}
|
|
|
|
border.color: mouseArea.containsMouse || radioBtn.checked ? Theme.palette.primaryColor1 : Theme.palette.border
|
|
border.width: 1
|
|
color: Theme.palette.transparent
|
|
implicitWidth: 130
|
|
implicitHeight: 120
|
|
radius: Theme.radius
|
|
|
|
StatusRadioButton {
|
|
id: radioBtn
|
|
ButtonGroup.group: buttonGroup
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
anchors.top: parent.top
|
|
anchors.topMargin: 14
|
|
checked: root.checkedByDefault
|
|
onCheckedChanged: {
|
|
if (checked) {
|
|
root.checked()
|
|
}
|
|
}
|
|
}
|
|
|
|
StyledText {
|
|
id: txt
|
|
text: btnText
|
|
font.pixelSize: 15
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
anchors.top: radioBtn.bottom
|
|
anchors.topMargin: 6
|
|
}
|
|
|
|
MouseArea {
|
|
id: mouseArea
|
|
anchors.fill: parent
|
|
hoverEnabled: true
|
|
onClicked: {
|
|
if (radioBtn.checked)
|
|
return
|
|
radioBtn.toggle()
|
|
root.toggled(radioBtn.checked)
|
|
}
|
|
}
|
|
}
|