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