diff --git a/src/desktopicon.h b/src/desktopicon.h --- a/src/desktopicon.h +++ b/src/desktopicon.h @@ -47,6 +47,7 @@ Q_PROPERTY(bool selected READ selected WRITE setSelected NOTIFY selectedChanged) Q_PROPERTY(bool isMask READ isMask WRITE setIsMask NOTIFY isMaskChanged) Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged) + Q_PROPERTY(QString fallback READ fallback WRITE setFallback NOTIFY fallbackChanged) public: DesktopIcon(QQuickItem *parent = nullptr); @@ -77,6 +78,9 @@ void setColor(const QColor &color); QColor color() const; + QString fallback() const; + void setFallback(const QString &fallback); + QSGNode* updatePaintNode(QSGNode* node, UpdatePaintNodeData* data) override; Q_SIGNALS: @@ -88,6 +92,7 @@ void selectedChanged(); void isMaskChanged(); void colorChanged(); + void fallbackChanged(const QString &fallback); protected: void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override; @@ -107,6 +112,7 @@ bool m_isMask; QImage m_loadedImage; QColor m_color = Qt::transparent; + QString m_fallback = QStringLiteral("unknown"); }; #endif diff --git a/src/desktopicon.cpp b/src/desktopicon.cpp --- a/src/desktopicon.cpp +++ b/src/desktopicon.cpp @@ -415,7 +415,7 @@ if (m_loadedImage.isNull()) { // broken image from data, inform the user of this with some useful broken-image thing... const QSize size = QSize(width(), height()) * (window() ? window()->devicePixelRatio() : qApp->devicePixelRatio()); - m_loadedImage = QIcon::fromTheme(QStringLiteral("unknown")).pixmap(size, iconMode(), QIcon::On).toImage(); + m_loadedImage = QIcon::fromTheme(m_fallback).pixmap(size, iconMode(), QIcon::On).toImage(); } m_changed = true; update(); @@ -525,3 +525,16 @@ } return QIcon::Normal; } + +QString DesktopIcon::fallback() const +{ + return m_fallback; +} + +void DesktopIcon::setFallback(const QString& fallback) +{ + if (m_fallback != fallback) { + m_fallback = fallback; + Q_EMIT fallbackChanged(fallback); + } +}