// Copyright (c) 2018 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. import QtQuick 2.10 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 import UM 1.1 as UM import Cura 1.1 as Cura Column { property bool installed: toolbox.isInstalled(model.id) property bool canUpdate: toolbox.canUpdate(model.id) property bool loginRequired: model.login_required && !Cura.API.account.isLoggedIn width: UM.Theme.getSize("toolbox_action_button").width spacing: UM.Theme.getSize("narrow_margin").height Item { width: installButton.width height: installButton.height ToolboxProgressButton { id: installButton active: toolbox.isDownloading && toolbox.activePackage == model onReadyAction: { toolbox.activePackage = model toolbox.startDownload(model.download_url) } onActiveAction: toolbox.cancelDownload() // Don't allow installing while another download is running enabled: installed || (!(toolbox.isDownloading && toolbox.activePackage != model) && !loginRequired) opacity: enabled ? 1.0 : 0.5 visible: !updateButton.visible && !installed// Don't show when the update button is visible } Cura.SecondaryButton { visible: installed onClicked: toolbox.viewCategory = "installed" text: catalog.i18nc("@action:button", "Installed") fixedWidthMode: true width: installButton.width height: installButton.height } } Label { wrapMode: Text.WordWrap text: catalog.i18nc("@label:The string between and is the highlighted link", "Log in is required to install or update") font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") linkColor: UM.Theme.getColor("text_link") visible: loginRequired width: installButton.width renderType: Text.NativeRendering MouseArea { anchors.fill: parent onClicked: Cura.API.account.login() } } ToolboxProgressButton { id: updateButton active: toolbox.isDownloading && toolbox.activePackage == model readyLabel: catalog.i18nc("@action:button", "Update") activeLabel: catalog.i18nc("@action:button", "Updating") completeLabel: catalog.i18nc("@action:button", "Updated") onReadyAction: { toolbox.activePackage = model toolbox.update(model.id) } onActiveAction: toolbox.cancelDownload() // Don't allow installing while another download is running enabled: !(toolbox.isDownloading && toolbox.activePackage != model) && !loginRequired opacity: enabled ? 1.0 : 0.5 visible: canUpdate } Connections { target: toolbox onInstallChanged: installed = toolbox.isInstalled(model.id) onMetadataChanged: canUpdate = toolbox.canUpdate(model.id) onFilterChanged: { installed = toolbox.isInstalled(model.id) canUpdate = toolbox.canUpdate(model.id) } } }