diff options
author | casper <c.lamboo@ultimaker.com> | 2021-12-08 17:50:00 +0300 |
---|---|---|
committer | casper <c.lamboo@ultimaker.com> | 2021-12-08 17:50:00 +0300 |
commit | c72fd12ea2b44b1380b3af372e9c96a0bfb4ea88 (patch) | |
tree | 12b4960c82a4ab5fca6d106d90a493d8f0d6486f /plugins/Marketplace/resources | |
parent | 4a436b5598f9df2dfdd0f192539ecc5943b0f737 (diff) |
Make ManageButton a reusable Component
cura 8734
Diffstat (limited to 'plugins/Marketplace/resources')
-rw-r--r-- | plugins/Marketplace/resources/qml/ManageButton.qml | 30 | ||||
-rw-r--r-- | plugins/Marketplace/resources/qml/PackageCard.qml | 95 | ||||
-rw-r--r-- | plugins/Marketplace/resources/qml/PackagePage.qml | 95 |
3 files changed, 158 insertions, 62 deletions
diff --git a/plugins/Marketplace/resources/qml/ManageButton.qml b/plugins/Marketplace/resources/qml/ManageButton.qml index 0614e90c87..7843805e26 100644 --- a/plugins/Marketplace/resources/qml/ManageButton.qml +++ b/plugins/Marketplace/resources/qml/ManageButton.qml @@ -8,17 +8,13 @@ import QtQuick.Layouts 1.1 import UM 1.6 as UM import Cura 1.6 as Cura -RowLayout +Item { id: manageButton property string button_style - property string primaryText - property string secondaryText - property string busyPrimaryText - property string busySecondaryText - property string confirmedPrimaryText - property string confirmedSecondaryText - property bool confirmedTextChoice: true + property string text + property bool busy + property bool confirmed signal clicked(bool primary_action) @@ -27,12 +23,10 @@ RowLayout Cura.PrimaryButton { id: primaryButton - enabled: manageButton.enabled - text: manageButton.primaryText + text: manageButton.text onClicked: { - manageButton.confirmedTextChoice = true manageButton.clicked(true) } } @@ -43,12 +37,10 @@ RowLayout Cura.SecondaryButton { id: secondaryButton - enabled: manageButton.enabled - text: manageButton.secondaryText + text: manageButton.text onClicked: { - manageButton.confirmedTextChoice = false manageButton.clicked(false) } } @@ -59,8 +51,6 @@ RowLayout Item { id: busyMessage - height: UM.Theme.getSize("action_button").height - width: childrenRect.width UM.RecolorImage { @@ -91,7 +81,7 @@ RowLayout anchors.left: busyIndicator.right anchors.leftMargin: UM.Theme.getSize("narrow_margin").width anchors.verticalCenter: parent.verticalCenter - text: manageButton.busyMessageText + text: manageButton.text font: UM.Theme.getFont("medium_bold") color: UM.Theme.getColor("primary") @@ -111,7 +101,7 @@ RowLayout { id: confirmedMessageText anchors.verticalCenter: parent.verticalCenter - text: manageButton.confirmedTextChoice ? manageButton.confirmedPrimaryText : manageButton.confirmedSecondaryText + text: manageButton.text font: UM.Theme.getFont("medium_bold") color: UM.Theme.getColor("primary") @@ -119,8 +109,12 @@ RowLayout } } + height: UM.Theme.getSize("action_button").height + width: childrenRect.width + Loader { + sourceComponent: { switch (manageButton.button_style) diff --git a/plugins/Marketplace/resources/qml/PackageCard.qml b/plugins/Marketplace/resources/qml/PackageCard.qml index 6893b70e56..5c986c2e6e 100644 --- a/plugins/Marketplace/resources/qml/PackageCard.qml +++ b/plugins/Marketplace/resources/qml/PackageCard.qml @@ -257,15 +257,34 @@ Rectangle ManageButton { id: enableManageButton - button_style: !(installManageButton.confirmed || updateManageButton.confirmed) || enableManageButton.confirmed ? packageData.stateManageEnableButton : "hidden" + visible: !(installManageButton.confirmed || updateManageButton.confirmed) || enableManageButton.confirmed + button_style: packageData.stateManageEnableButton Layout.alignment: Qt.AlignTop - primaryText: catalog.i18nc("@button", "Enable") - busyPrimaryText: catalog.i18nc("@button", "Enabling...") - confirmedPrimaryText: catalog.i18nc("@button", "Enabled") - secondaryText: catalog.i18nc("@button", "Disable") - busySecondaryText: catalog.i18nc("@button", "Disabling...") - confirmedSecondaryText: catalog.i18nc("@button", "Disabled") - enabled: !(installManageButton.busy || updateManageButton.busy) + busy: packageData.enableManageButton == "busy" + confirmed: packageData.enableManageButton == "confirmed" + text: { + switch (packageData.stateManageEnableButton) { + case "primary": + return catalog.i18nc("@button", "Enable"); + case "secondary": + return catalog.i18nc("@button", "Disable"); + case "busy": + if (packageData.installationStatus) { + return catalog.i18nc("@button", "Enabling..."); + } else { + return catalog.i18nc("@button", "Disabling..."); + } + case "confirmed": + if (packageData.installationStatus) { + return catalog.i18nc("@button", "Enabled"); + } else { + return catalog.i18nc("@button", "Disabled"); + } + default: + return ""; + } + } + enabled: !installManageButton.busy && !updateManageButton.busy onClicked: { @@ -283,16 +302,34 @@ Rectangle ManageButton { id: installManageButton - button_style: (root.manageableInListView || installManageButton.confirmed) && !(enableManageButton.confirmed || updateManageButton.confirmed) ? packageData.stateManageInstallButton : "hidden" + visible: (root.manageableInListView || installManageButton.confirmed) && !(enableManageButton.confirmed || updateManageButton.confirmed) + button_style: packageData.stateManageInstallButton + busy: packageData.stateManageInstallButton == "busy" + confirmed: packageData.stateManageInstallButton == "confirmed" Layout.alignment: Qt.AlignTop - primaryText: catalog.i18nc("@button", "Install") - busyPrimaryText: catalog.i18nc("@button", "Installing...") - confirmedPrimaryText: catalog.i18nc("@button", "Installed") - secondaryText: catalog.i18nc("@button", "Uninstall") - busySecondaryText: catalog.i18nc("@button", "Uninstalling...") - confirmedSecondaryText: catalog.i18nc("@button", "Uninstalled") - confirmedTextChoice: packageData.installationStatus - enabled: !(enableManageButton.busy || updateManageButton.busy) + text: { + switch (packageData.stateManageInstallButton) { + case "primary": + return catalog.i18nc("@button", "Install"); + case "secondary": + return catalog.i18nc("@button", "Uninstall"); + case "busy": + if (packageData.installationStatus) { + return catalog.i18nc("@button", "Installing..."); + } else { + return catalog.i18nc("@button", "Uninstalling..."); + } + case "confirmed": + if (packageData.installationStatus) { + return catalog.i18nc("@button", "Installed"); + } else { + return catalog.i18nc("@button", "Uninstalled"); + } + default: + return ""; + } + } + enabled: !enableManageButton.busy && !updateManageButton.busy onClicked: { @@ -310,12 +347,26 @@ Rectangle ManageButton { id: updateManageButton - button_style: (root.manageableInListView) && (!installManageButton.confirmed || updateManageButton.confirmed) ? packageData.stateManageUpdateButton : "hidden" + visible: (root.manageableInListView) && (!installManageButton.confirmed || updateManageButton.confirmed) + + button_style: packageData.stateManageUpdateButton + busy: packageData.stateManageUpdateButton == "busy" + confirmed: packageData.stateManageUpdateButton == "confirmed" Layout.alignment: Qt.AlignTop - primaryText: catalog.i18nc("@button", "Update") - busyPrimaryText: catalog.i18nc("@button", "Updating...") - confirmedPrimaryText: catalog.i18nc("@button", "Updated") - enabled: !(installManageButton.busy || enableManageButton.busy) + enabled: !installManageButton.busy && !enableManageButton.busy + + text: { + switch (packageData.stateManageInstallButton) { + case "primary": + return catalog.i18nc("@button", "Update"); + case "busy": + return catalog.i18nc("@button", "Updating..."); + case "confirmed": + return catalog.i18nc("@button", "Updated"); + default: + return ""; + } + } onClicked: packageData.updatePackageTriggered(packageData.packageId) } diff --git a/plugins/Marketplace/resources/qml/PackagePage.qml b/plugins/Marketplace/resources/qml/PackagePage.qml index 5529373ba3..fca25c4022 100644 --- a/plugins/Marketplace/resources/qml/PackagePage.qml +++ b/plugins/Marketplace/resources/qml/PackagePage.qml @@ -207,15 +207,34 @@ Rectangle ManageButton { id: enableManageButton - button_style: !(installManageButton.confirmed || updateManageButton.confirmed) || enableManageButton.confirmed ? packageData.stateManageEnableButton : "hidden" + visible: !(installManageButton.confirmed || updateManageButton.confirmed) || enableManageButton.confirmed + button_style: packageData.stateManageEnableButton Layout.alignment: Qt.AlignTop - primaryText: catalog.i18nc("@button", "Enable") - busyPrimaryText: catalog.i18nc("@button", "Enabling...") - confirmedPrimaryText: catalog.i18nc("@button", "Enabled") - secondaryText: catalog.i18nc("@button", "Disable") - busySecondaryText: catalog.i18nc("@button", "Disabling...") - confirmedSecondaryText: catalog.i18nc("@button", "Disabled") - enabled: !(installManageButton.busy || updateManageButton.busy) + busy: packageData.enableManageButton == "busy" + confirmed: packageData.enableManageButton == "confirmed" + text: { + switch (packageData.stateManageEnableButton) { + case "primary": + return catalog.i18nc("@button", "Enable"); + case "secondary": + return catalog.i18nc("@button", "Disable"); + case "busy": + if (packageData.installationStatus) { + return catalog.i18nc("@button", "Enabling..."); + } else { + return catalog.i18nc("@button", "Disabling..."); + } + case "confirmed": + if (packageData.installationStatus) { + return catalog.i18nc("@button", "Enabled"); + } else { + return catalog.i18nc("@button", "Disabled"); + } + default: + return ""; + } + } + enabled: !installManageButton.busy && !updateManageButton.busy onClicked: { @@ -233,16 +252,34 @@ Rectangle ManageButton { id: installManageButton - button_style: !(enableManageButton.confirmed || updateManageButton.confirmed) ? packageData.stateManageInstallButton : "hidden" + visible: !(enableManageButton.confirmed || updateManageButton.confirmed) + button_style: packageData.stateManageInstallButton + busy: packageData.stateManageInstallButton == "busy" + confirmed: packageData.stateManageInstallButton == "confirmed" Layout.alignment: Qt.AlignTop - primaryText: catalog.i18nc("@button", "Install") - busyPrimaryText: catalog.i18nc("@button", "Installing...") - confirmedPrimaryText: catalog.i18nc("@button", "Installed") - secondaryText: catalog.i18nc("@button", "Uninstall") - busySecondaryText: catalog.i18nc("@button", "Uninstalling...") - confirmedSecondaryText: catalog.i18nc("@button", "Uninstalled") - confirmedTextChoice: packageData.isRecentlyInstalled - enabled: !(enableManageButton.busy || updateManageButton.busy) + text: { + switch (packageData.stateManageInstallButton) { + case "primary": + return catalog.i18nc("@button", "Install"); + case "secondary": + return catalog.i18nc("@button", "Uninstall"); + case "busy": + if (packageData.installationStatus) { + return catalog.i18nc("@button", "Installing..."); + } else { + return catalog.i18nc("@button", "Uninstalling..."); + } + case "confirmed": + if (packageData.installationStatus) { + return catalog.i18nc("@button", "Installed"); + } else { + return catalog.i18nc("@button", "Uninstalled"); + } + default: + return ""; + } + } + enabled: !enableManageButton.busy && !updateManageButton.busy onClicked: { @@ -260,12 +297,26 @@ Rectangle ManageButton { id: updateManageButton - button_style: !installManageButton.confirmed || updateManageButton.confirmed ? packageData.stateManageUpdateButton : "hidden" + visible: !installManageButton.confirmed || updateManageButton.confirmed + + button_style: packageData.stateManageUpdateButton + busy: packageData.stateManageUpdateButton == "busy" + confirmed: packageData.stateManageUpdateButton == "confirmed" Layout.alignment: Qt.AlignTop - primaryText: catalog.i18nc("@button", "Update") - busyPrimaryText: catalog.i18nc("@button", "Updating...") - confirmedPrimaryText: catalog.i18nc("@button", "Updated") - enabled: !(installManageButton.busy || enableManageButton.busy) + enabled: !installManageButton.busy && !enableManageButton.busy + + text: { + switch (packageData.stateManageInstallButton) { + case "primary": + return catalog.i18nc("@button", "Update"); + case "busy": + return catalog.i18nc("@button", "Updating..."); + case "confirmed": + return catalog.i18nc("@button", "Updated"); + default: + return ""; + } + } onClicked: packageData.updatePackageTriggered(packageData.packageId) } |