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 }