QQuickImageProvider for ForkAwesome 0.3.4
QQuickImageProvider for ForkAwesome
Loading...
Searching...
No Matches
imageprovider.cpp
Go to the documentation of this file.
1#include "./imageprovider.h"
2
3#include <qtforkawesome/renderer.h>
4#include <qtforkawesome/utils.h>
5
6#include <QGuiApplication>
7#include <QPalette>
8
9#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // could be QT_VERSION < QT_VERSION_CHECK(5, 15, 2)
10#define USE_COMPAT_SPLIT_REF
11#include <qtutilities/misc/compat.h>
12#endif
13
15namespace QtForkAwesome {
16
18 const Renderer &renderer, const QColor &defaultColor, const QSize &defaultSize, QQuickImageProvider::ImageType type)
19 : QQuickImageProvider(type)
20 , m_renderer(renderer)
21 , m_defaultColor(defaultColor)
22 , m_defaultSize(defaultSize)
23{
24}
25
26QPixmap QuickImageProvider::requestPixmap(const QString &id, QSize *size, const QSize &requestedSize)
27{
28#ifndef USE_COMPAT_SPLIT_REF
29 const auto parts = QStringView(id).split(QChar(':'));
30#else
31 const auto parts = QtUtilities::splitRef(id, QChar(':'));
32#endif
33 if (parts.empty()) {
34 return QPixmap();
35 }
36#ifndef USE_COMPAT_SPLIT_REF
37 const auto icon = iconFromId(parts.front());
38#else
39 const auto icon = iconFromId(parts.front().toString());
40#endif
41 if (!isIconValid(icon)) {
42 return QPixmap();
43 }
44 auto color = m_defaultColor;
45 if (parts.size() > 1) {
46#ifndef USE_COMPAT_SPLIT_REF
47 if (const auto specifiedColor = QColor(parts.at(1)); specifiedColor.isValid()) {
48#else
49 if (const auto specifiedColor = QColor(parts.at(1).toString()); specifiedColor.isValid()) {
50#endif
51 color = specifiedColor;
52 }
53 }
54 if (!color.isValid()) {
55 color = QGuiApplication::palette().color(QPalette::Normal, QPalette::Text);
56 }
57 const auto renderSize = requestedSize.isValid() ? requestedSize : m_defaultSize;
58 const auto scaleFactor = requestedSize.isValid() ? 1.0 : 0.0;
59 if (size) {
60 *size = renderSize;
61 }
62 return m_renderer.pixmap(icon, renderSize, color, scaleFactor);
63}
64
65QImage QuickImageProvider::requestImage(const QString &id, QSize *size, const QSize &requestedSize)
66{
67 return requestPixmap(id, size, requestedSize).toImage();
68}
69
70} // namespace QtForkAwesome
QuickImageProvider(const Renderer &renderer, const QColor &defaultColor=QColor(), const QSize &defaultSize=QSize(64, 64), QQuickImageProvider::ImageType type=QQuickImageProvider::Pixmap)
QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize) override
QImage requestImage(const QString &id, QSize *size, const QSize &requestedSize) override
Contains classes provided by the QtForkAwesome library.