summaryrefslogtreecommitdiffstats
path: root/Generate.qml
blob: 3a57869b2fc557914a1ad1382020ef7a9aad7233 (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
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only

import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtQuick.Dialogs
import Qt.labs.qmlmodels
import QtCore

ColumnLayout {
    implicitWidth: parent.width
    implicitHeight: childrenRect.height

    property string figmaFileName

    Connections {
        target: bridge

        function onFinished() {
            progressBar.value = 0
            progressBar.indeterminate = false
            statusLabel.text = window.stopping ? "Stopped!" : "Finished!"
        }

        function onProgressToChanged(to) {
            if (window.stopping)
                return
            progressBar.to = to
            progressBar.value = 0
            progressBar.indeterminate = to === 0
        }

        function onProgressLabelChanged(label) {
            if (window.stopping)
                return
            statusLabel.text = label
        }

        function onProgress() {
            progressBar.value++
        }

        function onFigmaFileNameChanged(name) {
            figmaFileName = name
        }
    }

    Label {
        text: figmaFileName
    }

    Label {
        id: statusLabel
    }

    ProgressBar {
        id: progressBar
        Layout.fillWidth: true
    }

    Button {
        id: generateButton
        Layout.alignment: Qt.AlignRight
        text: window.generating ? "Stop" : "Generate"
        enabled: !window.stopping
                 && bridge.figmaUrlOrId !== ""
                 && bridge.figmaToken !== ""
                 && bridge.targetDirectory !== ""
        onClicked: {
            if (window.generating) {
                window.stopping = true
                statusLabel.text = "Stopping..."
                bridge.stop()
            } else {
                figmaFileName = ""
                bridge.generate()
            }
        }
        Component.onCompleted: forceActiveFocus()
    }
}