123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 |
- // 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
- Rectangle
- {
- id: root
- property alias packageData: packageCardHeader.packageData
- height: childrenRect.height
- color: UM.Theme.getColor("main_background")
- radius: UM.Theme.getSize("default_radius").width
- Column
- {
- width: parent.width
- spacing: 0
- Item
- {
- width: parent.width
- height: UM.Theme.getSize("card").height
- PackageCardHeader
- {
- id: packageCardHeader
- showUpdateButton: true
- showInstallButton: true
- showDisableButton: true
- anchors.fill: parent
- Row
- {
- id: downloadCount
- Layout.preferredWidth: parent.width
- Layout.fillHeight: true
- // It's not the perfect way to handle this, since a package really can have 0 downloads
- // But we re-use the package page for the manage plugins as well. The one user that doesn't see
- // the num downloads is an acceptable "sacrifice" to make this easy to fix.
- visible: packageData.downloadCount != "0"
- UM.ColorImage
- {
- id: downloadsIcon
- width: UM.Theme.getSize("card_tiny_icon").width
- height: UM.Theme.getSize("card_tiny_icon").height
- source: UM.Theme.getIcon("Download")
- color: UM.Theme.getColor("text")
- }
- UM.Label
- {
- anchors.verticalCenter: downloadsIcon.verticalCenter
- text: packageData.downloadCount
- }
- }
- }
- }
- Column
- {
- id: extendedDescription
- width: parent.width
- padding: UM.Theme.getSize("default_margin").width
- topPadding: 0
- spacing: UM.Theme.getSize("default_margin").height
- UM.Label
- {
- width: parent.width - parent.padding * 2
- text: catalog.i18nc("@header", "Description")
- font: UM.Theme.getFont("medium_bold")
- elide: Text.ElideRight
- }
- UM.Label
- {
- width: parent.width - parent.padding * 2
- text: packageData.formattedDescription
- font: UM.Theme.getFont("medium")
- linkColor: UM.Theme.getColor("text_link")
- textFormat: Text.RichText
- onLinkActivated: UM.UrlUtil.openUrl(link, ["http", "https"])
- }
- Column //Separate column to have no spacing between compatible printers.
- {
- id: compatiblePrinterColumn
- width: parent.width - parent.padding * 2
- visible: packageData.packageType === "material"
- spacing: 0
- UM.Label
- {
- width: parent.width
- text: catalog.i18nc("@header", "Compatible printers")
- font: UM.Theme.getFont("medium_bold")
- elide: Text.ElideRight
- }
- Repeater
- {
- model: packageData.compatiblePrinters
- UM.Label
- {
- width: compatiblePrinterColumn.width
- text: modelData
- font: UM.Theme.getFont("medium")
- elide: Text.ElideRight
- }
- }
- UM.Label
- {
- width: parent.width
- visible: packageData.compatiblePrinters.length == 0
- text: "(" + catalog.i18nc("@info", "No compatibility information") + ")"
- font: UM.Theme.getFont("medium")
- elide: Text.ElideRight
- }
- }
- Column
- {
- id: compatibleSupportMaterialColumn
- width: parent.width - parent.padding * 2
- visible: packageData.packageType === "material"
- spacing: 0
- UM.Label
- {
- width: parent.width
- text: catalog.i18nc("@header", "Compatible support materials")
- font: UM.Theme.getFont("medium_bold")
- elide: Text.ElideRight
- }
- Repeater
- {
- model: packageData.compatibleSupportMaterials
- UM.Label
- {
- width: compatibleSupportMaterialColumn.width
- text: modelData
- font: UM.Theme.getFont("medium")
- elide: Text.ElideRight
- }
- }
- UM.Label
- {
- width: parent.width
- visible: packageData.compatibleSupportMaterials.length == 0
- text: "(" + catalog.i18nc("@info No materials", "None") + ")"
- font: UM.Theme.getFont("medium")
- elide: Text.ElideRight
- }
- }
- Column
- {
- width: parent.width - parent.padding * 2
- visible: packageData.packageType === "material"
- spacing: 0
- UM.Label
- {
- width: parent.width
- text: catalog.i18nc("@header", "Compatible with Material Station")
- font: UM.Theme.getFont("medium_bold")
- elide: Text.ElideRight
- }
- UM.Label
- {
- width: parent.width
- text: packageData.isCompatibleMaterialStation ? catalog.i18nc("@info", "Yes") : catalog.i18nc("@info", "No")
- font: UM.Theme.getFont("medium")
- elide: Text.ElideRight
- }
- }
- Column
- {
- width: parent.width - parent.padding * 2
- visible: packageData.packageType === "material"
- spacing: 0
- UM.Label
- {
- width: parent.width
- text: catalog.i18nc("@header", "Optimized for Air Manager")
- font: UM.Theme.getFont("medium_bold")
- elide: Text.ElideRight
- }
- UM.Label
- {
- width: parent.width
- text: packageData.isCompatibleAirManager ? catalog.i18nc("@info", "Yes") : catalog.i18nc("@info", "No")
- font: UM.Theme.getFont("medium")
- elide: Text.ElideRight
- }
- }
- Row
- {
- id: externalButtonRow
- anchors.horizontalCenter: parent.horizontalCenter
- spacing: UM.Theme.getSize("narrow_margin").width
- Cura.SecondaryButton
- {
- text: packageData.packageType === "plugin" ? catalog.i18nc("@button", "Visit plug-in website") : catalog.i18nc("@button", "Website")
- iconSource: UM.Theme.getIcon("Globe")
- outlineColor: "transparent"
- onClicked: Qt.openUrlExternally(packageData.packageInfoUrl)
- }
- Cura.SecondaryButton
- {
- visible: packageData.packageType === "material"
- text: catalog.i18nc("@button", "Buy spool")
- iconSource: UM.Theme.getIcon("ShoppingCart")
- outlineColor: "transparent"
- onClicked: Qt.openUrlExternally(packageData.whereToBuy)
- }
- Cura.SecondaryButton
- {
- visible: packageData.packageType === "material"
- text: catalog.i18nc("@button", "Safety datasheet")
- iconSource: UM.Theme.getIcon("Warning")
- outlineColor: "transparent"
- onClicked: Qt.openUrlExternally(packageData.safetyDataSheet)
- }
- Cura.SecondaryButton
- {
- visible: packageData.packageType === "material"
- text: catalog.i18nc("@button", "Technical datasheet")
- iconSource: UM.Theme.getIcon("DocumentFilled")
- outlineColor: "transparent"
- onClicked: Qt.openUrlExternally(packageData.technicalDataSheet)
- }
- }
- }
- }
- FontMetrics
- {
- id: fontMetrics
- font: UM.Theme.getFont("default")
- }
- }
|