From a60960a88fdcd9a156e2b040963cc0cee842bf1e Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 19 Nov 2013 12:49:13 +0100 Subject: [PATCH] FileIconProvider: Use hash for cache, instead of list. Change-Id: I5d633ca2d21b6352c59cdeb7cd85267ced1d2170 Reviewed-by: hjk --- src/plugins/coreplugin/fileiconprovider.cpp | 22 +++++---------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/src/plugins/coreplugin/fileiconprovider.cpp b/src/plugins/coreplugin/fileiconprovider.cpp index b136f8287c8..6bba67ba064 100644 --- a/src/plugins/coreplugin/fileiconprovider.cpp +++ b/src/plugins/coreplugin/fileiconprovider.cpp @@ -37,7 +37,7 @@ #include #include #include -#include +#include #include #include @@ -68,9 +68,6 @@ namespace FileIconProvider { enum { debug = 0 }; -typedef QPair StringIconPair; -typedef QList StringIconPairList; - class FileIconProviderImplementation : public QFileIconProvider { public: @@ -89,15 +86,8 @@ public: QTC_ASSERT(!icon.isNull() && !suffix.isEmpty(), return); const QPixmap fileIconPixmap = FileIconProvider::overlayIcon(QStyle::SP_FileIcon, icon, QSize(16, 16)); - // replace old icon, if it exists - for (int i = 0, n = m_cache.size(); i != n; ++i) { - if (m_cache.at(i).first == suffix) { - m_cache[i].second = fileIconPixmap; - return; - } - } - m_cache.append(StringIconPair(suffix, fileIconPixmap)); + m_cache.insert(suffix, fileIconPixmap); } void registerIconOverlayForMimeType(const QIcon &icon, const MimeType &mimeType) @@ -107,7 +97,7 @@ public: } // Mapping of file suffix to icon. - StringIconPairList m_cache; + QHash m_cache; QIcon m_unknownFileIcon; }; @@ -130,10 +120,8 @@ QIcon FileIconProviderImplementation::icon(const QFileInfo &fileInfo) const // Check for cached overlay icons by file suffix. if (!m_cache.isEmpty() && !fileInfo.isDir()) { const QString suffix = fileInfo.suffix(); - if (!suffix.isEmpty()) { - for (int i = 0, n = m_cache.size(); i != n; ++i) - if (m_cache.at(i).first == suffix) - return m_cache[i].second; + if (!suffix.isEmpty() && m_cache.contains(suffix)) { + return m_cache.value(suffix); } } // Get icon from OS.