QIcon IconFactory::getIcon(const QString &themeName, ushort id, const QColor &color, const QColor &activeColor) { // Icon from theme if ( (!m_loaded || useSystemIcons()) && !themeName.isEmpty() ) { QIcon icon = QIcon::fromTheme(themeName); if ( !icon.isNull() ) return icon; } // Icon with different color than for QMenu if ( color != m_iconColor || activeColor != m_iconColorActive ) { QIcon icon( createPixmap(id, color) ); if ( activeColor.isValid() ) icon.addPixmap( createPixmap(id, activeColor), QIcon::Selected ); return icon; } IconCache::iterator it = m_iconCache.find(id); if ( it == m_iconCache.end() ) { QIcon icon( createPixmap(id, m_iconColor) ); if ( m_iconColorActive.isValid() ) { icon.addPixmap( createPixmap(id, m_iconColorActive), QIcon::Active ); icon.addPixmap( createPixmap(id, m_iconColorActive), QIcon::Selected ); } it = m_iconCache.insert(id, icon); } return *it; }
const QIcon IconFactory::getIcon(const QString &themeName, ushort id) { IconCache::iterator it = m_iconCache.find(id); if ( it == m_iconCache.end() ) { if ( (!isLoaded() || useSystemIcons()) && !themeName.isEmpty() ) { QIcon icon = QIcon::fromTheme(themeName); if ( !icon.isNull() ) return icon; } QIcon icon( getPixmap(id) ); it = m_iconCache.insert(id, icon); } return *it; }