123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- // Copyright (c) 2021 Ultimaker B.V.
- // Cura is released under the terms of the LGPLv3 or higher.
- import QtQuick 2.15
- import QtQuick.Controls 2.15
- import QtQuick.Layouts 1.1
- import UM 1.6 as UM
- import Cura 1.6 as Cura
- // Onboarding banner.
- Rectangle
- {
- property alias icon: onboardingIcon.source
- property alias text: infoText.text
- property var onRemove
- property string readMoreUrl
- implicitHeight: childrenRect.height + 2 * UM.Theme.getSize("default_margin").height
- color: UM.Theme.getColor("action_panel_secondary")
- UM.ColorImage
- {
- id: onboardingIcon
- anchors
- {
- top: parent.top
- left: parent.left
- margins: UM.Theme.getSize("default_margin").width
- }
- width: UM.Theme.getSize("banner_icon_size").width
- height: UM.Theme.getSize("banner_icon_size").height
- }
- UM.SimpleButton
- {
- id: onboardingClose
- anchors
- {
- top: parent.top
- right: parent.right
- margins: UM.Theme.getSize("default_margin").width
- }
- width: UM.Theme.getSize("message_close").width
- height: UM.Theme.getSize("message_close").height
- color: UM.Theme.getColor("primary_text")
- hoverColor: UM.Theme.getColor("primary_text_hover")
- iconSource: UM.Theme.getIcon("Cancel")
- onClicked: onRemove()
- }
- UM.Label
- {
- id: infoText
- anchors
- {
- top: parent.top
- left: onboardingIcon.right
- right: onboardingClose.left
- margins: UM.Theme.getSize("default_margin").width
- }
- color: UM.Theme.getColor("primary_text")
- elide: Text.ElideRight
- onLineLaidOut: (line) =>
- {
- if(line.isLast)
- {
- // Check if read more button still fits after the body text
- if (line.implicitWidth + readMoreButton.width + UM.Theme.getSize("default_margin").width > width)
- {
- // If it does place it after the body text
- readMoreButton.anchors.bottomMargin = -(fontMetrics.height);
- readMoreButton.anchors.leftMargin = UM.Theme.getSize("thin_margin").width;
- }
- else
- {
- // Otherwise place it under the text
- readMoreButton.anchors.leftMargin = line.implicitWidth + UM.Theme.getSize("default_margin").width;
- readMoreButton.anchors.bottomMargin = 0;
- }
- }
- }
- }
- FontMetrics
- {
- id: fontMetrics
- font: UM.Theme.getFont("default")
- }
- Cura.TertiaryButton
- {
- id: readMoreButton
- anchors.left: infoText.left
- anchors.bottom: infoText.bottom
- text: catalog.i18nc("@button:label", "Learn More")
- textFont: UM.Theme.getFont("default")
- textColor: infoText.color
- leftPadding: 0
- rightPadding: 0
- iconSource: UM.Theme.getIcon("LinkExternal")
- isIconOnRightSide: true
- height: fontMetrics.height
- onClicked: Qt.openUrlExternally(readMoreUrl)
- }
- }
|