Warning, file /maui/mauikit-filebrowsing/src/code/thumbnailer.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 #include "thumbnailer.h"
0002 
0003 #ifdef KIO_AVAILABLE
0004 #include <KIO/PreviewJob>
0005 #endif
0006 
0007 #include <QDebug>
0008 #include <QImage>
0009 #include <QGuiApplication>
0010 
0011 QQuickImageResponse *Thumbnailer::requestImageResponse(const QString &id, const QSize &requestedSize)
0012 {
0013     AsyncImageResponse *response = new AsyncImageResponse(id, requestedSize);
0014     return response;
0015 }
0016 
0017 AsyncImageResponse::AsyncImageResponse(const QString &id, const QSize &requestedSize)
0018     : m_id(id)
0019     , m_requestedSize(requestedSize)
0020 {
0021 #ifdef KIO_AVAILABLE
0022     KIO::PreviewJob::setDefaultDevicePixelRatio(qApp->devicePixelRatio());
0023     QStringList plugins = KIO::PreviewJob::availablePlugins();
0024     //     qDebug() << plugins << KIO::PreviewJob::defaultPlugins();
0025     auto job = new KIO::PreviewJob(KFileItemList() << KFileItem(QUrl::fromUserInput(id)), requestedSize, &plugins);
0026 
0027     connect(job, &KIO::PreviewJob::gotPreview, [this](KFileItem, QPixmap pixmap) {
0028         m_image = pixmap.toImage();
0029         Q_EMIT this->finished();
0030     });
0031 
0032     connect(job, &KIO::PreviewJob::failed, [this](KFileItem) {
0033         m_error = QStringLiteral("Thumbnail Previewer job failed");
0034         this->cancel();
0035         Q_EMIT this->finished();
0036     });
0037 
0038     job->start();
0039 #endif
0040 }
0041 
0042 QQuickTextureFactory *AsyncImageResponse::textureFactory() const
0043 {
0044     return QQuickTextureFactory::textureFactoryForImage(m_image);
0045 }
0046 
0047 QString AsyncImageResponse::errorString() const
0048 {
0049     return m_error;
0050 }