#pragma once #include #include #include #include namespace UiIcons { inline QPixmap tintedPixmap(const QString &resourcePath, const QColor &color, int size = 18) { const QPixmap source(resourcePath); if (source.isNull()) return QPixmap(); const QPixmap scaled = source.scaled(size, size, Qt::KeepAspectRatio, Qt::SmoothTransformation); QPixmap result(size, size); result.fill(Qt::transparent); QPainter painter(&result); painter.drawPixmap((size - scaled.width()) / 2, (size - scaled.height()) / 2, scaled); painter.setCompositionMode(QPainter::CompositionMode_SourceIn); painter.fillRect(result.rect(), color); return result; } inline QIcon icon(const QString &resourcePath, const QColor &normal = QColor(QStringLiteral("#46535f")), const QColor &selected = QColor(QStringLiteral("#ffffff")), const QColor &disabled = QColor(QStringLiteral("#9aa3ad")), int size = 18) { QIcon result; const QPixmap normalPixmap = tintedPixmap(resourcePath, normal, size); const QPixmap selectedPixmap = tintedPixmap(resourcePath, selected, size); const QPixmap disabledPixmap = tintedPixmap(resourcePath, disabled, size); result.addPixmap(normalPixmap, QIcon::Normal, QIcon::Off); result.addPixmap(selectedPixmap, QIcon::Active, QIcon::Off); result.addPixmap(selectedPixmap, QIcon::Normal, QIcon::On); result.addPixmap(selectedPixmap, QIcon::Active, QIcon::On); result.addPixmap(disabledPixmap, QIcon::Disabled, QIcon::Off); result.addPixmap(disabledPixmap, QIcon::Disabled, QIcon::On); return result; } } // namespace UiIcons