File indexing completed on 2024-05-05 04:22:02
0001 // SPDX-FileCopyrightText: 2003-2022 Jesper K. Pedersen <blackie@kde.org> 0002 // 0003 // SPDX-License-Identifier: GPL-2.0-or-later 0004 0005 #ifndef IMPORTHANDLER_H 0006 #define IMPORTHANDLER_H 0007 0008 #include "ImportSettings.h" 0009 0010 #include <DB/ImageInfoPtr.h> 0011 0012 #include <QEventLoop> 0013 #include <QPointer> 0014 0015 namespace KIO 0016 { 0017 class FileCopyJob; 0018 } 0019 class KJob; 0020 namespace Utilities 0021 { 0022 class UniqFilenameMapper; 0023 } 0024 class QProgressDialog; 0025 0026 namespace ImportExport 0027 { 0028 class KimFileReader; 0029 0030 /** 0031 * This class contains the business logic for the import process 0032 */ 0033 class ImportHandler : public QObject 0034 { 0035 Q_OBJECT 0036 0037 public: 0038 ImportHandler(); 0039 ~ImportHandler() override; 0040 bool exec(const ImportSettings &settings, KimFileReader *kimFileReader); 0041 0042 private: 0043 void copyFromExternal(); 0044 void copyNextFromExternal(); 0045 bool copyFilesFromZipFile(); 0046 void updateDB(); 0047 0048 private Q_SLOTS: 0049 void stopCopyingImages(); 0050 void aCopyFailed(QStringList files); 0051 void aCopyJobCompleted(KJob *); 0052 0053 private: 0054 bool isImageAlreadyInDB(const DB::ImageInfoPtr &info); 0055 DB::ImageInfoPtr matchingInfoFromDB(const DB::ImageInfoPtr &info); 0056 void updateInfo(DB::ImageInfoPtr dbInfo, DB::ImageInfoPtr newInfo); 0057 void addNewRecord(DB::ImageInfoPtr newInfo); 0058 void updateCategories(DB::ImageInfoPtr XMLInfo, DB::ImageInfoPtr DBInfo, bool forceReplace); 0059 0060 private: 0061 Utilities::UniqFilenameMapper *m_fileMapper; 0062 bool m_finishedPressed; 0063 DB::ImageInfoList m_pendingCopies; 0064 QProgressDialog *m_progress; 0065 int m_totalCopied; 0066 KIO::FileCopyJob *m_job; 0067 bool m_reportUnreadableFiles; 0068 QPointer<QEventLoop> m_eventLoop; 0069 ImportSettings m_settings; 0070 KimFileReader *m_kimFileReader; 0071 }; 0072 0073 } 0074 0075 #endif /* IMPORTHANDLER_H */ 0076 0077 // vi:expandtab:tabstop=4 shiftwidth=4: