aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/utils/stylehelper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/utils/stylehelper.cpp')
-rw-r--r--src/libs/utils/stylehelper.cpp48
1 files changed, 47 insertions, 1 deletions
diff --git a/src/libs/utils/stylehelper.cpp b/src/libs/utils/stylehelper.cpp
index f91c24b52a..6f8868cc7b 100644
--- a/src/libs/utils/stylehelper.cpp
+++ b/src/libs/utils/stylehelper.cpp
@@ -28,6 +28,8 @@
#include "theme/theme.h"
#include "hostosinfo.h"
+#include <utils/qtcassert.h>
+
#include <QPixmapCache>
#include <QPainter>
#include <QApplication>
@@ -35,6 +37,7 @@
#include <QCommonStyle>
#include <QStyleOption>
#include <QWindow>
+#include <QFontDatabase>
#include <qmath.h>
// Clamps float color values within (0, 255)
@@ -184,7 +187,8 @@ void StyleHelper::setBaseColor(const QColor &newcolor)
if (color.isValid() && color != m_baseColor) {
m_baseColor = color;
- foreach (QWidget *w, QApplication::topLevelWidgets())
+ const QList<QWidget *> widgets = QApplication::topLevelWidgets();
+ for (QWidget *w : widgets)
w->update();
}
}
@@ -542,6 +546,48 @@ QLinearGradient StyleHelper::statusBarGradient(const QRect &statusBarRect)
return grad;
}
+QIcon StyleHelper::getIconFromIconFont(const QString &fontName, const QString &iconSymbol, int fontSize, int iconSize, QColor color)
+{
+ QFontDatabase a;
+
+ QTC_ASSERT(a.hasFamily(fontName), {});
+
+ if (a.hasFamily(fontName)) {
+
+ QIcon icon;
+ QSize size(iconSize, iconSize);
+
+ const int maxDpr = qRound(qApp->devicePixelRatio());
+ for (int dpr = 1; dpr <= maxDpr; dpr++) {
+ QPixmap pixmap(size * dpr);
+ pixmap.setDevicePixelRatio(dpr);
+ pixmap.fill(Qt::transparent);
+
+ QFont font(fontName);
+ font.setPixelSize(fontSize);
+
+ QPainter painter(&pixmap);
+ painter.save();
+ painter.setPen(color);
+ painter.setFont(font);
+ painter.drawText(QRectF(QPoint(0, 0), size), iconSymbol);
+ painter.restore();
+
+ icon.addPixmap(pixmap);
+ }
+
+ return icon;
+ }
+
+ return {};
+}
+
+QIcon StyleHelper::getIconFromIconFont(const QString &fontName, const QString &iconSymbol, int fontSize, int iconSize)
+{
+ QColor penColor = QApplication::palette("QWidget").color(QPalette::Normal, QPalette::ButtonText);
+ return getIconFromIconFont(fontName, iconSymbol, fontSize, iconSize, penColor);
+}
+
QString StyleHelper::dpiSpecificImageFile(const QString &fileName)
{
// See QIcon::addFile()