From cd8a0fc0bcd4355f55d38e60312ecab88d38c7f9 Mon Sep 17 00:00:00 2001 From: Kostas Karmas Date: Fri, 24 Apr 2020 19:09:50 +0200 Subject: [PATCH] Introduce DiscoveredUltimakerCloudPrintersModel Have a separate model to hold the discovered ultimaker cloud printers. This model will be used to communicate across the application that new cloud printers have been found which they weren't seen before. CURA-7022 --- .../DiscoveredUltimakerCloudPrintersModel.py | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 cura/Machines/Models/DiscoveredUltimakerCloudPrintersModel.py diff --git a/cura/Machines/Models/DiscoveredUltimakerCloudPrintersModel.py b/cura/Machines/Models/DiscoveredUltimakerCloudPrintersModel.py new file mode 100644 index 0000000000..f2c5cf0374 --- /dev/null +++ b/cura/Machines/Models/DiscoveredUltimakerCloudPrintersModel.py @@ -0,0 +1,56 @@ +from typing import Optional, TYPE_CHECKING + +from PyQt5.QtCore import QObject, pyqtSlot, Qt + +from UM.Qt.ListModel import ListModel + +if TYPE_CHECKING: + from cura.CuraApplication import CuraApplication + + +class DiscoveredUltimakerCloudPrintersModel(ListModel): + IpAddressRole = Qt.UserRole + 1 + DeviceKeyRole = Qt.UserRole + 2 + DeviceNameRole = Qt.UserRole + 3 + DeviceTypeRole = Qt.UserRole + 4 + DeviceFirmwareVersionRole = Qt.UserRole + 5 + + def __init__(self, application: "CuraApplication", parent: Optional["QObject"] = None) -> None: + super().__init__(parent) + + self.addRoleName(self.IpAddressRole, "ip_address") + self.addRoleName(self.DeviceKeyRole, "key") + self.addRoleName(self.DeviceNameRole, "name") + self.addRoleName(self.DeviceTypeRole, "machine_type") + self.addRoleName(self.DeviceFirmwareVersionRole, "firmware_version") + + self._discovered_ultimaker_cloud_printers_list = [] + self._application = application + + def addDiscoveredUltimakerCloudPrinter(self, new_devices) -> None: + for device in new_devices: + self._discovered_ultimaker_cloud_printers_list.append({ + "ip_address": device.key, + "key": device.getId(), + "name": device.name, + "machine_type": device.printerTypeName, + "firmware_version": device.firmwareVersion + }) + self._update() + + @pyqtSlot() + def clearDiscoveredUltimakerCloudPrinters(self): + self._discovered_ultimaker_cloud_printers_list = [] + self._update() + + def _update(self): + items = [] + + for cloud_printer in self._discovered_ultimaker_cloud_printers_list: + items.append(cloud_printer) + + # Execute all filters. + filtered_items = list(items) + + filtered_items.sort(key = lambda k: k["name"]) + self.setItems(filtered_items)