summaryrefslogtreecommitdiff
path: root/src/plugins/qmldesigner/designercore/imagecache/explicitimagecacheimageprovider.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qmldesigner/designercore/imagecache/explicitimagecacheimageprovider.cpp')
-rw-r--r--src/plugins/qmldesigner/designercore/imagecache/explicitimagecacheimageprovider.cpp45
1 files changed, 11 insertions, 34 deletions
diff --git a/src/plugins/qmldesigner/designercore/imagecache/explicitimagecacheimageprovider.cpp b/src/plugins/qmldesigner/designercore/imagecache/explicitimagecacheimageprovider.cpp
index a1bd876cfd..1f28d4eca6 100644
--- a/src/plugins/qmldesigner/designercore/imagecache/explicitimagecacheimageprovider.cpp
+++ b/src/plugins/qmldesigner/designercore/imagecache/explicitimagecacheimageprovider.cpp
@@ -2,51 +2,23 @@
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "explicitimagecacheimageprovider.h"
+#include "imagecacheimageresponse.h"
#include <asynchronousexplicitimagecache.h>
#include <QMetaObject>
#include <QQuickImageResponse>
-namespace {
-
-class ImageResponse : public QQuickImageResponse
-{
-public:
- ImageResponse(const QImage &defaultImage)
- : m_image(defaultImage)
- {}
-
- QQuickTextureFactory *textureFactory() const override
- {
- return QQuickTextureFactory::textureFactoryForImage(m_image);
- }
-
- void setImage(const QImage &image)
- {
- m_image = image;
-
- emit finished();
- }
-
- void abort() { emit finished(); }
-
-private:
- QImage m_image;
-};
-
-} // namespace
-
namespace QmlDesigner {
QQuickImageResponse *ExplicitImageCacheImageProvider::requestImageResponse(const QString &id,
const QSize &)
{
- auto response = std::make_unique<::ImageResponse>(m_defaultImage);
+ auto response = std::make_unique<ImageCacheImageResponse>(m_defaultImage);
m_cache.requestImage(
id,
- [response = QPointer<::ImageResponse>(response.get())](const QImage &image) {
+ [response = QPointer<ImageCacheImageResponse>(response.get())](const QImage &image) {
QMetaObject::invokeMethod(
response,
[response, image] {
@@ -55,15 +27,20 @@ QQuickImageResponse *ExplicitImageCacheImageProvider::requestImageResponse(const
},
Qt::QueuedConnection);
},
- [response = QPointer<::ImageResponse>(response.get())](ImageCache::AbortReason abortReason) {
+ [response = QPointer<ImageCacheImageResponse>(response.get()),
+ failedImage = m_failedImage](ImageCache::AbortReason abortReason) {
QMetaObject::invokeMethod(
response,
- [response, abortReason] {
+ [response, abortReason, failedImage] {
switch (abortReason) {
- case ImageCache::AbortReason::Failed:
+ case ImageCache::AbortReason::NoEntry:
if (response)
response->abort();
break;
+ case ImageCache::AbortReason::Failed:
+ if (response)
+ response->setImage(failedImage);
+ break;
case ImageCache::AbortReason::Abort:
response->cancel();
break;