From eda868f9383cd27c36747f6a50ef92261279bbbf Mon Sep 17 00:00:00 2001 From: Kostas Karmas Date: Wed, 29 Apr 2020 13:31:45 +0200 Subject: [PATCH] Make the discovered cloud printers model generic Removed the dependency of the DiscoveredCloudPrintersModel on CloudOutputDevice, which is Ultimaker specific. This can allow even external plugins to add to this model in the future. CURA-7022 --- cura/CuraApplication.py | 10 +++++----- ...ntersModel.py => DiscoveredCloudPrintersModel.py} | 12 +++--------- .../src/Cloud/CloudOutputDeviceManager.py | 9 ++++++++- resources/qml/WelcomePages/AddCloudPrintersView.qml | 2 +- .../qml/WelcomePages/AddNetworkPrinterScrollView.qml | 2 +- resources/qml/WelcomePages/CloudContent.qml | 2 +- 6 files changed, 19 insertions(+), 18 deletions(-) rename cura/Machines/Models/{DiscoveredUltimakerCloudPrintersModel.py => DiscoveredCloudPrintersModel.py} (81%) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 9c8b0265d1..67a9451282 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -56,7 +56,7 @@ from cura.Machines.MachineErrorChecker import MachineErrorChecker from cura.Machines.Models.BuildPlateModel import BuildPlateModel from cura.Machines.Models.CustomQualityProfilesDropDownMenuModel import CustomQualityProfilesDropDownMenuModel from cura.Machines.Models.DiscoveredPrintersModel import DiscoveredPrintersModel -from cura.Machines.Models.DiscoveredUltimakerCloudPrintersModel import DiscoveredUltimakerCloudPrintersModel +from cura.Machines.Models.DiscoveredCloudPrintersModel import DiscoveredCloudPrintersModel from cura.Machines.Models.ExtrudersModel import ExtrudersModel from cura.Machines.Models.FavoriteMaterialsModel import FavoriteMaterialsModel from cura.Machines.Models.FirstStartMachineActionsModel import FirstStartMachineActionsModel @@ -202,7 +202,7 @@ class CuraApplication(QtApplication): self._quality_management_model = None self._discovered_printer_model = DiscoveredPrintersModel(self, parent = self) - self._discovered_ultimaker_cloud_printers_model = DiscoveredUltimakerCloudPrintersModel(self, parent = self) + self._discovered_cloud_printers_model = DiscoveredCloudPrintersModel(self, parent = self) self._first_start_machine_actions_model = None self._welcome_pages_model = WelcomePagesModel(self, parent = self) self._add_printer_pages_model = AddPrinterPagesModel(self, parent = self) @@ -889,8 +889,8 @@ class CuraApplication(QtApplication): return self._discovered_printer_model @pyqtSlot(result=QObject) - def getDiscoveredUltimakerCloudPrintersModel(self, *args) -> "DiscoveredUltimakerCloudPrintersModel": - return self._discovered_ultimaker_cloud_printers_model + def getDiscoveredCloudPrintersModel(self, *args) -> "DiscoveredCloudPrintersModel": + return self._discovered_cloud_printers_model @pyqtSlot(result = QObject) def getFirstStartMachineActionsModel(self, *args) -> "FirstStartMachineActionsModel": @@ -1090,7 +1090,7 @@ class CuraApplication(QtApplication): self.processEvents() qmlRegisterType(DiscoveredPrintersModel, "Cura", 1, 0, "DiscoveredPrintersModel") - qmlRegisterType(DiscoveredUltimakerCloudPrintersModel, "Cura", 1, 7, "DiscoveredUltimakerCloudPrintersModel") + qmlRegisterType(DiscoveredCloudPrintersModel, "Cura", 1, 7, "DiscoveredCloudPrintersModel") qmlRegisterSingletonType(QualityProfilesDropDownMenuModel, "Cura", 1, 0, "QualityProfilesDropDownMenuModel", self.getQualityProfilesDropDownMenuModel) qmlRegisterSingletonType(CustomQualityProfilesDropDownMenuModel, "Cura", 1, 0, diff --git a/cura/Machines/Models/DiscoveredUltimakerCloudPrintersModel.py b/cura/Machines/Models/DiscoveredCloudPrintersModel.py similarity index 81% rename from cura/Machines/Models/DiscoveredUltimakerCloudPrintersModel.py rename to cura/Machines/Models/DiscoveredCloudPrintersModel.py index c92f84471c..e232afe8b9 100644 --- a/cura/Machines/Models/DiscoveredUltimakerCloudPrintersModel.py +++ b/cura/Machines/Models/DiscoveredCloudPrintersModel.py @@ -8,7 +8,7 @@ if TYPE_CHECKING: from cura.CuraApplication import CuraApplication -class DiscoveredUltimakerCloudPrintersModel(ListModel): +class DiscoveredCloudPrintersModel(ListModel): DeviceKeyRole = Qt.UserRole + 1 DeviceNameRole = Qt.UserRole + 2 DeviceTypeRole = Qt.UserRole + 3 @@ -28,14 +28,8 @@ class DiscoveredUltimakerCloudPrintersModel(ListModel): self._new_cloud_printers_detected = False # type: bool self._application = application # type: CuraApplication - def addDiscoveredUltimakerCloudPrinters(self, new_devices: List[Optional[Dict[str, str]]]) -> None: - for device in new_devices: - self._discovered_ultimaker_cloud_printers_list.append({ - "key": device.getId(), - "name": device.name, - "machine_type": device.printerTypeName, - "firmware_version": device.firmwareVersion - }) + def addDiscoveredCloudPrinters(self, new_devices: List[Dict[str, str]]) -> None: + self._discovered_ultimaker_cloud_printers_list.extend(new_devices) self._update() # Inform whether new cloud printers have been detected. If they have, the welcome wizard can close. diff --git a/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py b/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py index 5e03b65279..c20456d243 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py +++ b/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py @@ -142,7 +142,14 @@ class CloudOutputDeviceManager: self._remote_clusters[device.getId()] = device remote_clusters_added = True - CuraApplication.getInstance().getDiscoveredUltimakerCloudPrintersModel().addDiscoveredUltimakerCloudPrinters(new_devices) + # Inform the Cloud printers model about new devices. + new_devices_list_of_dicts = [{ + "key": d.getId(), + "name": d.name, + "machine_type": d.printerTypeName, + "firmware_version": d.firmwareVersion} for d in new_devices] + discovered_cloud_printers_model = CuraApplication.getInstance().getDiscoveredCloudPrintersModel() + discovered_cloud_printers_model.addDiscoveredCloudPrinters(new_devices_list_of_dicts) if not new_devices: if remote_clusters_added: diff --git a/resources/qml/WelcomePages/AddCloudPrintersView.qml b/resources/qml/WelcomePages/AddCloudPrintersView.qml index 24865a9a2d..bf7831c5c6 100644 --- a/resources/qml/WelcomePages/AddCloudPrintersView.qml +++ b/resources/qml/WelcomePages/AddCloudPrintersView.qml @@ -20,7 +20,7 @@ Item UM.I18nCatalog { id: catalog; name: "cura" } property bool searchingForCloudPrinters: true - property var discoveredCloudPrintersModel: CuraApplication.getDiscoveredUltimakerCloudPrintersModel() + property var discoveredCloudPrintersModel: CuraApplication.getDiscoveredCloudPrintersModel() Rectangle { diff --git a/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml b/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml index 0139064258..af60c9c723 100644 --- a/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml +++ b/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml @@ -203,7 +203,7 @@ Item text: catalog.i18nc("@label", "Add cloud printer") height: UM.Theme.getSize("message_action_button").height onClicked: { - CuraApplication.getDiscoveredUltimakerCloudPrintersModel().clear() + CuraApplication.getDiscoveredCloudPrintersModel().clear() base.addCloudPrinterButtonClicked() } } diff --git a/resources/qml/WelcomePages/CloudContent.qml b/resources/qml/WelcomePages/CloudContent.qml index 83a258a3f5..48410f7f12 100644 --- a/resources/qml/WelcomePages/CloudContent.qml +++ b/resources/qml/WelcomePages/CloudContent.qml @@ -17,7 +17,7 @@ Item signal cloudPrintersDetected(bool newCloudPrintersDetected) - Component.onCompleted: CuraApplication.getDiscoveredUltimakerCloudPrintersModel().cloudPrintersDetectedChanged.connect(cloudPrintersDetected) + Component.onCompleted: CuraApplication.getDiscoveredCloudPrintersModel().cloudPrintersDetectedChanged.connect(cloudPrintersDetected) onCloudPrintersDetected: {