Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ToolboxDetailTileActions.qml « components « qml « resources « Toolbox « plugins - github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: d6838776051307327e587cbb73ccf95c9b6bdac3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
// 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.5 as UM
import Cura 1.1 as Cura

Column
{
    property bool installed: toolbox.isInstalled(model.id)
    property bool canUpdate: CuraApplication.getPackageManager().packagesWithUpdate.indexOf(model.id) != -1
    property bool loginRequired: model.login_required && !Cura.API.account.isLoggedIn
    property var packageData

    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
        {
            id: installedButton
            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 <a href=> and </a> is the highlighted link", "<a href='%1'>Log in</a> 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()
        }
    }

    Label
    {
        property var whereToBuyUrl:
        {
            var pg_name = "whereToBuy"
            return (pg_name in packageData.links) ? packageData.links[pg_name] : undefined
        }

        renderType: Text.NativeRendering
        text: catalog.i18nc("@label:The string between <a href=> and </a> is the highlighted link", "<a href='%1'>Buy material spools</a>")
        linkColor: UM.Theme.getColor("text_link")
        visible: whereToBuyUrl != undefined
        font: UM.Theme.getFont("default")
        color: UM.Theme.getColor("text")
        MouseArea
        {
            anchors.fill: parent
            onClicked: UM.UrlUtil.openUrl(parent.whereToBuyUrl, ["https", "http"])
        }
    }

    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
        function onInstallChanged() { installed = toolbox.isInstalled(model.id) }
        function onFilterChanged()
        {
            installed = toolbox.isInstalled(model.id)
        }
    }
}