From ab7f41e658b879386b60e1a04a6e2dc8fe75fa09 Mon Sep 17 00:00:00 2001
From: Christiaan Janssen <christiaan.janssen@nokia.com>
Date: Wed, 10 Feb 2010 17:46:52 +0100
Subject: [PATCH] QmlDesigner.Navigator: Showing icons for the items' types

---
 .../components/navigator/navigatortreeview.cpp | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp b/src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp
index 6c6defb53fc..1db87aa6342 100644
--- a/src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp
+++ b/src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp
@@ -34,6 +34,7 @@
 #include "navigatorwidget.h"
 
 #include <nodeproperty.h>
+#include "metainfo.h"
 
 #define _separator_line_color_ "#757575"
 
@@ -78,7 +79,22 @@ void IdItemDelegate::paint(QPainter *painter,
     ModelNode node = m_TreeModel->nodeForIndex(index);
 
     QIcon icon=node.metaInfo().icon();
-    if (icon.isNull()) icon = QIcon(":/ItemLibrary/images/default-icon.png");
+    if (icon.isNull())
+    {
+        // if node has no own icon, search for it in the itemlibrary
+        QList <ItemLibraryInfo> InfoList = node.metaInfo().metaInfo().itemLibraryRepresentations(node.metaInfo());
+        foreach (const ItemLibraryInfo &entry, InfoList)
+        {
+            if (entry.typeName()==node.metaInfo().typeName()) {
+                icon = entry.icon();
+                break;
+            }
+        }
+
+        // if the library was also empty, use the default icon
+        if (icon.isNull()) icon = QIcon(":/ItemLibrary/images/default-icon.png");
+    }
+
     QPixmap pixmap = icon.pixmap(option.rect.width(),option.rect.height()-4);
     painter->drawPixmap(option.rect.x()+5,option.rect.y()+2,pixmap);
 
-- 
GitLab