mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-22 05:39:37 +08:00
73 lines
2.5 KiB
QML
73 lines
2.5 KiB
QML
import QtQuick 2.7
|
|
|
|
import UM 1.2 as UM
|
|
|
|
// The rounded rectangle works mostly like a regular rectangle, but provides the option to have rounded corners on only one side of the rectangle.
|
|
Item
|
|
{
|
|
id: roundedRectangle
|
|
// As per the regular rectangle
|
|
property color color: "transparent"
|
|
|
|
// As per regular rectangle
|
|
property int radius: UM.Theme.getSize("default_radius").width
|
|
|
|
// On what side should the corners be shown 5 can be used if no radius is needed.
|
|
// 1 is down, 2 is left, 3 is up and 4 is right.
|
|
property int cornerSide: RoundedRectangle.Direction.None
|
|
|
|
// Simple object to ensure that border.width and border.color work
|
|
property BorderGroup border: BorderGroup {}
|
|
|
|
enum Direction
|
|
{
|
|
None = 0,
|
|
Down = 1,
|
|
Left = 2,
|
|
Up = 3,
|
|
Right = 4,
|
|
All = 5
|
|
}
|
|
|
|
Rectangle
|
|
{
|
|
id: background
|
|
anchors.fill: parent
|
|
radius: cornerSide != RoundedRectangle.Direction.None ? parent.radius : 0
|
|
color: parent.color
|
|
border.width: parent.border.width
|
|
border.color: parent.border.color
|
|
}
|
|
|
|
// The item that covers 2 of the corners to make them not rounded.
|
|
Rectangle
|
|
{
|
|
visible: cornerSide != RoundedRectangle.Direction.None && cornerSide != RoundedRectangle.Direction.All
|
|
height: cornerSide % 2 ? parent.radius: parent.height
|
|
width: cornerSide % 2 ? parent.width : parent.radius
|
|
color: parent.color
|
|
anchors
|
|
{
|
|
right: cornerSide == RoundedRectangle.Direction.Left ? parent.right: undefined
|
|
bottom: cornerSide == RoundedRectangle.Direction.Up ? parent.bottom: undefined
|
|
}
|
|
|
|
border.width: parent.border.width
|
|
border.color: parent.border.color
|
|
|
|
Rectangle
|
|
{
|
|
color: roundedRectangle.color
|
|
height: cornerSide % 2 ? roundedRectangle.border.width: roundedRectangle.height - 2 * roundedRectangle.border.width
|
|
width: cornerSide % 2 ? roundedRectangle.width - 2 * roundedRectangle.border.width: roundedRectangle.border.width
|
|
anchors
|
|
{
|
|
right: cornerSide == RoundedRectangle.Direction.Right ? parent.right : undefined
|
|
bottom: cornerSide == RoundedRectangle.Direction.Down ? parent.bottom: undefined
|
|
horizontalCenter: cornerSide % 2 ? parent.horizontalCenter: undefined
|
|
verticalCenter: cornerSide % 2 ? undefined: parent.verticalCenter
|
|
}
|
|
}
|
|
}
|
|
}
|