Cura/resources/qml/ApplicationSwitcher/ApplicationButton.qml
Konstantinos Karmas a9968acd6d Fix misalignment of images if the displayName spans to next line
When the displayname of the app is long and it spans to the next line, it was pushing the icon up in the column, making it seem like it is misaligned. This is now fixed and the icons should be aligned regardless if the display name has one or two lines.

CURA-8421
2021-09-20 16:42:22 +02:00

100 lines
3.0 KiB
QML

// Copyright (c) 2021 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.10
import QtQuick.Controls 2.3
import UM 1.4 as UM
import Cura 1.1 as Cura
Button
{
id: base
property alias iconSource: applicationIcon.source
property alias displayName: applicationDisplayName.text
property alias tooltipText: tooltip.text
property bool isExternalLink: false
width: UM.Theme.getSize("application_switcher_item").width
height: UM.Theme.getSize("application_switcher_item").height
background: Rectangle
{
color: parent.hovered ? UM.Theme.getColor("action_button_hovered") : UM.Theme.getColor("action_button")
border.color: parent.hovered ? UM.Theme.getColor("primary") : "transparent"
border.width: UM.Theme.getSize("default_lining").width
}
UM.TooltipArea
{
id: tooltip
anchors.fill: parent
}
Column
{
id: applicationButtonContent
anchors.centerIn: parent
UM.RecolorImage
{
id: applicationIcon
anchors.horizontalCenter: parent.horizontalCenter
color: UM.Theme.getColor("monitor_icon_primary")
width: UM.Theme.getSize("application_switcher_icon").width
height: width
Item
{
id: externalLinkIndicator
visible: base.isExternalLink
anchors
{
bottom: parent.bottom
bottomMargin: - Math.round(height * 1 / 6)
right: parent.right
rightMargin: - Math.round(width * 5 / 6)
}
Rectangle
{
id: externalLinkIndicatorBackground
anchors.centerIn: parent
width: UM.Theme.getSize("small_button_icon").width
height: width
color: base.hovered ? UM.Theme.getColor("action_button_hovered") : UM.Theme.getColor("action_button")
radius: 0.5 * width
}
UM.RecolorImage
{
id: externalLinkIndicatorIcon
anchors.centerIn: parent
width: UM.Theme.getSize("printer_status_icon").width
height: width
color: UM.Theme.getColor("monitor_icon_primary")
source: UM.Theme.getIcon("LinkExternal")
}
}
}
Label
{
id: applicationDisplayName
anchors.horizontalCenter: parent.horizontalCenter
width: base.width - UM.Theme.getSize("default_margin").width
height: base.height - applicationIcon.height - 2 * UM.Theme.getSize("default_margin").width // Account for the top and bottom margins
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
wrapMode: Text.Wrap
elide: Text.ElideRight
}
}
}