// Copyright (c) 2019 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. import QtQuick 2.10 import QtQuick.Controls 1.4 import UM 1.5 as UM Item { id: base property var packageData property var technicalDataSheetUrl: packageData.links.technicalDataSheet property var safetyDataSheetUrl: packageData.links.safetyDataSheet property var printingGuidelinesUrl: packageData.links.printingGuidelines property var materialWebsiteUrl: packageData.links.website height: childrenRect.height onVisibleChanged: packageData.type === "material" && (compatibilityItem.visible || dataSheetLinks.visible) Column { id: compatibilityItem visible: packageData.has_configs width: parent.width // This is a bit of a hack, but the whole QML is pretty messy right now. This needs a big overhaul. height: visible ? heading.height + table.height: 0 Label { id: heading width: parent.width text: catalog.i18nc("@label", "Compatibility") wrapMode: Text.WordWrap color: UM.Theme.getColor("text_medium") font: UM.Theme.getFont("medium") renderType: Text.NativeRendering } TableView { id: table width: parent.width frameVisible: false // Workaround for scroll issues (QTBUG-49652) flickableItem.interactive: false Component.onCompleted: { for (var i = 0; i < flickableItem.children.length; ++i) { flickableItem.children[i].enabled = false } } selectionMode: 0 model: packageData.supported_configs headerDelegate: Rectangle { color: UM.Theme.getColor("main_background") height: UM.Theme.getSize("toolbox_chart_row").height Label { anchors.verticalCenter: parent.verticalCenter elide: Text.ElideRight text: styleData.value || "" color: UM.Theme.getColor("text") font: UM.Theme.getFont("default_bold") renderType: Text.NativeRendering } Rectangle { anchors.bottom: parent.bottom height: UM.Theme.getSize("default_lining").height width: parent.width color: "black" } } rowDelegate: Item { height: UM.Theme.getSize("toolbox_chart_row").height Label { anchors.verticalCenter: parent.verticalCenter elide: Text.ElideRight text: styleData.value || "" color: UM.Theme.getColor("text_medium") font: UM.Theme.getFont("default") renderType: Text.NativeRendering } } itemDelegate: Item { height: UM.Theme.getSize("toolbox_chart_row").height Label { anchors.verticalCenter: parent.verticalCenter elide: Text.ElideRight text: styleData.value || "" color: UM.Theme.getColor("text_medium") font: UM.Theme.getFont("default") renderType: Text.NativeRendering } } Component { id: columnTextDelegate Label { anchors.fill: parent verticalAlignment: Text.AlignVCenter text: styleData.value || "" elide: Text.ElideRight color: UM.Theme.getColor("text_medium") font: UM.Theme.getFont("default") renderType: Text.NativeRendering } } TableViewColumn { role: "machine" title: catalog.i18nc("@label:table_header", "Machine") width: Math.floor(table.width * 0.25) delegate: columnTextDelegate } TableViewColumn { role: "print_core" title: "Print Core" //This term should not be translated. width: Math.floor(table.width * 0.2) } TableViewColumn { role: "build_plate" title: catalog.i18nc("@label:table_header", "Build Plate") width: Math.floor(table.width * 0.225) } TableViewColumn { role: "support_material" title: catalog.i18nc("@label:table_header", "Support") width: Math.floor(table.width * 0.225) } TableViewColumn { role: "quality" title: catalog.i18nc("@label:table_header", "Quality") width: Math.floor(table.width * 0.1) } } } Label { id: dataSheetLinks anchors.top: compatibilityItem.bottom anchors.topMargin: UM.Theme.getSize("narrow_margin").height visible: base.technicalDataSheetUrl !== undefined || base.safetyDataSheetUrl !== undefined || base.printingGuidelinesUrl !== undefined || base.materialWebsiteUrl !== undefined text: { var result = "" if (base.technicalDataSheetUrl !== undefined) { var tds_name = catalog.i18nc("@action:label", "Technical Data Sheet") result += "%2".arg(base.technicalDataSheetUrl).arg(tds_name) } if (base.safetyDataSheetUrl !== undefined) { if (result.length > 0) { result += "
" } var sds_name = catalog.i18nc("@action:label", "Safety Data Sheet") result += "%2".arg(base.safetyDataSheetUrl).arg(sds_name) } if (base.printingGuidelinesUrl !== undefined) { if (result.length > 0) { result += "
" } var pg_name = catalog.i18nc("@action:label", "Printing Guidelines") result += "%2".arg(base.printingGuidelinesUrl).arg(pg_name) } if (base.materialWebsiteUrl !== undefined) { if (result.length > 0) { result += "
" } var pg_name = catalog.i18nc("@action:label", "Website") result += "%2".arg(base.materialWebsiteUrl).arg(pg_name) } return result } font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") linkColor: UM.Theme.getColor("text_link") onLinkActivated: UM.UrlUtil.openUrl(link, ["http", "https"]) renderType: Text.NativeRendering } }