diff --git a/plugins/Marketplace/PackageModel.py b/plugins/Marketplace/PackageModel.py index 93d41187e1..9996a8e1df 100644 --- a/plugins/Marketplace/PackageModel.py +++ b/plugins/Marketplace/PackageModel.py @@ -64,8 +64,6 @@ class PackageModel(QObject): self._is_installing = False self._install_status_changing = False - self._is_recently_installed = False - self._is_recently_updated = False self._can_update = False self._is_updating = False @@ -93,10 +91,8 @@ class PackageModel(QObject): def finished_installed(is_updating): if is_updating: - self._is_recently_installed = True self.setIsUpdating(False) else: - self._is_recently_updated self.setIsInstalling(False) self.isRecentlyInstalledChanged.connect(finished_installed) @@ -362,7 +358,11 @@ class PackageModel(QObject): @pyqtProperty(bool, notify = stateManageButtonChanged) def isInstalled(self) -> bool: - return self._package_id in CuraApplication.getInstance().getPackageManager().getPackagesToInstall() + return self._package_id in CuraApplication.getInstance().getPackageManager().local_packages + + @pyqtProperty(bool, notify = stateManageButtonChanged) + def isRecentlyInstalled(self) -> bool: + return self._package_id in CuraApplication.getInstance().getPackageManager().getPackagesToInstall() or self._package_id in CuraApplication.getInstance().getPackageManager().getPackagesToRemove() @pyqtProperty(bool, notify = stateManageButtonChanged) def isUninstalled(self) -> bool: @@ -389,14 +389,9 @@ class PackageModel(QObject): def isUpdating(self): return self._is_updating - def setIsUpdated(self, value): - if value != self._is_recently_updated: - self._is_recently_updated = value - self.stateManageButtonChanged.emit() - - @pyqtProperty(bool, fset = setIsUpdated, notify = stateManageButtonChanged) - def isUpdated(self): - return self._is_recently_updated + @pyqtProperty(bool, notify = stateManageButtonChanged) + def isRecentlyUpdated(self): + return self._package_id in CuraApplication.getInstance().getPackageManager().getPackagesToInstall() and self._package_id in CuraApplication.getInstance().getPackageManager().getPackagesToRemove() @property def can_update(self) -> bool: diff --git a/plugins/Marketplace/resources/qml/PackageCardHeader.qml b/plugins/Marketplace/resources/qml/PackageCardHeader.qml index ca74d9f77d..5859fbcd8e 100644 --- a/plugins/Marketplace/resources/qml/PackageCardHeader.qml +++ b/plugins/Marketplace/resources/qml/PackageCardHeader.qml @@ -181,7 +181,7 @@ Item ManageButton { id: enableManageButton - visible: showManageButtons && !(installManageButton.confirmed || updateManageButton.confirmed) + visible: showManageButtons && packageData.isInstalled && !(installManageButton.confirmed || updateManageButton.confirmed) enabled: !(installManageButton.busy || updateManageButton.busy) busy: false @@ -208,12 +208,12 @@ Item ManageButton { id: installManageButton - visible: (showManageButtons || confirmed) && ((packageData.isBundled && packageData.canDowngrade) || !packageData.isBundled || !updateManageButton.confirmed) + visible: (showManageButtons || confirmed) && ((packageData.isBundled && packageData.canDowngrade) || !packageData.isBundled) && !updateManageButton.confirmed enabled: !packageData.isUpdating busy: packageData.isInstalling - confirmed: packageData.isInstalled || packageData.isUninstalled + confirmed: packageData.isRecentlyInstalled button_style: packageData.stateManageInstallButton Layout.alignment: Qt.AlignTop @@ -223,7 +223,7 @@ Item if (packageData.stateManageInstallButton) { if (packageData.isInstalling) { return catalog.i18nc("@button", "Installing..."); } - else if (packageData.isInstalled) { return catalog.i18nc("@button", "Installed"); } + else if (packageData.isRecentlyInstalled) { return catalog.i18nc("@button", "Installed"); } else { return catalog.i18nc("@button", "Install"); } } else @@ -254,7 +254,7 @@ Item enabled: !installManageButton.busy busy: packageData.isUpdating - confirmed: packageData.isUpdated + confirmed: packageData.isRecentlyUpdated button_style: true Layout.alignment: Qt.AlignTop @@ -262,7 +262,7 @@ Item text: { if (packageData.isUpdating) { return catalog.i18nc("@button", "Updating..."); } - else if (packageData.isUpdated) { return catalog.i18nc("@button", "Updated"); } + else if (packageData.isRecentlyUpdated) { return catalog.i18nc("@button", "Updated"); } else { return catalog.i18nc("@button", "Update"); } }