1 /* SPDX-FileCopyrightText: 2003-2010 Jesper K. Pedersen <blackie@kde.org> 2 3 SPDX-License-Identifier: GPL-2.0-or-later 4 */ 5 #ifndef IMPORTHANDLER_H 6 #define IMPORTHANDLER_H 7 8 #include "ImportSettings.h" 9 10 #include <DB/ImageInfoPtr.h> 11 12 #include <QEventLoop> 13 #include <QPointer> 14 15 namespace KIO 16 { 17 class FileCopyJob; 18 } 19 class KJob; 20 namespace Utilities 21 { 22 class UniqFilenameMapper; 23 } 24 class QProgressDialog; 25 26 namespace ImportExport 27 { 28 class KimFileReader; 29 30 /** 31 * This class contains the business logic for the import process 32 */ 33 class ImportHandler : public QObject 34 { 35 Q_OBJECT 36 37 public: 38 ImportHandler(); 39 ~ImportHandler() override; 40 bool exec(const ImportSettings &settings, KimFileReader *kimFileReader); 41 42 private: 43 void copyFromExternal(); 44 void copyNextFromExternal(); 45 bool copyFilesFromZipFile(); 46 void updateDB(); 47 48 private slots: 49 void stopCopyingImages(); 50 void aCopyFailed(QStringList files); 51 void aCopyJobCompleted(KJob *); 52 53 private: 54 bool isImageAlreadyInDB(const DB::ImageInfoPtr &info); 55 DB::ImageInfoPtr matchingInfoFromDB(const DB::ImageInfoPtr &info); 56 void updateInfo(DB::ImageInfoPtr dbInfo, DB::ImageInfoPtr newInfo); 57 void addNewRecord(DB::ImageInfoPtr newInfo); 58 void updateCategories(DB::ImageInfoPtr XMLInfo, DB::ImageInfoPtr DBInfo, bool forceReplace); 59 60 private: 61 Utilities::UniqFilenameMapper *m_fileMapper; 62 bool m_finishedPressed; 63 DB::ImageInfoList m_pendingCopies; 64 QProgressDialog *m_progress; 65 int m_totalCopied; 66 KIO::FileCopyJob *m_job; 67 bool m_reportUnreadableFiles; 68 QPointer<QEventLoop> m_eventLoop; 69 ImportSettings m_settings; 70 KimFileReader *m_kimFileReader; 71 }; 72 73 } 74 75 #endif /* IMPORTHANDLER_H */ 76 77 // vi:expandtab:tabstop=4 shiftwidth=4: 78