mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-22 21:59:37 +08:00
Add first draft of the radiocheckbar
CURA-6598
This commit is contained in:
parent
36dfd23e3f
commit
11c23b4fe9
127
resources/qml/RadioCheckbar.qml
Normal file
127
resources/qml/RadioCheckbar.qml
Normal file
@ -0,0 +1,127 @@
|
||||
import QtQuick 2.0
|
||||
import QtQuick.Controls 2.3
|
||||
import QtQuick.Layouts 1.3
|
||||
Item
|
||||
{
|
||||
id: base
|
||||
property ButtonGroup buttonGroup: null
|
||||
|
||||
property color activeColor: "#3282ff"
|
||||
property color inactiveColor: "#cccccc"
|
||||
property color defaultItemColor: "#0a0850"
|
||||
property int checkboxSize: 14
|
||||
property int inactiveMarkerSize: 4
|
||||
property int barSize: 2
|
||||
|
||||
implicitWidth: 200
|
||||
implicitHeight: buttonBar.height
|
||||
|
||||
property var model: null
|
||||
|
||||
// The horizontal inactive bar that sits behind the buttons
|
||||
Rectangle
|
||||
{
|
||||
id: inactiveLine
|
||||
color: inactiveColor
|
||||
anchors.verticalCenter: buttonBar.verticalCenter
|
||||
height: barSize
|
||||
width: buttonBar.width
|
||||
}
|
||||
|
||||
RowLayout
|
||||
{
|
||||
id: buttonBar
|
||||
height: childrenRect.height
|
||||
width: parent.width
|
||||
spacing: 0
|
||||
Repeater
|
||||
{
|
||||
id: repeater
|
||||
model: base.model
|
||||
|
||||
Item
|
||||
{
|
||||
Layout.fillWidth: true
|
||||
// The last item of the repeater needs to be shorter, as we don't need another part to fit
|
||||
// the horizontal bar. The others should essentially not be limited.
|
||||
Layout.maximumWidth: index + 1 === repeater.count ? activeComponent.width: 200000000
|
||||
height: activeComponent.height
|
||||
|
||||
property bool isEnabled: model.enabled
|
||||
// The horizontal bar between the checkable options.
|
||||
// Note that the horizontal bar points towards the previous item.
|
||||
Rectangle
|
||||
{
|
||||
property Item previousItem: repeater.itemAt(index - 1)
|
||||
|
||||
height: barSize
|
||||
width: parent.width - activeComponent.width
|
||||
color: defaultItemColor
|
||||
|
||||
anchors
|
||||
{
|
||||
right: activeComponent.left
|
||||
verticalCenter: activeComponent.verticalCenter
|
||||
}
|
||||
visible: previousItem !== null && previousItem.isEnabled && isEnabled
|
||||
}
|
||||
Loader
|
||||
{
|
||||
id: activeComponent
|
||||
sourceComponent: isEnabled? checkboxComponent : disabledComponent
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Component
|
||||
{
|
||||
id: disabledComponent
|
||||
Item
|
||||
{
|
||||
height: checkboxSize
|
||||
width: inactiveMarkerSize
|
||||
Rectangle
|
||||
{
|
||||
anchors.centerIn: parent
|
||||
height: parent.width
|
||||
width: parent.width
|
||||
radius: width / 2
|
||||
color: inactiveColor
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Component
|
||||
{
|
||||
id: checkboxComponent
|
||||
CheckBox
|
||||
{
|
||||
id: checkbox
|
||||
ButtonGroup.group: buttonGroup
|
||||
width: checkboxSize
|
||||
height: checkboxSize
|
||||
indicator: Rectangle
|
||||
{
|
||||
height: checkbox.height
|
||||
width: checkbox.width
|
||||
radius: width / 2
|
||||
|
||||
anchors.centerIn: checkbox
|
||||
border.color: defaultItemColor
|
||||
|
||||
Rectangle
|
||||
{
|
||||
anchors
|
||||
{
|
||||
margins: 3
|
||||
fill: parent
|
||||
}
|
||||
radius: width / 2
|
||||
color: activeColor
|
||||
visible: checkbox.checked
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user