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: