// SPDX-FileCopyrightText: 2018-2019 Black Hat // SPDX-FileCopyrightText: 2019 Kitsune Ral // SPDX-License-Identifier: GPL-3.0-only #pragma once #include #include #include namespace Quotient { class Connection; } class ThumbnailResponse : public QQuickImageResponse { Q_OBJECT public: ThumbnailResponse(QString mediaId, QSize requestedSize); ~ThumbnailResponse() override = default; private Q_SLOTS: void startRequest(); void prepareResult(); void doCancel(); private: const QString mediaId; QSize requestedSize; const QString localFile; Quotient::MediaThumbnailJob *job = nullptr; QImage image; QString errorStr; mutable QReadWriteLock lock; // Guards ONLY these two members above QQuickTextureFactory *textureFactory() const override; QString errorString() const override; void cancel() override; }; class MatrixImageProvider : public QQuickAsyncImageProvider { public: QQuickImageResponse *requestImageResponse(const QString &id, const QSize &requestedSize) override; };