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
This commit is contained in:
Kostas Karmas 2020-04-29 13:31:45 +02:00
parent fb328bd307
commit eda868f938
6 changed files with 19 additions and 18 deletions

View file

@ -56,7 +56,7 @@ from cura.Machines.MachineErrorChecker import MachineErrorChecker
from cura.Machines.Models.BuildPlateModel import BuildPlateModel from cura.Machines.Models.BuildPlateModel import BuildPlateModel
from cura.Machines.Models.CustomQualityProfilesDropDownMenuModel import CustomQualityProfilesDropDownMenuModel from cura.Machines.Models.CustomQualityProfilesDropDownMenuModel import CustomQualityProfilesDropDownMenuModel
from cura.Machines.Models.DiscoveredPrintersModel import DiscoveredPrintersModel 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.ExtrudersModel import ExtrudersModel
from cura.Machines.Models.FavoriteMaterialsModel import FavoriteMaterialsModel from cura.Machines.Models.FavoriteMaterialsModel import FavoriteMaterialsModel
from cura.Machines.Models.FirstStartMachineActionsModel import FirstStartMachineActionsModel from cura.Machines.Models.FirstStartMachineActionsModel import FirstStartMachineActionsModel
@ -202,7 +202,7 @@ class CuraApplication(QtApplication):
self._quality_management_model = None self._quality_management_model = None
self._discovered_printer_model = DiscoveredPrintersModel(self, parent = self) 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._first_start_machine_actions_model = None
self._welcome_pages_model = WelcomePagesModel(self, parent = self) self._welcome_pages_model = WelcomePagesModel(self, parent = self)
self._add_printer_pages_model = AddPrinterPagesModel(self, parent = self) self._add_printer_pages_model = AddPrinterPagesModel(self, parent = self)
@ -889,8 +889,8 @@ class CuraApplication(QtApplication):
return self._discovered_printer_model return self._discovered_printer_model
@pyqtSlot(result=QObject) @pyqtSlot(result=QObject)
def getDiscoveredUltimakerCloudPrintersModel(self, *args) -> "DiscoveredUltimakerCloudPrintersModel": def getDiscoveredCloudPrintersModel(self, *args) -> "DiscoveredCloudPrintersModel":
return self._discovered_ultimaker_cloud_printers_model return self._discovered_cloud_printers_model
@pyqtSlot(result = QObject) @pyqtSlot(result = QObject)
def getFirstStartMachineActionsModel(self, *args) -> "FirstStartMachineActionsModel": def getFirstStartMachineActionsModel(self, *args) -> "FirstStartMachineActionsModel":
@ -1090,7 +1090,7 @@ class CuraApplication(QtApplication):
self.processEvents() self.processEvents()
qmlRegisterType(DiscoveredPrintersModel, "Cura", 1, 0, "DiscoveredPrintersModel") qmlRegisterType(DiscoveredPrintersModel, "Cura", 1, 0, "DiscoveredPrintersModel")
qmlRegisterType(DiscoveredUltimakerCloudPrintersModel, "Cura", 1, 7, "DiscoveredUltimakerCloudPrintersModel") qmlRegisterType(DiscoveredCloudPrintersModel, "Cura", 1, 7, "DiscoveredCloudPrintersModel")
qmlRegisterSingletonType(QualityProfilesDropDownMenuModel, "Cura", 1, 0, qmlRegisterSingletonType(QualityProfilesDropDownMenuModel, "Cura", 1, 0,
"QualityProfilesDropDownMenuModel", self.getQualityProfilesDropDownMenuModel) "QualityProfilesDropDownMenuModel", self.getQualityProfilesDropDownMenuModel)
qmlRegisterSingletonType(CustomQualityProfilesDropDownMenuModel, "Cura", 1, 0, qmlRegisterSingletonType(CustomQualityProfilesDropDownMenuModel, "Cura", 1, 0,

View file

@ -8,7 +8,7 @@ if TYPE_CHECKING:
from cura.CuraApplication import CuraApplication from cura.CuraApplication import CuraApplication
class DiscoveredUltimakerCloudPrintersModel(ListModel): class DiscoveredCloudPrintersModel(ListModel):
DeviceKeyRole = Qt.UserRole + 1 DeviceKeyRole = Qt.UserRole + 1
DeviceNameRole = Qt.UserRole + 2 DeviceNameRole = Qt.UserRole + 2
DeviceTypeRole = Qt.UserRole + 3 DeviceTypeRole = Qt.UserRole + 3
@ -28,14 +28,8 @@ class DiscoveredUltimakerCloudPrintersModel(ListModel):
self._new_cloud_printers_detected = False # type: bool self._new_cloud_printers_detected = False # type: bool
self._application = application # type: CuraApplication self._application = application # type: CuraApplication
def addDiscoveredUltimakerCloudPrinters(self, new_devices: List[Optional[Dict[str, str]]]) -> None: def addDiscoveredCloudPrinters(self, new_devices: List[Dict[str, str]]) -> None:
for device in new_devices: self._discovered_ultimaker_cloud_printers_list.extend(new_devices)
self._discovered_ultimaker_cloud_printers_list.append({
"key": device.getId(),
"name": device.name,
"machine_type": device.printerTypeName,
"firmware_version": device.firmwareVersion
})
self._update() self._update()
# Inform whether new cloud printers have been detected. If they have, the welcome wizard can close. # Inform whether new cloud printers have been detected. If they have, the welcome wizard can close.

View file

@ -142,7 +142,14 @@ class CloudOutputDeviceManager:
self._remote_clusters[device.getId()] = device self._remote_clusters[device.getId()] = device
remote_clusters_added = True 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 not new_devices:
if remote_clusters_added: if remote_clusters_added:

View file

@ -20,7 +20,7 @@ Item
UM.I18nCatalog { id: catalog; name: "cura" } UM.I18nCatalog { id: catalog; name: "cura" }
property bool searchingForCloudPrinters: true property bool searchingForCloudPrinters: true
property var discoveredCloudPrintersModel: CuraApplication.getDiscoveredUltimakerCloudPrintersModel() property var discoveredCloudPrintersModel: CuraApplication.getDiscoveredCloudPrintersModel()
Rectangle Rectangle
{ {

View file

@ -203,7 +203,7 @@ Item
text: catalog.i18nc("@label", "Add cloud printer") text: catalog.i18nc("@label", "Add cloud printer")
height: UM.Theme.getSize("message_action_button").height height: UM.Theme.getSize("message_action_button").height
onClicked: { onClicked: {
CuraApplication.getDiscoveredUltimakerCloudPrintersModel().clear() CuraApplication.getDiscoveredCloudPrintersModel().clear()
base.addCloudPrinterButtonClicked() base.addCloudPrinterButtonClicked()
} }
} }

View file

@ -17,7 +17,7 @@ Item
signal cloudPrintersDetected(bool newCloudPrintersDetected) signal cloudPrintersDetected(bool newCloudPrintersDetected)
Component.onCompleted: CuraApplication.getDiscoveredUltimakerCloudPrintersModel().cloudPrintersDetectedChanged.connect(cloudPrintersDetected) Component.onCompleted: CuraApplication.getDiscoveredCloudPrintersModel().cloudPrintersDetectedChanged.connect(cloudPrintersDetected)
onCloudPrintersDetected: onCloudPrintersDetected:
{ {