Browse Source

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
Kostas Karmas 4 years ago
parent
commit
eda868f938

+ 5 - 5
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,

+ 3 - 9
cura/Machines/Models/DiscoveredUltimakerCloudPrintersModel.py → 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.

+ 8 - 1
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:

+ 1 - 1
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
     {

+ 1 - 1
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()
             }
         }

+ 1 - 1
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:
     {