File indexing completed on 2024-04-28 04:20:04

0001 /*
0002     SPDX-FileCopyrightText: 2022 Friedrich W. H. Kossebau <kossebau@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-or-later
0005 */
0006 
0007 #ifndef KODASKANNA_IMAGESOURCE_LOADIMAGEJOB_HPP
0008 #define KODASKANNA_IMAGESOURCE_LOADIMAGEJOB_HPP
0009 
0010 // KF
0011 #include <KJob>
0012 // Qt
0013 #include <QImage>
0014 #include <QObject>
0015 #include <QUrl>
0016 
0017 namespace KIO { class FileCopyJob; }
0018 class QTemporaryFile;
0019 
0020 namespace Kodaskanna
0021 {
0022 
0023 namespace ImageSource
0024 {
0025 
0026 class ImageReadResult;
0027 
0028 class LoadImageJob : public KJob
0029 {
0030     Q_OBJECT
0031 
0032 public:
0033     explicit LoadImageJob(const QUrl &fileUrl);
0034     ~LoadImageJob() override;
0035 
0036 public: // KJob API
0037     void start() override;
0038 
0039 public:
0040     QImage image() const;
0041 
0042 Q_SIGNALS:
0043     void loadFinished(const Kodaskanna::ImageSource::ImageReadResult &imageReadResult);
0044 
0045 private Q_SLOTS:
0046     void handleReadFinished(const ImageReadResult &imageReadResult);
0047     void handleFileCopyFinished(KJob *job);
0048 
0049 private:
0050     void startFileReading(const QString &localFileName);
0051 
0052 private:
0053     const QUrl m_fileUrl;
0054 
0055     QImage m_image;
0056 
0057     KIO::FileCopyJob* m_fileCopyJob = nullptr;
0058     QTemporaryFile *m_tmpFile = nullptr;
0059 };
0060 
0061 }
0062 }
0063 
0064 #endif