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

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/Marketplace/resources/qml/ManageButton.qml')
-rw-r--r--plugins/Marketplace/resources/qml/ManageButton.qml114
1 files changed, 114 insertions, 0 deletions
diff --git a/plugins/Marketplace/resources/qml/ManageButton.qml b/plugins/Marketplace/resources/qml/ManageButton.qml
new file mode 100644
index 0000000000..36022ffd54
--- /dev/null
+++ b/plugins/Marketplace/resources/qml/ManageButton.qml
@@ -0,0 +1,114 @@
+// Copyright (c) 2021 Ultimaker B.V.
+// Cura is released under the terms of the LGPLv3 or higher.
+
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+import QtQuick.Layouts 1.1
+
+import UM 1.6 as UM
+import Cura 1.6 as Cura
+
+Item
+{
+ id: manageButton
+ property bool button_style: true
+ property string text
+ property bool busy: false
+ property bool confirmed: false
+
+ implicitWidth: childrenRect.width
+ implicitHeight: childrenRect.height
+
+ signal clicked()
+
+ property Component primaryButton: Component
+ {
+ Cura.PrimaryButton
+ {
+ text: manageButton.text
+ onClicked: manageButton.clicked()
+ }
+ }
+
+ property Component secondaryButton: Component
+ {
+ Cura.SecondaryButton
+ {
+ text: manageButton.text
+ onClicked: manageButton.clicked()
+ }
+ }
+
+ property Component busyButton: Component
+ {
+ Item
+ {
+ height: UM.Theme.getSize("action_button").height
+ width: childrenRect.width
+
+ UM.RecolorImage
+ {
+ id: busyIndicator
+ visible: parent.visible
+ height: UM.Theme.getSize("action_button").height - 2 * UM.Theme.getSize("narrow_margin").height
+ width: height
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+
+ source: UM.Theme.getIcon("Spinner")
+ color: UM.Theme.getColor("primary")
+
+ RotationAnimator
+ {
+ target: busyIndicator
+ running: parent.visible
+ from: 0
+ to: 360
+ loops: Animation.Infinite
+ duration: 2500
+ }
+ }
+ Label
+ {
+ visible: parent.visible
+ anchors.left: busyIndicator.right
+ anchors.leftMargin: UM.Theme.getSize("narrow_margin").width
+ anchors.verticalCenter: parent.verticalCenter
+ text: manageButton.text
+
+ font: UM.Theme.getFont("medium_bold")
+ color: UM.Theme.getColor("primary")
+ }
+ }
+ }
+
+ property Component confirmButton: Component
+ {
+ Item
+ {
+ height: UM.Theme.getSize("action_button").height
+ width: childrenRect.width
+
+ Label
+ {
+ anchors.verticalCenter: parent.verticalCenter
+ text: manageButton.text
+
+ font: UM.Theme.getFont("medium_bold")
+ color: UM.Theme.getColor("primary")
+ }
+ }
+ }
+
+ Loader
+ {
+
+ sourceComponent:
+ {
+ if (busy) { return manageButton.busyButton; }
+ else if (confirmed) { return manageButton.confirmButton; }
+ else if (manageButton.button_style) { return manageButton.primaryButton; }
+ else { return manageButton.secondaryButton; }
+ }
+ }
+}