diff --git a/cura/API/Account.py b/cura/API/Account.py index 9864de1aaa..7273479de4 100644 --- a/cura/API/Account.py +++ b/cura/API/Account.py @@ -29,7 +29,6 @@ class Account(QObject): # Signal emitted when user logged in or out. loginStateChanged = pyqtSignal(bool) accessTokenChanged = pyqtSignal() - cloudPrintersDetectedChanged = pyqtSignal(bool) def __init__(self, application: "CuraApplication", parent = None) -> None: super().__init__(parent) @@ -76,10 +75,6 @@ class Account(QObject): def isLoggedIn(self) -> bool: return self._logged_in - @pyqtProperty(bool, notify=cloudPrintersDetectedChanged) - def newCloudPrintersDetected(self) -> bool: - return self._new_cloud_printers_detected - def _onLoginStateChanged(self, logged_in: bool = False, error_message: Optional[str] = None) -> None: if error_message: if self._error_message: diff --git a/cura/Machines/Models/DiscoveredUltimakerCloudPrintersModel.py b/cura/Machines/Models/DiscoveredUltimakerCloudPrintersModel.py index 2f8ddb3f40..b02b79bc71 100644 --- a/cura/Machines/Models/DiscoveredUltimakerCloudPrintersModel.py +++ b/cura/Machines/Models/DiscoveredUltimakerCloudPrintersModel.py @@ -1,6 +1,6 @@ from typing import Optional, TYPE_CHECKING -from PyQt5.QtCore import QObject, pyqtSlot, Qt +from PyQt5.QtCore import QObject, pyqtSlot, Qt, pyqtSignal, pyqtProperty from UM.Qt.ListModel import ListModel @@ -14,6 +14,8 @@ class DiscoveredUltimakerCloudPrintersModel(ListModel): DeviceTypeRole = Qt.UserRole + 3 DeviceFirmwareVersionRole = Qt.UserRole + 4 + cloudPrintersDetectedChanged = pyqtSignal() + def __init__(self, application: "CuraApplication", parent: Optional["QObject"] = None) -> None: super().__init__(parent) @@ -23,6 +25,7 @@ class DiscoveredUltimakerCloudPrintersModel(ListModel): self.addRoleName(self.DeviceFirmwareVersionRole, "firmware_version") self._discovered_ultimaker_cloud_printers_list = [] + self._new_cloud_printers_detected = False self._application = application def addDiscoveredUltimakerCloudPrinters(self, new_devices) -> None: @@ -35,10 +38,16 @@ class DiscoveredUltimakerCloudPrintersModel(ListModel): }) self._update() + # Inform whether new cloud printers have been detected. If they have, the welcome wizard can close. + self._new_cloud_printers_detected = len(new_devices) > 0 + self.cloudPrintersDetectedChanged.emit() + @pyqtSlot() def clear(self): self._discovered_ultimaker_cloud_printers_list = [] self._update() + self._new_cloud_printers_detected = False + self.cloudPrintersDetectedChanged.emit() def _update(self): items = [] @@ -51,3 +60,7 @@ class DiscoveredUltimakerCloudPrintersModel(ListModel): filtered_items.sort(key = lambda k: k["name"]) self.setItems(filtered_items) + + @pyqtProperty(bool, notify = cloudPrintersDetectedChanged) + def newCloudPrintersDetected(self) -> bool: + return self._new_cloud_printers_detected diff --git a/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py b/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py index 40dbeadbec..5e03b65279 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py +++ b/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py @@ -106,10 +106,6 @@ class CloudOutputDeviceManager: self._onDevicesDiscovered(new_clusters) - # Inform whether new cloud printers have been detected. If they have, the welcome wizard can close. - self._account._new_cloud_printers_detected = len(new_clusters) > 0 - self._account.cloudPrintersDetectedChanged.emit(len(new_clusters) > 0) - removed_device_keys = set(self._remote_clusters.keys()) - set(online_clusters.keys()) for device_id in removed_device_keys: self._onDiscoveredDeviceRemoved(device_id) diff --git a/resources/qml/WelcomePages/CloudContent.qml b/resources/qml/WelcomePages/CloudContent.qml index a14c6600cd..2a71f877e5 100644 --- a/resources/qml/WelcomePages/CloudContent.qml +++ b/resources/qml/WelcomePages/CloudContent.qml @@ -15,7 +15,7 @@ Item { UM.I18nCatalog { id: catalog; name: "cura" } - property bool newCloudPrintersDetected: Cura.API.account.newCloudPrintersDetected + property bool newCloudPrintersDetected: CuraApplication.getDiscoveredUltimakerCloudPrintersModel().newCloudPrintersDetected onNewCloudPrintersDetectedChanged: {