// Copyright (c) 2018 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. import QtQuick 2.3 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 import UM 1.1 as UM import Cura 1.1 as Cura Item { id: page property var details: base.selection || {} anchors.fill: parent ToolboxBackColumn { id: sidebar } Item { id: header anchors { left: sidebar.right right: parent.right rightMargin: UM.Theme.getSize("wide_margin").width } height: UM.Theme.getSize("toolbox_detail_header").height Rectangle { id: thumbnail width: UM.Theme.getSize("toolbox_thumbnail_medium").width height: UM.Theme.getSize("toolbox_thumbnail_medium").height anchors { top: parent.top left: parent.left leftMargin: UM.Theme.getSize("wide_margin").width topMargin: UM.Theme.getSize("wide_margin").height } color: UM.Theme.getColor("main_background") Image { anchors.fill: parent fillMode: Image.PreserveAspectFit source: details === null ? "" : (details.icon_url || "../images/logobot.svg") mipmap: true } } Label { id: title anchors { top: thumbnail.top left: thumbnail.right leftMargin: UM.Theme.getSize("default_margin").width right: parent.right rightMargin: UM.Theme.getSize("wide_margin").width bottomMargin: UM.Theme.getSize("default_margin").height } text: details === null ? "" : (details.name || "") font: UM.Theme.getFont("large") color: UM.Theme.getColor("text") wrapMode: Text.WordWrap width: parent.width height: UM.Theme.getSize("toolbox_property_label").height } Column { id: properties anchors { top: title.bottom left: title.left topMargin: UM.Theme.getSize("default_margin").height } spacing: Math.floor(UM.Theme.getSize("narrow_margin").height) width: childrenRect.width height: childrenRect.height Label { text: catalog.i18nc("@label", "Version") + ":" font: UM.Theme.getFont("default") color: UM.Theme.getColor("text_medium") } Label { text: catalog.i18nc("@label", "Last updated") + ":" font: UM.Theme.getFont("default") color: UM.Theme.getColor("text_medium") } Label { text: catalog.i18nc("@label", "Author") + ":" font: UM.Theme.getFont("default") color: UM.Theme.getColor("text_medium") } Label { text: catalog.i18nc("@label", "Downloads") + ":" font: UM.Theme.getFont("default") color: UM.Theme.getColor("text_medium") } Label { text: catalog.i18nc("@label", "Rating") + ":" font: UM.Theme.getFont("default") color: UM.Theme.getColor("text_medium") } } Column { id: values anchors { top: title.bottom left: properties.right leftMargin: UM.Theme.getSize("default_margin").width topMargin: UM.Theme.getSize("default_margin").height } spacing: Math.floor(UM.Theme.getSize("narrow_margin").height) height: childrenRect.height Label { text: details === null ? "" : (details.version || catalog.i18nc("@label", "Unknown")) font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") } Label { text: { if (details === null) { return "" } var date = new Date(details.last_updated) return date.toLocaleString(UM.Preferences.getValue("general/language")) } font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") } Label { text: { if (details === null) { return "" } else { return "" + details.author_name + "" } } font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") linkColor: UM.Theme.getColor("text_link") onLinkActivated: Qt.openUrlExternally(link) } Label { text: details === null ? "" : (details.download_count || catalog.i18nc("@label", "Unknown")) font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") } RatingWidget { id: rating visible: details.type == "plugin" packageId: details.id rating: details.average_rating numRatings: details.num_ratings userRating: details.user_rating enabled: toolbox.isInstalled(details.id) && Cura.API.account.isLoggedIn onRated: { toolbox.ratePackage(details.id, rating) var index = toolbox.packagesModel.find("id", details.id) if(index != -1) { // Found the package toolbox.packagesModel.setProperty(index, "user_rating", rating) toolbox.packagesModel.setProperty(index, "num_ratings", details.num_ratings + 1) // Hack; This is because the current selection is an outdated copy, so we need to re-copy it. base.selection = toolbox.packagesModel.getItem(index) } } } } Rectangle { color: UM.Theme.getColor("lining") width: parent.width height: UM.Theme.getSize("default_lining").height anchors.bottom: parent.bottom } } ToolboxDetailList { anchors { top: header.bottom bottom: page.bottom left: header.left right: page.right } } }