Browse Source

Set the is_recently_installed flag

Contributes to: CURA-8587
Jelle Spijker 3 years ago
parent
commit
9e4258ef8b

+ 3 - 3
plugins/Marketplace/LocalPackageList.py

@@ -65,10 +65,10 @@ class LocalPackageList(PackageList):
         package_type = package_info["package_type"]
         package_type = package_info["package_type"]
         section_title = self.PACKAGE_CATEGORIES[bundled_or_installed][package_type]
         section_title = self.PACKAGE_CATEGORIES[bundled_or_installed][package_type]
         package = PackageModel(package_info, section_title = section_title, parent = self)
         package = PackageModel(package_info, section_title = section_title, parent = self)
-        if package_id in self._manager.getPackagesToRemove() or package_id in self._manager.getPackagesToInstall():
-            package.is_recently_managed = True
-        package.can_downgrade = self._manager.canDowngrade(package_id)
         self._connectManageButtonSignals(package)
         self._connectManageButtonSignals(package)
+        package.can_downgrade = self._manager.canDowngrade(package_id)
+        if package_id in self._manager.getPackagesToRemove() or package_id in self._manager.getPackagesToInstall():
+            package.is_recently_installed = True
         return package
         return package
 
 
     def checkForUpdates(self, packages: List[Dict[str, Any]]):
     def checkForUpdates(self, packages: List[Dict[str, Any]]):

+ 11 - 2
plugins/Marketplace/PackageModel.py

@@ -7,7 +7,6 @@ from typing import Any, Dict, List, Optional
 
 
 from PyQt5.QtCore import pyqtProperty, QObject, pyqtSignal
 from PyQt5.QtCore import pyqtProperty, QObject, pyqtSignal
 
 
-from cura.CuraApplication import CuraApplication
 from cura.Settings.CuraContainerRegistry import CuraContainerRegistry  # To get names of materials we're compatible with.
 from cura.Settings.CuraContainerRegistry import CuraContainerRegistry  # To get names of materials we're compatible with.
 from UM.i18n import i18nCatalog  # To translate placeholder names if data is not present.
 from UM.i18n import i18nCatalog  # To translate placeholder names if data is not present.
 
 
@@ -70,7 +69,7 @@ class PackageModel(QObject):
             self._icon_url = author_data.get("icon_url", "")
             self._icon_url = author_data.get("icon_url", "")
 
 
         self._is_installing: ManageState = ManageState.HALTED
         self._is_installing: ManageState = ManageState.HALTED
-        self._is_recently_installed = self._package_id in CuraApplication.getInstance().getPackageManager().getPackagesToInstall()
+        self._is_recently_installed = False
         self._is_recently_updated = False
         self._is_recently_updated = False
         self._is_recently_enabled = False
         self._is_recently_enabled = False
 
 
@@ -361,6 +360,16 @@ class PackageModel(QObject):
                 self._is_recently_installed = True
                 self._is_recently_installed = True
             self.stateManageButtonChanged.emit()
             self.stateManageButtonChanged.emit()
 
 
+    @property
+    def is_recently_installed(self):
+        return self._is_recently_installed
+
+    @is_recently_installed.setter
+    def is_recently_installed(self, value):
+        if value != self._is_recently_installed:
+            value = self._is_recently_installed
+            self.stateManageButtonChanged.emit()
+
     @property
     @property
     def can_downgrade(self) -> bool:
     def can_downgrade(self) -> bool:
         """Flag if the installed package can be downgraded to a bundled version"""
         """Flag if the installed package can be downgraded to a bundled version"""

+ 4 - 1
plugins/Marketplace/RemotePackageList.py

@@ -129,11 +129,14 @@ class RemotePackageList(PackageList):
             return
             return
 
 
         for package_data in response_data["data"]:
         for package_data in response_data["data"]:
-            if package_data["package_id"] in self._local_packages:
+            package_id = package_data["package_id"]
+            if package_id in self._local_packages:
                 continue  # We should only show packages which are not already installed
                 continue  # We should only show packages which are not already installed
             try:
             try:
                 package = PackageModel(package_data, parent = self)
                 package = PackageModel(package_data, parent = self)
                 self._connectManageButtonSignals(package)
                 self._connectManageButtonSignals(package)
+                if package_id in self._manager.getPackagesToRemove() or package_id in self._manager.getPackagesToInstall():
+                    package.is_recently_installed = True
                 self.appendItem({"package": package})  # Add it to this list model.
                 self.appendItem({"package": package})  # Add it to this list model.
             except RuntimeError:
             except RuntimeError:
                 # Setting the ownership of this object to not qml can still result in a RuntimeError. Which can occur when quickly toggling
                 # Setting the ownership of this object to not qml can still result in a RuntimeError. Which can occur when quickly toggling