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