123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- // 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.ColorImage
- {
- 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; }
- }
- }
- }
|