Cura/resources/qml/IconWithText.qml
2022-06-21 16:29:41 +02:00

80 lines
2.3 KiB
QML

// Copyright (c) 2018 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
import UM 1.5 as UM
import Cura 1.0 as Cura
// Reusable component that holds an (re-colorable) icon on the left with some text on the right.
// This component is also designed to be used with layouts. It will use the width of the text + icon as preferred width
// It sets the icon size + half of the content as its minimum width (in which case it will elide the text)
Item
{
property alias source: icon.source
property alias iconSize: icon.width
property alias iconColor: icon.color
property alias color: label.color
property alias text: label.text
property alias font: label.font
property alias elide: label.elide
property real margin: UM.Theme.getSize("narrow_margin").width
property alias wrapMode: label.wrapMode
property real spacing: UM.Theme.getSize("narrow_margin").width
property string tooltipText: ""
// These properties can be used in combination with layouts.
readonly property real contentWidth: icon.width + margin + label.contentWidth
readonly property real minContentWidth: Math.round(icon.width + margin + 0.5 * label.contentWidth)
Layout.minimumWidth: minContentWidth
Layout.preferredWidth: contentWidth
Layout.fillHeight: true
Layout.fillWidth: true
implicitWidth: icon.width + 100
implicitHeight: icon.height
UM.ColorImage
{
id: icon
width: UM.Theme.getSize("section_icon").width
height: width
color: UM.Theme.getColor("icon")
anchors
{
left: parent.left
verticalCenter: parent.verticalCenter
}
}
UM.Label
{
id: label
elide: Text.ElideRight
anchors
{
left: icon.right
right: parent.right
top: parent.top
bottom: parent.bottom
rightMargin: 0
leftMargin: spacing
margins: margin
}
}
MouseArea
{
enabled: tooltipText != ""
anchors.fill: parent
hoverEnabled: true
onEntered: base.showTooltip(parent, Qt.point(-UM.Theme.getSize("thick_margin").width, 0), tooltipText)
onExited: base.hideTooltip()
}
}