X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Ficonutils.h;h=4db2ed31316286eda6be89c62fcb2d82fa0c2968;hb=refs%2Fheads%2Fmaster;hp=398fc4ca923ae61119204765b9561a6f65b9c509;hpb=ce2a2ef756f5a0de914b05de10eba68549dfe5bd;p=minitube diff --git a/src/iconutils.h b/src/iconutils.h index 398fc4c..4db2ed3 100644 --- a/src/iconutils.h +++ b/src/iconutils.h @@ -24,21 +24,43 @@ $END_LICENSE */ #include class IconUtils { - public: + static void setSizes(const QVector &value); + static QIcon fromTheme(const QString &name); - static QIcon fromResources(const QString &name); - static QIcon icon(const QString &name); - static QIcon icon(const QStringList &names); - static QIcon tintedIcon(const QString &name, const QColor &color, - QList sizes = QList()); - static QIcon tintedIcon(const QString &name, const QColor &color, const QSize &size); - static void setupAction(QAction *action); + static QIcon fromResources(const char *name); + + template static void setIcon(T *obj, const char *name) { + QIcon i = icon(name); + obj->setIcon(i); + obj->connect(qApp, &QGuiApplication::paletteChanged, obj, [obj, name] { + qDebug() << "Updating icon" << name; + QIcon i = icon(name); + obj->setIcon(i); + }); + } + static QIcon icon(const char *name); + static QIcon icon(const QVector &names); + + static QPixmap + iconPixmap(const char *name, int size, const QColor &background, const qreal pixelRatio); + + static QIcon tintedIcon(const char *name, const QColor &color, const QVector &sizes); + static QIcon tintedIcon(const char *name, const QColor &color, const QSize &size); + + // HiDPI stuff + static QPixmap pixmap(const char *name, const qreal pixelRatio); + static QPixmap pixmap(const QString &filename, const qreal pixelRatio); + + static void tint(QPixmap &pixmap, + const QColor &color, + QPainter::CompositionMode mode = QPainter::CompositionMode_SourceIn); private: - IconUtils() { } + IconUtils() {} static QImage grayscaled(const QImage &image); - static QImage tinted(const QImage &image, const QColor &color, + static QImage tinted(const QImage &image, + const QColor &color, QPainter::CompositionMode mode = QPainter::CompositionMode_Screen); };