diff --git a/src/plugins/qmldesigner/components/itemlibrary/customfilesystemmodel.cpp b/src/plugins/qmldesigner/components/itemlibrary/customfilesystemmodel.cpp index 1a1f7b1b941..dcf9acada99 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/customfilesystemmodel.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/customfilesystemmodel.cpp @@ -79,6 +79,11 @@ static const QStringList &supportedAudioSuffixes() return retList; } +static QPixmap defaultPixmapForType(const QString &type, const QSize &size) +{ + return QPixmap(QStringLiteral(":/ItemLibrary/images/asset_%1_%2.png").arg(type).arg(size.width())); +} + static QPixmap generateFontImage(const QFileInfo &info, const QSize &size) { static QHash fontImageCache; @@ -92,12 +97,12 @@ static QPixmap generateFontImage(const QFileInfo &info, const QSize &size) while (!done) { QRawFont font(file, pixelSize); if (!font.isValid()) - return pixmap; + break; QGlyphRun gr; gr.setRawFont(font); QVector indices = font.glyphIndexesForString("Abc"); if (indices.isEmpty()) - return pixmap; + break; const QVector advances = font.advancesForGlyphIndexes(indices); QVector positions; QPointF totalAdvance; @@ -110,7 +115,7 @@ static QPixmap generateFontImage(const QFileInfo &info, const QSize &size) gr.setPositions(positions); QRectF bounds = gr.boundingRect(); if (bounds.width() <= 0 || bounds.height() <= 0) - return pixmap; + break; bounds.moveCenter({size.width() / 2., size.height() / 2.}); @@ -132,6 +137,10 @@ static QPixmap generateFontImage(const QFileInfo &info, const QSize &size) painter.drawGlyphRun(bounds.bottomLeft(), gr); done = true; } + + if (!done) + pixmap = defaultPixmapForType("font", size); + fontImageCache[key] = pixmap; } return fontImageCache[key]; @@ -163,6 +172,10 @@ public: pixmap.load(info.absoluteFilePath()); else if (supportedFontSuffixes().contains(suffix)) pixmap = generateFontImage(info, iconSize); + else if (supportedAudioSuffixes().contains(suffix)) + pixmap = defaultPixmapForType("sound", iconSize); + else if (supportedShaderSuffixes().contains(suffix)) + pixmap = defaultPixmapForType("shader", iconSize); if (pixmap.isNull()) return QFileIconProvider::icon(info); @@ -176,8 +189,13 @@ public: return icon; } - // Generated icon sizes should match ItemLibraryResourceView needed icon sizes - QList iconSizes = {{192, 192}, {128, 128}, {96, 96}, {48, 48}, {32, 32}}; + // Generated icon sizes should contain all ItemLibraryResourceView needed icon sizes, and their + // x2 versions for HDPI sceens + QList iconSizes = {{384, 384}, {192, 192}, // Large + {256, 256}, {128, 128}, // Drag + {96, 96}, // Medium + {48, 48}, // Small + {64, 64}, {32, 32}}; // List }; diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/asset_font_128.png b/src/plugins/qmldesigner/components/itemlibrary/images/asset_font_128.png new file mode 100644 index 00000000000..44dd517b354 Binary files /dev/null and b/src/plugins/qmldesigner/components/itemlibrary/images/asset_font_128.png differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/asset_font_192.png b/src/plugins/qmldesigner/components/itemlibrary/images/asset_font_192.png new file mode 100644 index 00000000000..f6f394fdb08 Binary files /dev/null and b/src/plugins/qmldesigner/components/itemlibrary/images/asset_font_192.png differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/asset_font_256.png b/src/plugins/qmldesigner/components/itemlibrary/images/asset_font_256.png new file mode 100644 index 00000000000..2a830a216a5 Binary files /dev/null and b/src/plugins/qmldesigner/components/itemlibrary/images/asset_font_256.png differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/asset_font_32.png b/src/plugins/qmldesigner/components/itemlibrary/images/asset_font_32.png new file mode 100644 index 00000000000..d939fe85337 Binary files /dev/null and b/src/plugins/qmldesigner/components/itemlibrary/images/asset_font_32.png differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/asset_font_384.png b/src/plugins/qmldesigner/components/itemlibrary/images/asset_font_384.png new file mode 100644 index 00000000000..4cd1e731339 Binary files /dev/null and b/src/plugins/qmldesigner/components/itemlibrary/images/asset_font_384.png differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/asset_font_48.png b/src/plugins/qmldesigner/components/itemlibrary/images/asset_font_48.png new file mode 100644 index 00000000000..e8691a29761 Binary files /dev/null and b/src/plugins/qmldesigner/components/itemlibrary/images/asset_font_48.png differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/asset_font_64.png b/src/plugins/qmldesigner/components/itemlibrary/images/asset_font_64.png new file mode 100644 index 00000000000..e70c8d55d91 Binary files /dev/null and b/src/plugins/qmldesigner/components/itemlibrary/images/asset_font_64.png differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/asset_font_96.png b/src/plugins/qmldesigner/components/itemlibrary/images/asset_font_96.png new file mode 100644 index 00000000000..5e4c62b7985 Binary files /dev/null and b/src/plugins/qmldesigner/components/itemlibrary/images/asset_font_96.png differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/asset_shader_128.png b/src/plugins/qmldesigner/components/itemlibrary/images/asset_shader_128.png new file mode 100644 index 00000000000..506339350f5 Binary files /dev/null and b/src/plugins/qmldesigner/components/itemlibrary/images/asset_shader_128.png differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/asset_shader_192.png b/src/plugins/qmldesigner/components/itemlibrary/images/asset_shader_192.png new file mode 100644 index 00000000000..5f8ee5151d8 Binary files /dev/null and b/src/plugins/qmldesigner/components/itemlibrary/images/asset_shader_192.png differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/asset_shader_256.png b/src/plugins/qmldesigner/components/itemlibrary/images/asset_shader_256.png new file mode 100644 index 00000000000..c7e20e0c978 Binary files /dev/null and b/src/plugins/qmldesigner/components/itemlibrary/images/asset_shader_256.png differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/asset_shader_32.png b/src/plugins/qmldesigner/components/itemlibrary/images/asset_shader_32.png new file mode 100644 index 00000000000..1c256cca426 Binary files /dev/null and b/src/plugins/qmldesigner/components/itemlibrary/images/asset_shader_32.png differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/asset_shader_384.png b/src/plugins/qmldesigner/components/itemlibrary/images/asset_shader_384.png new file mode 100644 index 00000000000..8604a7f7b72 Binary files /dev/null and b/src/plugins/qmldesigner/components/itemlibrary/images/asset_shader_384.png differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/asset_shader_48.png b/src/plugins/qmldesigner/components/itemlibrary/images/asset_shader_48.png new file mode 100644 index 00000000000..e17bd4d264b Binary files /dev/null and b/src/plugins/qmldesigner/components/itemlibrary/images/asset_shader_48.png differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/asset_shader_64.png b/src/plugins/qmldesigner/components/itemlibrary/images/asset_shader_64.png new file mode 100644 index 00000000000..16023491cf5 Binary files /dev/null and b/src/plugins/qmldesigner/components/itemlibrary/images/asset_shader_64.png differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/asset_shader_96.png b/src/plugins/qmldesigner/components/itemlibrary/images/asset_shader_96.png new file mode 100644 index 00000000000..e8d80ff732d Binary files /dev/null and b/src/plugins/qmldesigner/components/itemlibrary/images/asset_shader_96.png differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/asset_sound_128.png b/src/plugins/qmldesigner/components/itemlibrary/images/asset_sound_128.png new file mode 100644 index 00000000000..1bd7dc32720 Binary files /dev/null and b/src/plugins/qmldesigner/components/itemlibrary/images/asset_sound_128.png differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/asset_sound_192.png b/src/plugins/qmldesigner/components/itemlibrary/images/asset_sound_192.png new file mode 100644 index 00000000000..8dd93eb33d5 Binary files /dev/null and b/src/plugins/qmldesigner/components/itemlibrary/images/asset_sound_192.png differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/asset_sound_256.png b/src/plugins/qmldesigner/components/itemlibrary/images/asset_sound_256.png new file mode 100644 index 00000000000..e73588220ff Binary files /dev/null and b/src/plugins/qmldesigner/components/itemlibrary/images/asset_sound_256.png differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/asset_sound_32.png b/src/plugins/qmldesigner/components/itemlibrary/images/asset_sound_32.png new file mode 100644 index 00000000000..c681c6d4dcf Binary files /dev/null and b/src/plugins/qmldesigner/components/itemlibrary/images/asset_sound_32.png differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/asset_sound_384.png b/src/plugins/qmldesigner/components/itemlibrary/images/asset_sound_384.png new file mode 100644 index 00000000000..571de696e31 Binary files /dev/null and b/src/plugins/qmldesigner/components/itemlibrary/images/asset_sound_384.png differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/asset_sound_48.png b/src/plugins/qmldesigner/components/itemlibrary/images/asset_sound_48.png new file mode 100644 index 00000000000..fbf50679c8b Binary files /dev/null and b/src/plugins/qmldesigner/components/itemlibrary/images/asset_sound_48.png differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/asset_sound_64.png b/src/plugins/qmldesigner/components/itemlibrary/images/asset_sound_64.png new file mode 100644 index 00000000000..21d15eee877 Binary files /dev/null and b/src/plugins/qmldesigner/components/itemlibrary/images/asset_sound_64.png differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/asset_sound_96.png b/src/plugins/qmldesigner/components/itemlibrary/images/asset_sound_96.png new file mode 100644 index 00000000000..1cf81471907 Binary files /dev/null and b/src/plugins/qmldesigner/components/itemlibrary/images/asset_sound_96.png differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.qrc b/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.qrc index 12600bf7eb8..aa1cc0b79d8 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.qrc +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.qrc @@ -5,5 +5,29 @@ images/item-default-icon@2x.png images/item-3D_model-icon.png images/item-3D_model-icon@2x.png + images/asset_font_32.png + images/asset_font_48.png + images/asset_font_64.png + images/asset_font_96.png + images/asset_font_128.png + images/asset_font_192.png + images/asset_font_256.png + images/asset_font_384.png + images/asset_shader_32.png + images/asset_shader_48.png + images/asset_shader_64.png + images/asset_shader_96.png + images/asset_shader_128.png + images/asset_shader_192.png + images/asset_shader_256.png + images/asset_shader_384.png + images/asset_sound_32.png + images/asset_sound_48.png + images/asset_sound_64.png + images/asset_sound_96.png + images/asset_sound_128.png + images/asset_sound_192.png + images/asset_sound_256.png + images/asset_sound_384.png