From 2585b240d33ed244e72717a539d7d50f9e63470d Mon Sep 17 00:00:00 2001
From: Joost Lekkerkerker <joostlek@outlook.com>
Date: Tue, 5 Mar 2024 08:43:37 +0100
Subject: [PATCH] Add icon translations to Prusalink (#112188)

---
 homeassistant/components/prusalink/button.py  |  3 --
 homeassistant/components/prusalink/icons.json | 35 +++++++++++++++++++
 homeassistant/components/prusalink/sensor.py  |  6 ----
 3 files changed, 35 insertions(+), 9 deletions(-)
 create mode 100644 homeassistant/components/prusalink/icons.json

diff --git a/homeassistant/components/prusalink/button.py b/homeassistant/components/prusalink/button.py
index 8f8a62794a9..46d10fc9703 100644
--- a/homeassistant/components/prusalink/button.py
+++ b/homeassistant/components/prusalink/button.py
@@ -40,7 +40,6 @@ BUTTONS: dict[str, tuple[PrusaLinkButtonEntityDescription, ...]] = {
         PrusaLinkButtonEntityDescription[PrinterStatus](
             key="printer.cancel_job",
             translation_key="cancel_job",
-            icon="mdi:cancel",
             press_fn=lambda api: api.cancel_job,
             available_fn=lambda data: (
                 data["printer"]["state"]
@@ -50,7 +49,6 @@ BUTTONS: dict[str, tuple[PrusaLinkButtonEntityDescription, ...]] = {
         PrusaLinkButtonEntityDescription[PrinterStatus](
             key="job.pause_job",
             translation_key="pause_job",
-            icon="mdi:pause",
             press_fn=lambda api: api.pause_job,
             available_fn=lambda data: cast(
                 bool, data["printer"]["state"] == PrinterState.PRINTING.value
@@ -59,7 +57,6 @@ BUTTONS: dict[str, tuple[PrusaLinkButtonEntityDescription, ...]] = {
         PrusaLinkButtonEntityDescription[PrinterStatus](
             key="job.resume_job",
             translation_key="resume_job",
-            icon="mdi:play",
             press_fn=lambda api: api.resume_job,
             available_fn=lambda data: cast(
                 bool, data["printer"]["state"] == PrinterState.PAUSED.value
diff --git a/homeassistant/components/prusalink/icons.json b/homeassistant/components/prusalink/icons.json
new file mode 100644
index 00000000000..4d97ea76ddd
--- /dev/null
+++ b/homeassistant/components/prusalink/icons.json
@@ -0,0 +1,35 @@
+{
+  "entity": {
+    "button": {
+      "cancel_job": {
+        "default": "mdi:cancel"
+      },
+      "pause_job": {
+        "default": "mdi:pause"
+      },
+      "resume_job": {
+        "default": "mdi:play"
+      }
+    },
+    "sensor": {
+      "printer_state": {
+        "default": "mdi:printer-3d"
+      },
+      "material": {
+        "default": "mdi:palette-swatch-variant"
+      },
+      "progress": {
+        "default": "mdi:progress-clock"
+      },
+      "filename": {
+        "default": "mdi:file-image-outline"
+      },
+      "print_start": {
+        "default": "mdi:clock-start"
+      },
+      "print_finish": {
+        "default": "mdi:clock-end"
+      }
+    }
+  }
+}
diff --git a/homeassistant/components/prusalink/sensor.py b/homeassistant/components/prusalink/sensor.py
index 29e1d5c9757..efdd044399a 100644
--- a/homeassistant/components/prusalink/sensor.py
+++ b/homeassistant/components/prusalink/sensor.py
@@ -54,7 +54,6 @@ SENSORS: dict[str, tuple[PrusaLinkSensorEntityDescription, ...]] = {
         PrusaLinkSensorEntityDescription[PrinterStatus](
             key="printer.state",
             name=None,
-            icon="mdi:printer-3d",
             value_fn=lambda data: (cast(str, data["printer"]["state"].lower())),
             device_class=SensorDeviceClass.ENUM,
             options=[state.value.lower() for state in PrinterState],
@@ -137,7 +136,6 @@ SENSORS: dict[str, tuple[PrusaLinkSensorEntityDescription, ...]] = {
         PrusaLinkSensorEntityDescription[LegacyPrinterStatus](
             key="printer.telemetry.material",
             translation_key="material",
-            icon="mdi:palette-swatch-variant",
             value_fn=lambda data: cast(str, data["telemetry"]["material"]),
         ),
     ),
@@ -145,7 +143,6 @@ SENSORS: dict[str, tuple[PrusaLinkSensorEntityDescription, ...]] = {
         PrusaLinkSensorEntityDescription[JobInfo](
             key="job.progress",
             translation_key="progress",
-            icon="mdi:progress-clock",
             native_unit_of_measurement=PERCENTAGE,
             value_fn=lambda data: cast(float, data["progress"]),
             available_fn=lambda data: data.get("progress") is not None,
@@ -153,7 +150,6 @@ SENSORS: dict[str, tuple[PrusaLinkSensorEntityDescription, ...]] = {
         PrusaLinkSensorEntityDescription[JobInfo](
             key="job.filename",
             translation_key="filename",
-            icon="mdi:file-image-outline",
             value_fn=lambda data: cast(str, data["file"]["display_name"]),
             available_fn=lambda data: data.get("file") is not None,
         ),
@@ -161,7 +157,6 @@ SENSORS: dict[str, tuple[PrusaLinkSensorEntityDescription, ...]] = {
             key="job.start",
             translation_key="print_start",
             device_class=SensorDeviceClass.TIMESTAMP,
-            icon="mdi:clock-start",
             value_fn=ignore_variance(
                 lambda data: (utcnow() - timedelta(seconds=data["time_printing"])),
                 timedelta(minutes=2),
@@ -171,7 +166,6 @@ SENSORS: dict[str, tuple[PrusaLinkSensorEntityDescription, ...]] = {
         PrusaLinkSensorEntityDescription[JobInfo](
             key="job.finish",
             translation_key="print_finish",
-            icon="mdi:clock-end",
             device_class=SensorDeviceClass.TIMESTAMP,
             value_fn=ignore_variance(
                 lambda data: (utcnow() + timedelta(seconds=data["time_remaining"])),