From f72b4a524d4267f1003b97777a80b7b96f0c90eb Mon Sep 17 00:00:00 2001
From: Sebastião Guerra <sebastiao.luiz.guerra@gmail.com>
Date: Wed, 2 Sep 2026 09:24:21 -0300
Subject: tdeprint: use IPP metadata for configured printers
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Sebastião Guerra <sebastiao.luiz.guerra@gmail.com>
---
 tdeprint/cups/kmcupsmanager.cpp | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/tdeprint/cups/kmcupsmanager.cpp b/tdeprint/cups/kmcupsmanager.cpp
index cf9eb35e8..d49fb2602 100644
--- a/tdeprint/cups/kmcupsmanager.cpp
+++ b/tdeprint/cups/kmcupsmanager.cpp
@@ -334,7 +334,10 @@ bool KMCupsManager::completePrinterShort(KMPrinter *p)
 		keys.append("member-names");
 	}
 	else
+	{
 		keys.append("device-uri");
+		keys.append("printer-device-id");
+	}
 	req.addKeyword(IPP_TAG_OPERATION,"requested-attributes",keys);
 
 	if (req.doRequest("/printers/"))
@@ -344,6 +347,39 @@ bool KMCupsManager::completePrinterShort(KMPrinter *p)
 		// disabled location
 		//if (req.text("printer-location",value)) p->setLocation(value);
 		if (req.text("printer-make-and-model",value)) p->setDriverInfo(value);
+		if (req.text("printer-device-id",value))
+		{
+			TQStringList fields = TQStringList::split(";", value, false);
+			for (const TQString &field : fields)
+			{
+				int separator = field.find(':');
+				if (separator <= 0)
+				{
+					continue;
+				}
+
+				TQString key = field.left(separator).stripWhiteSpace().upper();
+				TQString fieldValue = field.mid(separator + 1).stripWhiteSpace();
+				if (fieldValue.isEmpty())
+				{
+					continue;
+				}
+				if (key == "MFG" || key == "MANUFACTURER")
+				{
+					if (p->manufacturer().isEmpty())
+					{
+						p->setManufacturer(fieldValue);
+					}
+				}
+				else if (key == "MDL" || key == "MODEL")
+				{
+					if (p->model().isEmpty())
+					{
+						p->setModel(fieldValue);
+					}
+				}
+			}
+		}
 		if (req.uri("device-uri",value))
 		{
 			/**
-- 
cgit v1.2.3

