Browse Source

Merge pull request #7785 from Ultimaker/CURA-7436_cloud_printer_remove_warning

CURA-7436_cloud_printer_remove_warning
Konstantinos Karmas 4 years ago
parent
commit
e22b672f12

+ 13 - 4
cura/Machines/Models/GlobalStacksModel.py

@@ -19,6 +19,7 @@ class GlobalStacksModel(ListModel):
     ConnectionTypeRole = Qt.UserRole + 4
     MetaDataRole = Qt.UserRole + 5
     DiscoverySourceRole = Qt.UserRole + 6  # For separating local and remote printers in the machine management page
+    RemovalWarningRole = Qt.UserRole + 7
 
     def __init__(self, parent = None) -> None:
         super().__init__(parent)
@@ -65,13 +66,21 @@ class GlobalStacksModel(ListModel):
             if parseBool(container_stack.getMetaDataEntry("hidden", False)):
                 continue
 
-            section_name = "Network enabled printers" if has_remote_connection else "Local printers"
+            device_name = container_stack.getMetaDataEntry("group_name", container_stack.getName())
+            section_name = "Connected printers" if has_remote_connection else "Preset printers"
             section_name = self._catalog.i18nc("@info:title", section_name)
 
-            items.append({"name": container_stack.getMetaDataEntry("group_name", container_stack.getName()),
+            default_removal_warning = self._catalog.i18nc(
+                "@label ({} is object name)",
+                "Are you sure you wish to remove {}? This cannot be undone!", device_name
+            )
+            removal_warning = container_stack.getMetaDataEntry("removal_warning", default_removal_warning)
+
+            items.append({"name": device_name,
                           "id": container_stack.getId(),
                           "hasRemoteConnection": has_remote_connection,
                           "metadata": container_stack.getMetaData().copy(),
-                          "discoverySource": section_name})
-        items.sort(key = lambda i: (not i["hasRemoteConnection"], i["name"]))
+                          "discoverySource": section_name,
+                          "removalWarning": removal_warning})
+        items.sort(key=lambda i: (not i["hasRemoteConnection"], i["name"]))
         self.setItems(items)

+ 7 - 0
plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py

@@ -265,6 +265,13 @@ class CloudOutputDeviceManager:
         machine.setName(device.name)
         machine.setMetaDataEntry(self.META_CLUSTER_ID, device.key)
         machine.setMetaDataEntry("group_name", device.name)
+        machine.setMetaDataEntry("removal_warning", self.I18N_CATALOG.i18nc(
+            "@label ({} is printer name)",
+            "{} will be removed until the next account sync. <br> To remove {} permanently, "
+            "visit <a href='https://mycloud.ultimaker.com/'>Ultimaker Digital Factory</a>. "
+            "<br><br>Are you sure you want to remove {} temporarily?",
+            device.name, device.name, device.name
+        ))
         machine.addConfiguredConnectionType(device.connectionType.value)
 
     def _connectToOutputDevice(self, device: CloudOutputDevice, machine: GlobalStack) -> None:

+ 1 - 0
resources/qml/Preferences/MachinesPage.qml

@@ -136,6 +136,7 @@ UM.ManagementPage
         {
             id: confirmDialog
             object: base.currentItem && base.currentItem.name ? base.currentItem.name : ""
+            text: base.currentItem ? base.currentItem.removalWarning : "";
             onYes:
             {
                 Cura.MachineManager.removeMachine(base.currentItem.id)